package org.mobicents.protocols.ss7.map.service.mobility.subscriberInformation; import org.mobicents.protocols.asn.AsnInputStream; import org.mobicents.protocols.asn.AsnOutputStream; import org.mobicents.protocols.asn.Tag; import org.mobicents.protocols.ss7.map.api.primitives.AddressNature; import org.mobicents.protocols.ss7.map.api.primitives.ISDNAddressString; import org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer; import org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.CallTypeCriteria; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.CauseValue; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.CauseValueCodeValue; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.DCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.DPAnalysedInfoCriterium; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.DefaultCallHandling; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.DefaultGPRSHandling; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.DefaultSMSHandling; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.ExtBasicServiceCode; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.GPRSCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.GPRSCamelTDPData; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.GPRSTriggerDetectionPoint; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.MCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.MGCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.MMCode; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.MMCodeValue; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.MTSMSTPDUType; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.MTsmsCAMELTDPCriteria; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.OBcsmCamelTDPData; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.OBcsmCamelTdpCriteria; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.OBcsmTriggerDetectionPoint; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.OCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.SMSCAMELTDPData; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.SMSCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.SMSTriggerDetectionPoint; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.SSCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.SSCamelData; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.SpecificCSIWithdraw; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TBcsmCamelTDPData; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TBcsmCamelTdpCriteria; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TBcsmTriggerDetectionPoint; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TCSI; import org.mobicents.protocols.ss7.map.api.service.mobility.subscriberManagement.TeleserviceCodeValue; import org.mobicents.protocols.ss7.map.api.service.supplementary.SSCode; import org.mobicents.protocols.ss7.map.api.service.supplementary.SupplementaryCodeValue; import org.mobicents.protocols.ss7.map.primitives.ISDNAddressStringImpl; import org.mobicents.protocols.ss7.map.primitives.MAPExtensionContainerTest; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.CauseValueImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.DCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.DPAnalysedInfoCriteriumImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.ExtBasicServiceCodeImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.ExtTeleserviceCodeImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.GPRSCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.GPRSCamelTDPDataImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.MCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.MGCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.MMCodeImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.MTsmsCAMELTDPCriteriaImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.OBcsmCamelTDPDataImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.OBcsmCamelTdpCriteriaImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.OCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.SMSCAMELTDPDataImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.SMSCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.SSCSIImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.SSCamelDataImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.SpecificCSIWithdrawImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.TBcsmCamelTDPDataImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.TBcsmCamelTdpCriteriaImpl; import org.mobicents.protocols.ss7.map.service.mobility.subscriberManagement.TCSIImpl; import org.mobicents.protocols.ss7.map.service.supplementary.SSCodeImpl; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; /** * * @author vadim subbotin * */ public class CAMELSubscriptionInfoTest { private byte[] data = {48, -127, -10, -96, 28, 48, 19, 48, 17, 10, 1, 2, 2, 1, 3, -128, 6, -111, 33, 67, 101, -121, 9, -127, 1, 1, -128, 1, 4, -127, 0, -126, 0, -95, 8, 48, 6, 10, 1, 4, -126, 1, 0, -94, 33, -96, 24, 48, 22, 4, 6, -111, 33, 67, 101, -121, -7, 2, 1, 2, 4, 6, -111, 33, 67, 101, -121, 9, 2, 1, 0, -127, 1, 4, -125, 0, -124, 0, -93, 28, 48, 19, 48, 17, 10, 1, 13, 2, 1, 5, -128, 6, -111, 33, 67, 101, -121, 9, -127, 1, 1, -128, 1, 4, -127, 0, -126, 0, -121, 0, -120, 0, -87, 24, -96, 19, 48, 17, -128, 1, 1, -127, 1, 6, -126, 6, -111, 33, 67, 101, -121, 9, -125, 1, 0, -127, 1, 4, -86, 28, -96, 19, 48, 17, -128, 1, 2, -127, 1, 7, -126, 6, -111, 33, 67, 101, -121, 9, -125, 1, 0, -127, 1, 4, -125, 0, -124, 0, -85, 15, 48, 13, 48, 3, 4, 1, -128, 4, 6, -111, 33, 67, 101, -121, 9, -84, 16, 48, 3, 4, 1, -125, 2, 1, 8, -128, 6, -111, 33, 67, 101, -121, 9, -83, 39, -96, 32, 48, 10, 6, 3, 42, 3, 4, 11, 12, 13, 14, 15, 48, 5, 6, 3, 42, 3, 6, 48, 11, 6, 3, 42, 3, 5, 21, 22, 23, 24, 25, 26, -95, 3, 31, 32, 33, -114, 3, 2, -2, 0}; private byte[] data1 = {48, -127, -8, -92, 15, 48, 13, 10, 1, 13, -96, 3, -125, 1, 32, -95, 3, 4, 1, 83, -91, 28, 48, 19, 48, 17, 10, 1, 13, 2, 1, 5, -128, 6, -111, 33, 67, 101, -121, 9, -127, 1, 1, -128, 1, 4, -127, 0, -126, 0, -90, 15, 48, 13, 10, 1, 13, -96, 3, -125, 1, 32, -95, 3, 4, 1, 83, -81, 28, -96, 19, 48, 17, -128, 1, 2, -127, 1, 7, -126, 6, -111, 33, 67, 101, -121, 9, -125, 1, 0, -127, 1, 4, -125, 0, -124, 0, -80, 10, 48, 8, 10, 1, 1, -96, 3, 10, 1, 0, -79, 18, 48, 3, 4, 1, -125, 2, 1, 10, -128, 6, -111, 33, 67, 101, -121, 9, -125, 0, -78, 28, 48, 19, 48, 17, 10, 1, 2, 2, 1, 3, -128, 6, -111, 33, 67, 101, -121, 9, -127, 1, 1, -128, 1, 4, -127, 0, -126, 0, -77, 8, 48, 6, 10, 1, 4, -126, 1, 0, -76, 33, -96, 24, 48, 22, 4, 6, -111, 33, 67, 101, -121, -7, 2, 1, 2, 4, 6, -111, 33, 67, 101, -121, 9, 2, 1, 0, -127, 1, 4, -125, 0, -124, 0, -75, 28, 48, 19, 48, 17, 10, 1, 13, 2, 1, 5, -128, 6, -111, 33, 67, 101, -121, 9, -127, 1, 1, -128, 1, 4, -127, 0, -126, 0, -74, 15, 48, 13, 10, 1, 13, -96, 3, -125, 1, 32, -95, 3, 4, 1, 83}; @Test(groups = {"functional.decode", "subscriberInformation"}) public void testDecode() throws Exception { AsnInputStream asn = new AsnInputStream(data); int tag = asn.readTag(); assertEquals(tag, Tag.SEQUENCE); assertEquals(asn.getTagClass(), Tag.CLASS_UNIVERSAL); CAMELSubscriptionInfoImpl camelSubscriptionInfo = new CAMELSubscriptionInfoImpl(); camelSubscriptionInfo.decodeAll(asn); // check o-CSI OCSI ocsi = camelSubscriptionInfo.getOCsi(); assertNotNull(ocsi); assertNull(ocsi.getExtensionContainer()); assertEquals(ocsi.getCamelCapabilityHandling().intValue(), 4); List<OBcsmCamelTDPData> oBcsmCamelTDPDataList = ocsi.getOBcsmCamelTDPDataList(); assertNotNull(oBcsmCamelTDPDataList); assertEquals(oBcsmCamelTDPDataList.size(), 1); assertTrue(ocsi.getNotificationToCSE()); assertTrue(ocsi.getCsiActive()); OBcsmCamelTDPData oBcsmCamelTDPData = oBcsmCamelTDPDataList.get(0); ISDNAddressString gsmSCFAddress = oBcsmCamelTDPData.getGsmSCFAddress(); assertEquals(oBcsmCamelTDPData.getOBcsmTriggerDetectionPoint(), OBcsmTriggerDetectionPoint.collectedInfo); assertEquals(oBcsmCamelTDPData.getServiceKey(), 3); assertEquals(oBcsmCamelTDPData.getDefaultCallHandling(), DefaultCallHandling.releaseCall); assertNull(oBcsmCamelTDPData.getExtensionContainer()); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); // check o-BcsmCamelTDP-CriteriaList assertNotNull(camelSubscriptionInfo.getOBcsmCamelTDPCriteriaList()); assertEquals(camelSubscriptionInfo.getOBcsmCamelTDPCriteriaList().size(), 1); OBcsmCamelTdpCriteria oBcsmCamelTdpCriteria = camelSubscriptionInfo.getOBcsmCamelTDPCriteriaList().get(0); assertEquals(oBcsmCamelTdpCriteria.getOBcsmTriggerDetectionPoint(), OBcsmTriggerDetectionPoint.routeSelectFailure); assertNull(oBcsmCamelTdpCriteria.getDestinationNumberCriteria()); assertNull(oBcsmCamelTdpCriteria.getBasicServiceCriteria()); assertEquals(oBcsmCamelTdpCriteria.getCallTypeCriteria(), CallTypeCriteria.forwarded); assertNull(oBcsmCamelTdpCriteria.getOCauseValueCriteria()); assertNull(oBcsmCamelTdpCriteria.getExtensionContainer()); // check d-CSI assertNotNull(camelSubscriptionInfo.getDCsi()); DCSI dcsi = camelSubscriptionInfo.getDCsi(); assertNotNull(dcsi.getDPAnalysedInfoCriteriaList()); assertEquals(dcsi.getDPAnalysedInfoCriteriaList().size(), 1); assertEquals(dcsi.getCamelCapabilityHandling().intValue(), 4); assertNull(dcsi.getExtensionContainer()); assertTrue(dcsi.getNotificationToCSE()); assertTrue(dcsi.getCsiActive()); DPAnalysedInfoCriterium dpAnalysedInfoCriterium = dcsi.getDPAnalysedInfoCriteriaList().get(0); ISDNAddressString dialedNumber = dpAnalysedInfoCriterium.getDialledNumber(); gsmSCFAddress = dpAnalysedInfoCriterium.getGsmSCFAddress(); assertEquals(dpAnalysedInfoCriterium.getDefaultCallHandling(), DefaultCallHandling.continueCall); assertEquals(dpAnalysedInfoCriterium.getServiceKey(), 2); assertNull(dpAnalysedInfoCriterium.getExtensionContainer()); assertEquals(dialedNumber.getAddressNature(), AddressNature.international_number); assertEquals(dialedNumber.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(dialedNumber.getAddress(), "123456789"); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); // check t-CSI assertNotNull(camelSubscriptionInfo.getTCsi()); TCSI tcsi = camelSubscriptionInfo.getTCsi(); assertNotNull(tcsi.getTBcsmCamelTDPDataList()); assertEquals(tcsi.getTBcsmCamelTDPDataList().size(), 1); assertNull(tcsi.getExtensionContainer()); assertEquals(tcsi.getCamelCapabilityHandling().intValue(), 4); assertTrue(tcsi.getNotificationToCSE()); assertTrue(tcsi.getCsiActive()); TBcsmCamelTDPData tBcsmCamelTDPData = tcsi.getTBcsmCamelTDPDataList().get(0); gsmSCFAddress = tBcsmCamelTDPData.getGsmSCFAddress(); assertEquals(tBcsmCamelTDPData.getTBcsmTriggerDetectionPoint(), TBcsmTriggerDetectionPoint.tBusy); assertEquals(tBcsmCamelTDPData.getServiceKey(), 5); assertEquals(tBcsmCamelTDPData.getDefaultCallHandling(), DefaultCallHandling.releaseCall); assertNull(tBcsmCamelTDPData.getExtensionContainer()); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); // check gprs-CSI assertNotNull(camelSubscriptionInfo.getGprsCsi()); GPRSCSI gprscsi = camelSubscriptionInfo.getGprsCsi(); assertNotNull(gprscsi.getGPRSCamelTDPDataList()); assertEquals(gprscsi.getGPRSCamelTDPDataList().size(), 1); assertEquals(gprscsi.getCamelCapabilityHandling().intValue(), 4); assertNull(gprscsi.getExtensionContainer()); assertFalse(gprscsi.getNotificationToCSE()); assertFalse(gprscsi.getCsiActive()); GPRSCamelTDPData gprsCamelTDPData = gprscsi.getGPRSCamelTDPDataList().get(0); gsmSCFAddress = gprsCamelTDPData.getGsmSCFAddress(); assertEquals(gprsCamelTDPData.getGPRSTriggerDetectionPoint(), GPRSTriggerDetectionPoint.attach); assertEquals(gprsCamelTDPData.getServiceKey(), 6); assertEquals(gprsCamelTDPData.getDefaultSessionHandling(), DefaultGPRSHandling.continueTransaction); assertNull(gprsCamelTDPData.getExtensionContainer()); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); // check mo-sms-CSI assertNotNull(camelSubscriptionInfo.getMoSmsCsi()); SMSCSI smscsi = camelSubscriptionInfo.getMoSmsCsi(); assertNotNull(smscsi.getSmsCamelTdpDataList()); assertEquals(smscsi.getSmsCamelTdpDataList().size(), 1); assertEquals(smscsi.getCamelCapabilityHandling().intValue(), 4); assertNull(smscsi.getExtensionContainer()); assertTrue(smscsi.getNotificationToCSE()); assertTrue(smscsi.getCsiActive()); SMSCAMELTDPData smsCamelTdpData = smscsi.getSmsCamelTdpDataList().get(0); gsmSCFAddress = smsCamelTdpData.getGsmSCFAddress(); assertEquals(smsCamelTdpData.getSMSTriggerDetectionPoint(), SMSTriggerDetectionPoint.smsDeliveryRequest); assertEquals(smsCamelTdpData.getServiceKey(), 7); assertEquals(smsCamelTdpData.getDefaultSMSHandling(), DefaultSMSHandling.continueTransaction); assertNull(smsCamelTdpData.getExtensionContainer()); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); // check ss-CSI assertNotNull(camelSubscriptionInfo.getSsCsi()); SSCSI sscsi = camelSubscriptionInfo.getSsCsi(); assertNotNull(sscsi.getSsCamelData()); assertNull(sscsi.getExtensionContainer()); assertFalse(sscsi.getNotificationToCSE()); assertFalse(sscsi.getCsiActive()); SSCamelData ssCamelData = sscsi.getSsCamelData(); gsmSCFAddress = ssCamelData.getGsmSCFAddress(); assertNotNull(ssCamelData.getSsEventList()); assertEquals(ssCamelData.getSsEventList().size(), 1); assertNull(ssCamelData.getExtensionContainer()); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); SSCode ssCode = ssCamelData.getSsEventList().get(0); assertEquals(ssCode.getSupplementaryCodeValue(), SupplementaryCodeValue.allAdditionalInfoTransferSS); // check m-CSI assertNotNull(camelSubscriptionInfo.getMCsi()); MCSI mcsi = camelSubscriptionInfo.getMCsi(); gsmSCFAddress = mcsi.getGsmSCFAddress(); assertNotNull(mcsi.getMobilityTriggers()); assertEquals(mcsi.getMobilityTriggers().size(), 1); assertEquals(mcsi.getServiceKey(), 8); assertNull(mcsi.getExtensionContainer()); assertFalse(mcsi.getNotificationToCSE()); assertFalse(mcsi.getCsiActive()); assertEquals(gsmSCFAddress.getAddressNature(), AddressNature.international_number); assertEquals(gsmSCFAddress.getNumberingPlan(), NumberingPlan.ISDN); assertEquals(gsmSCFAddress.getAddress(), "1234567890"); MMCode mmCode = mcsi.getMobilityTriggers().get(0); assertEquals(mmCode.getMMCodeValue(), MMCodeValue.GPRSAttach); // check extensionContainer assertTrue(MAPExtensionContainerTest.CheckTestExtensionContainer(camelSubscriptionInfo.getExtensionContainer())); // check specificCSIDeletedList assertNotNull(camelSubscriptionInfo.getSpecificCSIDeletedList()); SpecificCSIWithdraw specificCSIWithdraw = camelSubscriptionInfo.getSpecificCSIDeletedList(); assertTrue(specificCSIWithdraw.getOCsi()); assertTrue(specificCSIWithdraw.getSsCsi()); assertTrue(specificCSIWithdraw.getTifCsi()); assertTrue(specificCSIWithdraw.getDCsi()); assertTrue(specificCSIWithdraw.getVtCsi()); assertTrue(specificCSIWithdraw.getMoSmsCsi()); assertTrue(specificCSIWithdraw.getMCsi()); assertFalse(specificCSIWithdraw.getGprsCsi()); assertFalse(specificCSIWithdraw.getTCsi()); assertFalse(specificCSIWithdraw.getMtSmsCsi()); assertFalse(specificCSIWithdraw.getMgCsi()); assertFalse(specificCSIWithdraw.getOImCsi()); assertFalse(specificCSIWithdraw.getDImCsi()); assertFalse(specificCSIWithdraw.getVtImCsi()); // other assertNull(camelSubscriptionInfo.getMtSmsCsi()); assertNull(camelSubscriptionInfo.getMtSmsCamelTdpCriteriaList()); assertNull(camelSubscriptionInfo.getMgCsi()); assertNull(camelSubscriptionInfo.geToImCsi()); assertNull(camelSubscriptionInfo.getOImBcsmCamelTdpCriteriaList()); assertNull(camelSubscriptionInfo.getDImCsi()); assertNull(camelSubscriptionInfo.getVtImCsi()); assertNull(camelSubscriptionInfo.getVtImBcsmCamelTdpCriteriaList()); } @Test(groups = {"functional.decode", "subscriberInformation"}) public void testDecode1() throws Exception { AsnInputStream asn = new AsnInputStream(data1); int tag = asn.readTag(); assertEquals(tag, Tag.SEQUENCE); assertEquals(asn.getTagClass(), Tag.CLASS_UNIVERSAL); CAMELSubscriptionInfoImpl camelSubscriptionInfo = new CAMELSubscriptionInfoImpl(); camelSubscriptionInfo.decodeAll(asn); assertNotNull(camelSubscriptionInfo.getTBcsmCamelTdpCriteriaList()); assertEquals(camelSubscriptionInfo.getTBcsmCamelTdpCriteriaList().size(), 1); assertNotNull(camelSubscriptionInfo.getVtBcsmCamelTdpCriteriaList()); assertEquals(camelSubscriptionInfo.getVtBcsmCamelTdpCriteriaList().size(), 1); assertNotNull(camelSubscriptionInfo.getVtCsi()); assertFalse(camelSubscriptionInfo.getTifCsi()); assertFalse(camelSubscriptionInfo.getTifCsiNotificationToCSE()); assertNotNull(camelSubscriptionInfo.getMtSmsCsi()); assertNotNull(camelSubscriptionInfo.getMtSmsCamelTdpCriteriaList()); assertNotNull(camelSubscriptionInfo.getMgCsi()); assertNotNull(camelSubscriptionInfo.geToImCsi()); assertNotNull(camelSubscriptionInfo.getOImBcsmCamelTdpCriteriaList()); assertNotNull(camelSubscriptionInfo.getDImCsi()); assertNotNull(camelSubscriptionInfo.getVtImCsi()); assertNotNull(camelSubscriptionInfo.getVtImBcsmCamelTdpCriteriaList()); TBcsmCamelTdpCriteria tBcsmCamelTdpCriteria = camelSubscriptionInfo.getTBcsmCamelTdpCriteriaList().get(0); assertEquals(tBcsmCamelTdpCriteria.getTBcsmTriggerDetectionPoint(), TBcsmTriggerDetectionPoint.tBusy); assertNotNull(tBcsmCamelTdpCriteria.getBasicServiceCriteria()); assertEquals(tBcsmCamelTdpCriteria.getBasicServiceCriteria().size(), 1); assertNotNull(tBcsmCamelTdpCriteria.getTCauseValueCriteria()); assertEquals(tBcsmCamelTdpCriteria.getTCauseValueCriteria().size(), 1); ExtBasicServiceCode basicServiceCode = tBcsmCamelTdpCriteria.getBasicServiceCriteria().get(0); assertEquals(basicServiceCode.getExtTeleservice().getTeleserviceCodeValue(), TeleserviceCodeValue.allShortMessageServices); CauseValue causeValue = tBcsmCamelTdpCriteria.getTCauseValueCriteria().get(0); assertEquals(causeValue.getCauseValueCodeValue(), CauseValueCodeValue.ASuspendedCallExists); TCSI tcsi = camelSubscriptionInfo.getVtCsi(); assertNotNull(tcsi.getTBcsmCamelTDPDataList()); assertEquals(tcsi.getTBcsmCamelTDPDataList().size(), 1); assertNull(tcsi.getExtensionContainer()); assertEquals(tcsi.getCamelCapabilityHandling().intValue(), 4); assertTrue(tcsi.getNotificationToCSE()); assertTrue(tcsi.getCsiActive()); tBcsmCamelTdpCriteria = camelSubscriptionInfo.getVtBcsmCamelTdpCriteriaList().get(0); assertEquals(tBcsmCamelTdpCriteria.getTBcsmTriggerDetectionPoint(), TBcsmTriggerDetectionPoint.tBusy); assertNotNull(tBcsmCamelTdpCriteria.getBasicServiceCriteria()); assertEquals(tBcsmCamelTdpCriteria.getBasicServiceCriteria().size(), 1); assertNotNull(tBcsmCamelTdpCriteria.getTCauseValueCriteria()); assertEquals(tBcsmCamelTdpCriteria.getTCauseValueCriteria().size(), 1); basicServiceCode = tBcsmCamelTdpCriteria.getBasicServiceCriteria().get(0); assertEquals(basicServiceCode.getExtTeleservice().getTeleserviceCodeValue(), TeleserviceCodeValue.allShortMessageServices); causeValue = tBcsmCamelTdpCriteria.getTCauseValueCriteria().get(0); assertEquals(causeValue.getCauseValueCodeValue(), CauseValueCodeValue.ASuspendedCallExists); SMSCSI smscsi = camelSubscriptionInfo.getMtSmsCsi(); assertNotNull(smscsi.getSmsCamelTdpDataList()); assertEquals(smscsi.getSmsCamelTdpDataList().size(), 1); assertEquals(smscsi.getCamelCapabilityHandling().intValue(), 4); assertNull(smscsi.getExtensionContainer()); assertTrue(smscsi.getNotificationToCSE()); assertTrue(smscsi.getCsiActive()); MTsmsCAMELTDPCriteria mTsmsCAMELTDPCriteria = camelSubscriptionInfo.getMtSmsCamelTdpCriteriaList().get(0); assertEquals(mTsmsCAMELTDPCriteria.getSMSTriggerDetectionPoint(), SMSTriggerDetectionPoint.smsCollectedInfo); assertNotNull(mTsmsCAMELTDPCriteria.getTPDUTypeCriterion()); assertEquals(mTsmsCAMELTDPCriteria.getTPDUTypeCriterion().size(), 1); MTSMSTPDUType mtsmstpduType = mTsmsCAMELTDPCriteria.getTPDUTypeCriterion().get(0); assertEquals(mtsmstpduType, MTSMSTPDUType.smsDELIVER); MGCSI mgcsi = camelSubscriptionInfo.getMgCsi(); assertNotNull(mgcsi.getMobilityTriggers()); assertEquals(mgcsi.getMobilityTriggers().size(), 1); assertEquals(mgcsi.getServiceKey(), 10); assertEquals(mgcsi.getGsmSCFAddress().getAddress(), "1234567890"); assertFalse(mgcsi.getNotificationToCSE()); assertTrue(mgcsi.getCsiActive()); MMCode mmCode = mgcsi.getMobilityTriggers().get(0); assertEquals(mmCode.getMMCodeValue(), MMCodeValue.GPRSAttach); OCSI ocsi = camelSubscriptionInfo.geToImCsi(); assertNotNull(ocsi.getOBcsmCamelTDPDataList()); assertEquals(ocsi.getOBcsmCamelTDPDataList().size(), 1); assertEquals(ocsi.getCamelCapabilityHandling().intValue(), 4); assertTrue(ocsi.getNotificationToCSE()); assertTrue(ocsi.getCsiActive()); OBcsmCamelTDPData oBcsmCamelTDPData = ocsi.getOBcsmCamelTDPDataList().get(0); assertEquals(oBcsmCamelTDPData.getOBcsmTriggerDetectionPoint(), OBcsmTriggerDetectionPoint.collectedInfo); assertEquals(oBcsmCamelTDPData.getDefaultCallHandling(), DefaultCallHandling.releaseCall); assertEquals(oBcsmCamelTDPData.getServiceKey(), 3); assertEquals(oBcsmCamelTDPData.getGsmSCFAddress().getAddress(), "1234567890"); OBcsmCamelTdpCriteria oBcsmCamelTdpCriteria = camelSubscriptionInfo.getOImBcsmCamelTdpCriteriaList().get(0); assertEquals(oBcsmCamelTdpCriteria.getOBcsmTriggerDetectionPoint(), OBcsmTriggerDetectionPoint.routeSelectFailure); assertNull(oBcsmCamelTdpCriteria.getDestinationNumberCriteria()); assertNull(oBcsmCamelTdpCriteria.getBasicServiceCriteria()); assertEquals(oBcsmCamelTdpCriteria.getCallTypeCriteria(), CallTypeCriteria.forwarded); assertNull(oBcsmCamelTdpCriteria.getOCauseValueCriteria()); assertNull(oBcsmCamelTdpCriteria.getExtensionContainer()); DCSI dcsi = camelSubscriptionInfo.getDImCsi(); assertNotNull(dcsi.getDPAnalysedInfoCriteriaList()); assertEquals(dcsi.getDPAnalysedInfoCriteriaList().size(), 1); assertEquals(dcsi.getCamelCapabilityHandling().intValue(), 4); assertNull(dcsi.getExtensionContainer()); assertTrue(dcsi.getNotificationToCSE()); assertTrue(dcsi.getCsiActive()); tcsi = camelSubscriptionInfo.getVtImCsi(); assertNotNull(tcsi.getTBcsmCamelTDPDataList()); assertEquals(tcsi.getTBcsmCamelTDPDataList().size(), 1); assertNull(tcsi.getExtensionContainer()); assertEquals(tcsi.getCamelCapabilityHandling().intValue(), 4); assertTrue(tcsi.getNotificationToCSE()); assertTrue(tcsi.getCsiActive()); tBcsmCamelTdpCriteria = camelSubscriptionInfo.getVtImBcsmCamelTdpCriteriaList().get(0); assertEquals(tBcsmCamelTdpCriteria.getTBcsmTriggerDetectionPoint(), TBcsmTriggerDetectionPoint.tBusy); assertNotNull(tBcsmCamelTdpCriteria.getBasicServiceCriteria()); assertEquals(tBcsmCamelTdpCriteria.getBasicServiceCriteria().size(), 1); assertNotNull(tBcsmCamelTdpCriteria.getTCauseValueCriteria()); assertEquals(tBcsmCamelTdpCriteria.getTCauseValueCriteria().size(), 1); basicServiceCode = tBcsmCamelTdpCriteria.getBasicServiceCriteria().get(0); assertEquals(basicServiceCode.getExtTeleservice().getTeleserviceCodeValue(), TeleserviceCodeValue.allShortMessageServices); causeValue = tBcsmCamelTdpCriteria.getTCauseValueCriteria().get(0); assertEquals(causeValue.getCauseValueCodeValue(), CauseValueCodeValue.ASuspendedCallExists); } @Test(groups = {"functional.encode", "subscriberInformation"}) public void testEncode() throws Exception { ISDNAddressStringImpl gsmSCFAddress = new ISDNAddressStringImpl(AddressNature.international_number, NumberingPlan.ISDN, "1234567890"); final OBcsmCamelTDPData oBcsmCamelTDPData = new OBcsmCamelTDPDataImpl(OBcsmTriggerDetectionPoint.collectedInfo, 3, gsmSCFAddress, DefaultCallHandling.releaseCall, null); OCSIImpl ocsi = new OCSIImpl(new ArrayList<OBcsmCamelTDPData>(){{add(oBcsmCamelTDPData);}}, null, 4, true, true); final OBcsmCamelTdpCriteria oBcsmCamelTdpCriteria = new OBcsmCamelTdpCriteriaImpl(OBcsmTriggerDetectionPoint.routeSelectFailure, null, null, CallTypeCriteria.forwarded, null, null); ISDNAddressStringImpl dialedNumber = new ISDNAddressStringImpl(AddressNature.international_number, NumberingPlan.ISDN, "123456789"); final DPAnalysedInfoCriterium dpAnalysedInfoCriterium = new DPAnalysedInfoCriteriumImpl(dialedNumber, 2, gsmSCFAddress, DefaultCallHandling.continueCall, null); DCSIImpl dcsi = new DCSIImpl(new ArrayList<DPAnalysedInfoCriterium>(){{add(dpAnalysedInfoCriterium);}}, 4, null, true, true); final TBcsmCamelTDPData tBcsmCamelTDPData = new TBcsmCamelTDPDataImpl(TBcsmTriggerDetectionPoint.tBusy, 5, gsmSCFAddress, DefaultCallHandling.releaseCall, null); TCSIImpl tcsi = new TCSIImpl(new ArrayList<TBcsmCamelTDPData>(){{add(tBcsmCamelTDPData);}}, null, 4, true, true); final GPRSCamelTDPData gprsCamelTDPData = new GPRSCamelTDPDataImpl(GPRSTriggerDetectionPoint.attach, 6, gsmSCFAddress, DefaultGPRSHandling.continueTransaction, null); GPRSCSIImpl gprscsi = new GPRSCSIImpl(new ArrayList<GPRSCamelTDPData>(){{add(gprsCamelTDPData);}}, 4, null, false, false); final SMSCAMELTDPData smscameltdpData = new SMSCAMELTDPDataImpl(SMSTriggerDetectionPoint.smsDeliveryRequest, 7, gsmSCFAddress, DefaultSMSHandling.continueTransaction, null); SMSCSIImpl smscsi = new SMSCSIImpl(new ArrayList<SMSCAMELTDPData>(){{add(smscameltdpData);}}, 4, null, true, true); final SSCodeImpl ssCode = new SSCodeImpl(SupplementaryCodeValue.allAdditionalInfoTransferSS); SSCamelDataImpl ssCamelData = new SSCamelDataImpl(new ArrayList<SSCode>(){{add(ssCode);}}, gsmSCFAddress, null); SSCSIImpl sscsi = new SSCSIImpl(ssCamelData, null, false, false); final MMCodeImpl mmCode = new MMCodeImpl(MMCodeValue.GPRSAttach); MCSIImpl mcsi = new MCSIImpl(new ArrayList<MMCode>() {{add(mmCode);}}, 8, gsmSCFAddress, null, false, false); MAPExtensionContainer extensionContainer = MAPExtensionContainerTest.GetTestExtensionContainer(); SpecificCSIWithdrawImpl specificCSIWithdraw = new SpecificCSIWithdrawImpl(true, true, true, true, true, true, true, false, false, false, false, false, false, false); CAMELSubscriptionInfoImpl camelSubscriptionInfo = new CAMELSubscriptionInfoImpl(ocsi, new ArrayList<OBcsmCamelTdpCriteria>(){{add(oBcsmCamelTdpCriteria);}}, dcsi, tcsi, null, null, null, true, true, gprscsi, smscsi, sscsi, mcsi, extensionContainer, specificCSIWithdraw, null, null, null, null, null, null, null, null); AsnOutputStream asnOS = new AsnOutputStream(); camelSubscriptionInfo.encodeAll(asnOS); byte[] raw = asnOS.toByteArray(); assertTrue(Arrays.equals(raw, data)); } @Test(groups = {"functional.encode", "subscriberInformation"}) public void testEncode1() throws Exception { final ExtBasicServiceCode basicServiceCode = new ExtBasicServiceCodeImpl(new ExtTeleserviceCodeImpl(TeleserviceCodeValue.allShortMessageServices)); final TBcsmCamelTdpCriteriaImpl tBcsmCamelTdpCriteria = new TBcsmCamelTdpCriteriaImpl(TBcsmTriggerDetectionPoint.tBusy, new ArrayList<ExtBasicServiceCode>(){{add(basicServiceCode);}}, new ArrayList<CauseValue>(){{add(new CauseValueImpl(CauseValueCodeValue.ASuspendedCallExists));}}); ArrayList<TBcsmCamelTdpCriteria> tBcsmCamelTdpCriteriaList = new ArrayList<TBcsmCamelTdpCriteria>() {{add(tBcsmCamelTdpCriteria);}}; ISDNAddressStringImpl gsmSCFAddress = new ISDNAddressStringImpl(AddressNature.international_number, NumberingPlan.ISDN, "1234567890"); final TBcsmCamelTDPData tBcsmCamelTDPData = new TBcsmCamelTDPDataImpl(TBcsmTriggerDetectionPoint.tBusy, 5, gsmSCFAddress, DefaultCallHandling.releaseCall, null); TCSIImpl tcsi = new TCSIImpl(new ArrayList<TBcsmCamelTDPData>(){{add(tBcsmCamelTDPData);}}, null, 4, true, true); final SMSCAMELTDPData smscameltdpData = new SMSCAMELTDPDataImpl(SMSTriggerDetectionPoint.smsDeliveryRequest, 7, gsmSCFAddress, DefaultSMSHandling.continueTransaction, null); SMSCSIImpl smscsi = new SMSCSIImpl(new ArrayList<SMSCAMELTDPData>(){{add(smscameltdpData);}}, 4, null, true, true); final MTsmsCAMELTDPCriteria mTsmsCAMELTDPCriteria = new MTsmsCAMELTDPCriteriaImpl(SMSTriggerDetectionPoint.smsCollectedInfo, new ArrayList<MTSMSTPDUType>(){{add(MTSMSTPDUType.smsDELIVER);}}); ArrayList<MTsmsCAMELTDPCriteria> mTsmsCAMELTDPCriteriaList = new ArrayList<MTsmsCAMELTDPCriteria>(){{add(mTsmsCAMELTDPCriteria);}}; MGCSIImpl mgcsi = new MGCSIImpl(new ArrayList<MMCode>() {{add(new MMCodeImpl(MMCodeValue.GPRSAttach));}}, 10, gsmSCFAddress, null, false, true); final OBcsmCamelTDPData oBcsmCamelTDPData = new OBcsmCamelTDPDataImpl(OBcsmTriggerDetectionPoint.collectedInfo, 3, gsmSCFAddress, DefaultCallHandling.releaseCall, null); OCSIImpl ocsi = new OCSIImpl(new ArrayList<OBcsmCamelTDPData>(){{add(oBcsmCamelTDPData);}}, null, 4, true, true); final OBcsmCamelTdpCriteria oBcsmCamelTdpCriteria = new OBcsmCamelTdpCriteriaImpl(OBcsmTriggerDetectionPoint.routeSelectFailure, null, null, CallTypeCriteria.forwarded, null, null); ISDNAddressStringImpl dialedNumber = new ISDNAddressStringImpl(AddressNature.international_number, NumberingPlan.ISDN, "123456789"); final DPAnalysedInfoCriterium dpAnalysedInfoCriterium = new DPAnalysedInfoCriteriumImpl(dialedNumber, 2, gsmSCFAddress, DefaultCallHandling.continueCall, null); DCSIImpl dcsi = new DCSIImpl(new ArrayList<DPAnalysedInfoCriterium>(){{add(dpAnalysedInfoCriterium);}}, 4, null, true, true); CAMELSubscriptionInfoImpl camelSubscriptionInfo = new CAMELSubscriptionInfoImpl(null, null, null, null, tBcsmCamelTdpCriteriaList, tcsi, tBcsmCamelTdpCriteriaList, false, false, null, null, null, null, null, null, smscsi, mTsmsCAMELTDPCriteriaList, mgcsi, ocsi, new ArrayList<OBcsmCamelTdpCriteria>(){{add(oBcsmCamelTdpCriteria);}}, dcsi, tcsi, tBcsmCamelTdpCriteriaList); AsnOutputStream asnOS = new AsnOutputStream(); camelSubscriptionInfo.encodeAll(asnOS); byte[] encodedData = asnOS.toByteArray(); assertTrue(Arrays.equals(data1, encodedData)); } }