/*
* Mobicents, Communications Middleware
*
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Middleware LLC.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
*
* Boston, MA 02110-1301 USA
*/
package org.mobicents.slee.resources.diameter.tests.factories;
import static org.jdiameter.client.impl.helpers.Parameters.AcctApplId;
import static org.jdiameter.client.impl.helpers.Parameters.ApplicationId;
import static org.jdiameter.client.impl.helpers.Parameters.Assembler;
import static org.jdiameter.client.impl.helpers.Parameters.AuthApplId;
import static org.jdiameter.client.impl.helpers.Parameters.OwnDiameterURI;
import static org.jdiameter.client.impl.helpers.Parameters.OwnRealm;
import static org.jdiameter.client.impl.helpers.Parameters.OwnVendorID;
import static org.jdiameter.client.impl.helpers.Parameters.PeerName;
import static org.jdiameter.client.impl.helpers.Parameters.PeerRating;
import static org.jdiameter.client.impl.helpers.Parameters.PeerTable;
import static org.jdiameter.client.impl.helpers.Parameters.RealmEntry;
import static org.jdiameter.client.impl.helpers.Parameters.RealmTable;
import static org.jdiameter.client.impl.helpers.Parameters.VendorId;
import static org.junit.Assert.*;
import net.java.slee.resource.diameter.cca.events.CreditControlAnswer;
import net.java.slee.resource.diameter.cca.events.CreditControlRequest;
import net.java.slee.resource.diameter.cca.events.avp.CcMoneyAvp;
import net.java.slee.resource.diameter.cca.events.avp.CcUnitType;
import net.java.slee.resource.diameter.cca.events.avp.CostInformationAvp;
import net.java.slee.resource.diameter.cca.events.avp.FinalUnitActionType;
import net.java.slee.resource.diameter.cca.events.avp.FinalUnitIndicationAvp;
import net.java.slee.resource.diameter.cca.events.avp.GSUPoolReferenceAvp;
import net.java.slee.resource.diameter.cca.events.avp.GrantedServiceUnitAvp;
import net.java.slee.resource.diameter.cca.events.avp.MultipleServicesCreditControlAvp;
import net.java.slee.resource.diameter.cca.events.avp.RedirectAddressType;
import net.java.slee.resource.diameter.cca.events.avp.RedirectServerAvp;
import net.java.slee.resource.diameter.cca.events.avp.RequestedServiceUnitAvp;
import net.java.slee.resource.diameter.cca.events.avp.ServiceParameterInfoAvp;
import net.java.slee.resource.diameter.cca.events.avp.SubscriptionIdAvp;
import net.java.slee.resource.diameter.cca.events.avp.SubscriptionIdType;
import net.java.slee.resource.diameter.cca.events.avp.UnitValueAvp;
import net.java.slee.resource.diameter.cca.events.avp.UsedServiceUnitAvp;
import net.java.slee.resource.diameter.cca.events.avp.UserEquipmentInfoAvp;
import net.java.slee.resource.diameter.cca.events.avp.UserEquipmentInfoType;
import org.jdiameter.api.Stack;
import org.jdiameter.client.impl.helpers.EmptyConfiguration;
import org.junit.Assert;
import org.junit.Test;
import org.mobicents.diameter.dictionary.AvpDictionary;
import org.mobicents.slee.resource.diameter.base.DiameterAvpFactoryImpl;
import org.mobicents.slee.resource.diameter.base.DiameterMessageFactoryImpl;
import org.mobicents.slee.resource.diameter.cca.CreditControlAVPFactoryImpl;
import org.mobicents.slee.resource.diameter.cca.CreditControlMessageFactoryImpl;
/**
*
* CCAFactoriesTest.java
*
* <br>Project: mobicents
* <br>2:42:08 PM Feb 27, 2009
* <br>
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
* @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a>
*/
public class CCAFactoriesTest {
private static String clientHost = "127.0.0.1";
private static String clientPort = "21812";
private static String clientURI = "aaa://" + clientHost + ":" + clientPort;
private static String serverHost = "localhost";
private static String serverPort = "1812";
private static String serverURI = "aaa://" + serverHost + ":" + serverPort;
private static String realmName = "mobicents.org";
private static CreditControlMessageFactoryImpl ccaMessageFactory;
private static CreditControlAVPFactoryImpl ccaAvpFactory;
static
{
Stack stack = new org.jdiameter.client.impl.StackImpl();
try
{
stack.init(new MyConfiguration());
}
catch ( Exception e ) {
throw new RuntimeException("Failed to initialize the stack.");
}
DiameterMessageFactoryImpl baseFactory = new DiameterMessageFactoryImpl(stack);
DiameterAvpFactoryImpl baseAvpFactory = new DiameterAvpFactoryImpl();
ccaAvpFactory = new CreditControlAVPFactoryImpl(baseAvpFactory);
try
{
ccaMessageFactory = new CreditControlMessageFactoryImpl(baseFactory, stack.getSessionFactory().getNewSession(), stack, ccaAvpFactory);
}
catch ( Exception e ) {
e.printStackTrace();
}
try
{
AvpDictionary.INSTANCE.parseDictionary( CCAFactoriesTest.class.getClassLoader().getResourceAsStream( "dictionary.xml" ) );
}
catch ( Exception e ) {
throw new RuntimeException("Failed to parse dictionary file.");
}
}
@Test
public void isRequestCCR() throws Exception
{
CreditControlRequest ccr = ccaMessageFactory.createCreditControlRequest();
assertTrue("Request Flag in Credit-Control-Request is not set.", ccr.getHeader().isRequest());
}
@Test
public void testGettersAndSettersCCR() throws Exception
{
CreditControlRequest ccr = ccaMessageFactory.createCreditControlRequest();
int nFailures = AvpAssistant.testMethods(ccr, CreditControlRequest.class);
assertTrue("Some methods have failed. See logs for more details.", nFailures == 0);
}
@Test
public void isAnswerCCA() throws Exception
{
CreditControlRequest ccr = ccaMessageFactory.createCreditControlRequest();
CreditControlAnswer cca = ccaMessageFactory.createCreditControlAnswer(ccr);
assertFalse("Request Flag in Credit-Control-Answer is set.", cca.getHeader().isRequest());
}
@Test
public void testGettersAndSettersCCA() throws Exception
{
CreditControlAnswer cca = ccaMessageFactory.createCreditControlAnswer(ccaMessageFactory.createCreditControlRequest("582364567346578348"));
int nFailures = AvpAssistant.testMethods(cca, CreditControlAnswer.class);
assertTrue("Some methods have failed. See logs for more details.", nFailures == 0);
}
@Test
public void hasDestinationHostCCA() throws Exception
{
CreditControlAnswer cca = ccaMessageFactory.createCreditControlAnswer(ccaMessageFactory.createCreditControlRequest("582364567346578348"));
assertNull("The Destination-Host and Destination-Realm AVPs MUST NOT be present in the answer message. [RFC3588/6.2]", cca.getDestinationHost());
}
@Test
public void hasDestinationRealmCCA() throws Exception
{
CreditControlAnswer cca = ccaMessageFactory.createCreditControlAnswer(ccaMessageFactory.createCreditControlRequest("582364567346578348"));
assertNull("The Destination-Host and Destination-Realm AVPs MUST NOT be present in the answer message. [RFC3588/6.2]", cca.getDestinationRealm());
}
@Test
public void testAvpFactoryCreateCcMoney() throws Exception
{
String avpName = "CC-Money";
// Create AVP with mandatory values
CcMoneyAvp ccmAvp1 = ccaAvpFactory.createCcMoney(ccaAvpFactory.createUnitValue(12345L));
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", ccmAvp1);
// Create AVP with default constructor
CcMoneyAvp ccmAvp2 = ccaAvpFactory.createCcMoney();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Unit-Value AVP.", ccmAvp2.hasUnitValue());
// Set mandatory values
ccmAvp2.setUnitValue(ccaAvpFactory.createUnitValue(12345L));
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", ccmAvp1, ccmAvp2);
// Make new copy
ccmAvp2 = ccaAvpFactory.createCcMoney();
// And set all values using setters
AvpAssistant.testSetters(ccmAvp2);
// Create empty...
CcMoneyAvp ccmAvp3 = ccaAvpFactory.createCcMoney();
// Verify that no values have been set
AvpAssistant.testHassers(ccmAvp3, false);
// Set all previous values
ccmAvp3.setExtensionAvps(ccmAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(ccmAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(ccmAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", ccmAvp2, ccmAvp3);
}
@Test
public void testAvpFactoryCreateCostInformation() throws Exception
{
String avpName = "Cost-Information";
// Create AVP with mandatory values
CostInformationAvp ciAvp1 = ccaAvpFactory.createCostInformation(ccaAvpFactory.createUnitValue(12345L), 3L);
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", ciAvp1);
// Create AVP with default constructor
CostInformationAvp ciAvp2 = ccaAvpFactory.createCostInformation();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Unit-Value AVP.", ciAvp2.hasUnitValue());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Currency-Code AVP.", ciAvp2.hasCurrencyCode());
// Set mandatory values
ciAvp2.setUnitValue(ccaAvpFactory.createUnitValue(12345L));
ciAvp2.setCurrencyCode(3L);
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", ciAvp1, ciAvp2);
// Make new copy
ciAvp2 = ccaAvpFactory.createCostInformation();
// And set all values using setters
AvpAssistant.testSetters(ciAvp2);
// Create empty...
CostInformationAvp ciAvp3 = ccaAvpFactory.createCostInformation();
// Verify that no values have been set
AvpAssistant.testHassers(ciAvp3, false);
// Set all previous values
ciAvp3.setExtensionAvps(ciAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(ciAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(ciAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", ciAvp2, ciAvp3);
}
@Test
public void testAvpFactoryCreateFinalUnitIndication() throws Exception
{
String avpName = "Final-Unit-Indication";
// Create AVP with mandatory values
FinalUnitIndicationAvp fuiAvp1 = ccaAvpFactory.createFinalUnitIndication(FinalUnitActionType.RESTRICT_ACCESS);
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", fuiAvp1);
// Create AVP with default constructor
FinalUnitIndicationAvp fuiAvp2 = ccaAvpFactory.createFinalUnitIndication();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Final-Unit-Action AVP.", fuiAvp2.hasFinalUnitAction());
// Set mandatory values
fuiAvp2.setFinalUnitAction(FinalUnitActionType.RESTRICT_ACCESS);
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", fuiAvp1, fuiAvp2);
// Make new copy
fuiAvp2 = ccaAvpFactory.createFinalUnitIndication();
// And set all values using setters
AvpAssistant.testSetters(fuiAvp2);
// Create empty...
FinalUnitIndicationAvp fuiAvp3 = ccaAvpFactory.createFinalUnitIndication();
// Verify that no values have been set
AvpAssistant.testHassers(fuiAvp3, false);
// Set all previous values
fuiAvp3.setExtensionAvps(fuiAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(fuiAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(fuiAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", fuiAvp2, fuiAvp3);
}
@Test
public void testAvpFactoryCreateGSUPoolReference() throws Exception
{
String avpName = "G-S-U-Pool-Reference";
// Create AVP with mandatory values
GSUPoolReferenceAvp gsuprAvp1 = ccaAvpFactory.createGSUPoolReference( 12345L, CcUnitType.TIME, ccaAvpFactory.createUnitValue(67890L) );
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", gsuprAvp1);
// Create AVP with default constructor
GSUPoolReferenceAvp gsuprAvp2 = ccaAvpFactory.createGSUPoolReference();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have G-S-U-Pool-Identifier AVP.", gsuprAvp2.hasGSUPoolIdentifier());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have CC-Unit-Type AVP.", gsuprAvp2.hasCreditControlUnitType());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Unit-Value AVP.", gsuprAvp2.hasUnitValue());
// Set mandatory values
gsuprAvp2.setGSUPoolIdentifier(12345L);
gsuprAvp2.setCreditControlUnitType(CcUnitType.TIME);
gsuprAvp2.setUnitValue(ccaAvpFactory.createUnitValue(67890L));
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", gsuprAvp1, gsuprAvp2);
// Make new copy
gsuprAvp2 = ccaAvpFactory.createGSUPoolReference();
// And set all values using setters
AvpAssistant.testSetters(gsuprAvp2);
// Create empty...
GSUPoolReferenceAvp gsuprAvp3 = ccaAvpFactory.createGSUPoolReference();
// Verify that no values have been set
AvpAssistant.testHassers(gsuprAvp3, false);
// Set all previous values
gsuprAvp3.setExtensionAvps(gsuprAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(gsuprAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(gsuprAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", gsuprAvp2, gsuprAvp3);
}
@Test
public void testAvpFactoryCreateGrantedServiceUnit() throws Exception
{
String avpName = "Granted-Service-Unit";
// Create AVP with mandatory values
GrantedServiceUnitAvp gsuAvp1 = ccaAvpFactory.createGrantedServiceUnit();
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", gsuAvp1);
// Create AVP with default constructor
GrantedServiceUnitAvp gsuAvp2 = ccaAvpFactory.createGrantedServiceUnit();
// Should not contain mandatory values
// Set mandatory values
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", gsuAvp1, gsuAvp2);
// Make new copy
gsuAvp2 = ccaAvpFactory.createGrantedServiceUnit();
// And set all values using setters
AvpAssistant.testSetters(gsuAvp2);
// Create empty...
GrantedServiceUnitAvp gsuAvp3 = ccaAvpFactory.createGrantedServiceUnit();
// Verify that no values have been set
AvpAssistant.testHassers(gsuAvp3, false);
// Set all previous values
gsuAvp3.setExtensionAvps(gsuAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(gsuAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(gsuAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", gsuAvp2, gsuAvp3);
}
@Test
public void testAvpFactoryCreateMultipleServicesCreditControl() throws Exception
{
String avpName = "Multiple-Services-Credit-Control";
// Create AVP with mandatory values
MultipleServicesCreditControlAvp msccAvp1 = ccaAvpFactory.createMultipleServicesCreditControl();
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", msccAvp1);
// Create AVP with default constructor
MultipleServicesCreditControlAvp msccAvp2 = ccaAvpFactory.createMultipleServicesCreditControl();
// Should not contain mandatory values
// Set mandatory values
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", msccAvp1, msccAvp2);
// Make new copy
msccAvp2 = ccaAvpFactory.createMultipleServicesCreditControl();
// And set all values using setters
AvpAssistant.testSetters(msccAvp2);
// Create empty...
MultipleServicesCreditControlAvp msccAvp3 = ccaAvpFactory.createMultipleServicesCreditControl();
// Verify that no values have been set
AvpAssistant.testHassers(msccAvp3, false);
// Set all previous values
msccAvp3.setExtensionAvps(msccAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(msccAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(msccAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", msccAvp2, msccAvp3);
}
@Test
public void testAvpFactoryCreateRedirectServer() throws Exception
{
String avpName = "Redirect-Server";
// Create AVP with mandatory values
RedirectServerAvp rsAvp1 = ccaAvpFactory.createRedirectServer(RedirectAddressType.IPv4_Address, "127.0.0.3");
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", rsAvp1);
// Create AVP with default constructor
RedirectServerAvp rsAvp2 = ccaAvpFactory.createRedirectServer();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Redirect-Address-Type AVP.", rsAvp2.hasRedirectAddressType());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Redirect-Server-Address AVP.", rsAvp2.hasRedirectServerAddress());
// Set mandatory values
rsAvp2.setRedirectAddressType(RedirectAddressType.IPv4_Address);
rsAvp2.setRedirectServerAddress("127.0.0.3");
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", rsAvp1, rsAvp2);
// Make new copy
rsAvp2 = ccaAvpFactory.createRedirectServer();
// And set all values using setters
AvpAssistant.testSetters(rsAvp2);
// Create empty...
RedirectServerAvp rsAvp3 = ccaAvpFactory.createRedirectServer();
// Verify that no values have been set
AvpAssistant.testHassers(rsAvp3, false);
// Set all previous values
rsAvp3.setExtensionAvps(rsAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(rsAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(rsAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", rsAvp2, rsAvp3);
}
@Test
public void testAvpFactoryCreateRequestedServiceUnit() throws Exception
{
String avpName = "Requested-Service-Unit";
// Create AVP with mandatory values
RequestedServiceUnitAvp rsuAvp1 = ccaAvpFactory.createRequestedServiceUnit();
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", rsuAvp1);
// Create AVP with default constructor
RequestedServiceUnitAvp rsuAvp2 = ccaAvpFactory.createRequestedServiceUnit();
// Should not contain mandatory values
// Set mandatory values
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", rsuAvp1, rsuAvp2);
// Make new copy
rsuAvp2 = ccaAvpFactory.createRequestedServiceUnit();
// And set all values using setters
AvpAssistant.testSetters(rsuAvp2);
// Create empty...
RequestedServiceUnitAvp rsuAvp3 = ccaAvpFactory.createRequestedServiceUnit();
// Verify that no values have been set
AvpAssistant.testHassers(rsuAvp3, false);
// Set all previous values
rsuAvp3.setExtensionAvps(rsuAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(rsuAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(rsuAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", rsuAvp2, rsuAvp3);
}
@Test
public void testAvpFactoryCreateServiceParameterInfo() throws Exception
{
String avpName = "Service-Parameter-Info";
// Create AVP with mandatory values
ServiceParameterInfoAvp spiAvp1 = ccaAvpFactory.createServiceParameterInfo(55555L, "mobicents diameter".getBytes());
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", spiAvp1);
// Create AVP with default constructor
ServiceParameterInfoAvp spiAvp2 = ccaAvpFactory.createServiceParameterInfo();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Service-Parameter-Type AVP.", spiAvp2.hasServiceParameterType());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Service-Parameter-Value AVP.", spiAvp2.hasServiceParameterValue());
// Set mandatory values
spiAvp2.setServiceParameterType(55555L);
spiAvp2.setServiceParameterValue("mobicents diameter".getBytes());
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", spiAvp1, spiAvp2);
// Make new copy
spiAvp2 = ccaAvpFactory.createServiceParameterInfo();
// And set all values using setters
AvpAssistant.testSetters(spiAvp2);
// Create empty...
ServiceParameterInfoAvp spiAvp3 = ccaAvpFactory.createServiceParameterInfo();
// Verify that no values have been set
AvpAssistant.testHassers(spiAvp3, false);
// Set all previous values
spiAvp3.setExtensionAvps(spiAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(spiAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(spiAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", spiAvp2, spiAvp3);
}
@Test
public void testAvpFactoryCreateSubscriptionId() throws Exception
{
String avpName = "Subscription-Id";
// Create AVP with mandatory values
SubscriptionIdAvp sidAvp1 = ccaAvpFactory.createSubscriptionId(SubscriptionIdType.END_USER_SIP_URI, "sip:alexandre@mobicents.org");
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", sidAvp1);
// Create AVP with default constructor
SubscriptionIdAvp sidAvp2 = ccaAvpFactory.createSubscriptionId();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Subscription-Id-Type AVP.", sidAvp2.hasSubscriptionIdType());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Subscription-Id-Data AVP.", sidAvp2.hasSubscriptionIdData());
// Set mandatory values
sidAvp2.setSubscriptionIdType(SubscriptionIdType.END_USER_SIP_URI);
sidAvp2.setSubscriptionIdData("sip:alexandre@mobicents.org");
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", sidAvp1, sidAvp2);
// Make new copy
sidAvp2 = ccaAvpFactory.createSubscriptionId();
// And set all values using setters
AvpAssistant.testSetters(sidAvp2);
// Create empty...
SubscriptionIdAvp sidAvp3 = ccaAvpFactory.createSubscriptionId();
// Verify that no values have been set
AvpAssistant.testHassers(sidAvp3, false);
// Set all previous values
sidAvp3.setExtensionAvps(sidAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(sidAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(sidAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", sidAvp2, sidAvp3);
}
@Test
public void testAvpFactoryCreateUnitValue() throws Exception
{
String avpName = "Unit-Value";
// Create AVP with mandatory values
UnitValueAvp uvAvp1 = ccaAvpFactory.createUnitValue(19191L);
// Make sure it's not null
Assert.assertNotNull("Created Unit-Value AVP from objects should not be null.", uvAvp1);
// Create AVP with default constructor
UnitValueAvp uvAvp2 = ccaAvpFactory.createUnitValue();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have Value-Digits AVP.", uvAvp2.hasValueDigits());
// Set mandatory values
uvAvp2.setValueDigits(19191L);
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", uvAvp1, uvAvp2);
// Make new copy
uvAvp2 = ccaAvpFactory.createUnitValue();
// And set all values using setters
AvpAssistant.testSetters(uvAvp2);
// Create empty...
UnitValueAvp uvAvp3 = ccaAvpFactory.createUnitValue();
// Verify that no values have been set
AvpAssistant.testHassers(uvAvp3, false);
// Set all previous values
uvAvp3.setExtensionAvps(uvAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(uvAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(uvAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", uvAvp2, uvAvp3);
}
@Test
public void testAvpFactoryCreateUsedServiceUnit() throws Exception
{
String avpName = "Used-Service-Unit";
// Create AVP with mandatory values
UsedServiceUnitAvp usuAvp1 = ccaAvpFactory.createUsedServiceUnit();
// Make sure it's not null
Assert.assertNotNull("Created Unit-Value AVP from objects should not be null.", usuAvp1);
// Create AVP with default constructor
UsedServiceUnitAvp usuAvp2 = ccaAvpFactory.createUsedServiceUnit();
// Should not contain mandatory values
// Set mandatory values
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", usuAvp1, usuAvp2);
// Make new copy
usuAvp2 = ccaAvpFactory.createUsedServiceUnit();
// And set all values using setters
AvpAssistant.testSetters(usuAvp2);
// Create empty...
UsedServiceUnitAvp usuAvp3 = ccaAvpFactory.createUsedServiceUnit();
// Verify that no values have been set
AvpAssistant.testHassers(usuAvp3, false);
// Set all previous values
usuAvp3.setExtensionAvps(usuAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(usuAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(usuAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", usuAvp2, usuAvp3);
}
@Test
public void testAvpFactoryCreateUserEquipmentInfo() throws Exception
{
String avpName = "User-Equipment-Info";
// Create AVP with mandatory values
UserEquipmentInfoAvp ueiAvp1 = ccaAvpFactory.createUserEquipmentInfo(UserEquipmentInfoType.MAC, "00:11:22:33:44:55".getBytes());
// Make sure it's not null
Assert.assertNotNull("Created " + avpName + " AVP from objects should not be null.", ueiAvp1);
// Create AVP with default constructor
UserEquipmentInfoAvp ueiAvp2 = ccaAvpFactory.createUserEquipmentInfo();
// Should not contain mandatory values
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have User-Equipment-Info-Type AVP.", ueiAvp2.hasUserEquipmentInfoType());
Assert.assertFalse("Created " + avpName + " AVP from default constructor should not have User-Equipment-Info-Value AVP.", ueiAvp2.hasUserEquipmentInfoValue());
// Set mandatory values
ueiAvp2.setUserEquipmentInfoType(UserEquipmentInfoType.MAC);
ueiAvp2.setUserEquipmentInfoValue("00:11:22:33:44:55".getBytes());
// Make sure it's equal to the one created with mandatory values constructor
Assert.assertEquals("Created " + avpName + " AVP from default constructor + set<Mandatory-AVPs> should be equal to original.", ueiAvp1, ueiAvp2);
// Make new copy
ueiAvp2 = ccaAvpFactory.createUserEquipmentInfo();
// And set all values using setters
AvpAssistant.testSetters(ueiAvp2);
// Create empty...
UserEquipmentInfoAvp ueiAvp3 = ccaAvpFactory.createUserEquipmentInfo();
// Verify that no values have been set
AvpAssistant.testHassers(ueiAvp3, false);
// Set all previous values
ueiAvp3.setExtensionAvps(ueiAvp2.getExtensionAvps());
// Verify if values have been set
AvpAssistant.testHassers(ueiAvp3, true);
// Verify if values have been correctly set
AvpAssistant.testGetters(ueiAvp3);
// Make sure they match!
Assert.assertEquals("Created " + avpName + " AVP from default constructor + setUnitValue should be equal to original.", ueiAvp2, ueiAvp3);
}
/**
* Class representing the Diameter Configuration
*/
public static class MyConfiguration extends EmptyConfiguration
{
public MyConfiguration()
{
super();
add(Assembler, Assembler.defValue());
add(OwnDiameterURI, clientURI);
add(OwnRealm, realmName);
add(OwnVendorID, 193L);
// Set Ericsson SDK feature
//add(UseUriAsFqdn, true);
// Set Common Applications
add(ApplicationId,
// AppId 1
getInstance().
add(VendorId, 193L).
add(AuthApplId, 0L).
add(AcctApplId, 19302L)
);
// Set peer table
add(PeerTable,
// Peer 1
getInstance().
add(PeerRating, 1).
add(PeerName, serverURI));
// Set realm table
add(RealmTable,
// Realm 1
getInstance().
add(RealmEntry, realmName + ":" + clientHost + "," + serverHost)
);
}
}
}