Commit 6d183c58 authored by ringst's avatar ringst
Browse files

TC_IMS_REG_0001 improved (still incomplete)

parent 8fddcf9b
Loading
Loading
Loading
Loading
+104 −73
Original line number Diff line number Diff line
@@ -326,22 +326,19 @@ group checksTC_IMS_REG_0001 {
		 */
	    function f_mtc_check_TP_IMS_5011_01_mw(
	    	ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
	    ) runs on ImsTestCoordinator return Request {
	    ) runs on ImsTestCoordinator {
		   var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
		   var SipMessage v_sip;    		
           p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5011_01_mw(v_EUT_A_Addr))},
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                {0, omit},
                "TP_IMS_5011_01",
				p_checkMessage,
                false
				false,
				p_checkMessage
            )
           );
           p_monitorCompRef.done;
           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
           return v_sip.request;
	    }

		/**
@@ -392,10 +389,9 @@ group checksTC_IMS_REG_0001 {
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5011_02_mw(
	    	ImsInterfaceMonitor p_monitorCompRef
	    ) runs on ImsTestCoordinator return Request{
	    	ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
	    ) runs on ImsTestCoordinator {
		   var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);    		
		   var SipMessage v_sip;
           p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5011_02_mw(v_EUT_A_Addr))},
@@ -403,13 +399,10 @@ group checksTC_IMS_REG_0001 {
                {0, omit},
                "TP_IMS_5011_02",
                true,
                false
				p_checkMessage
            )
           );
           p_monitorCompRef.done;

           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
           return v_sip.request;
	    }


@@ -439,8 +432,7 @@ group checksTC_IMS_REG_0001 {
		 */
	    function f_mtc_check_TP_IMS_5089_01_mw_then(
	    	ImsInterfaceMonitor p_monitorCompRef
	    ) runs on ImsTestCoordinator return Response {
		  var SipMessage v_sip;
	    ) runs on ImsTestCoordinator {
          p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipResponse(mdw_TP_IMS_5089_01_mw)},
@@ -452,9 +444,6 @@ group checksTC_IMS_REG_0001 {
            )
           );
           p_monitorCompRef.done;
           p_monitorCompRef.done;
           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
           return v_sip.response;
	    }


@@ -504,16 +493,40 @@ group checksTC_IMS_REG_0001 {
        * @param p_monitorCompRef Reference to monitor component
        */
		function f_mtc_check_TP_IMS_5092_01_mw(
			ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
		) runs on ImsTestCoordinator {
			var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
			var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
			
    		p_monitorCompRef.start(
				f_imsIot_receive(
        			{mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_EUT_A_Addr, v_eutBUri))},
        			{mw_SipResponse (mw_200OK_Base)},
        			{0, omit},
        			"TP_IMS_5092_01",
        			true,
					p_checkMessage
    			)
    		);
    		p_monitorCompRef.done;
		}


		/**
		* @desc Starts monitor component behavior for TP_IMS_5044_01 (when)
		* @param p_monitorCompRef Reference to monitor component
		*/
    	function f_mtc_check_TP_IMS_5044_01_mw_when(
    		ImsInterfaceMonitor p_monitorCompRef
    	) runs on ImsTestCoordinator return Response {
    		var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); 
			var SipMessage v_sip;
			p_monitorCompRef.start(
					f_imsIot_receive(
            			{mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))},
					{mw_SipResponse(mw_200OK_Base)},
					{},
					{0, omit},
            			"TP_IMS_5092_01",
					"TP_IMS_5044_01 (when)",
					true,
					false
				)
@@ -525,27 +538,25 @@ group checksTC_IMS_REG_0001 {
    	}

    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02
     * @desc Starts monitor component behavior for TP_IMS_5044_01
     * @param p_monitorCompRef Reference to monitor component
     */
	function f_mtc_check_TP_IMS_5044_01_mw(
	    	ImsInterfaceMonitor p_monitorCompRef, Response p_200OK
	    ) runs on ImsTestCoordinator  return Request
	    {
	       var charstring v_EUTB_PublicId := f_GetEUTPublicId(PX_EUT_B);
		ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage
	) runs on ImsTestCoordinator {
		var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B);
		var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));  		
		   var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_B)); 
		var SipMessage v_sip;
		var charstring v_Epires200OK;
		var charstring v_EpiresSubscribe;
		p_monitorCompRef.start(
			f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5044_01_mw(v_eutAUri, v_eutBUri, v_EUTB_PublicId))},
				{mw_SipRequest(mdw_TP_IMS_5044_01_mw(?, v_eutAUri, v_UEB_PublicId))},
				{mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
				{0, omit},
 				"TP_IMS_5044_01",
				true,
                false
        		p_checkMessage
			)
		);
		p_monitorCompRef.done;
@@ -555,18 +566,42 @@ group checksTC_IMS_REG_0001 {
		// in the Expires_header of the 200_response"
		v_Epires200OK := p_200OK.msgHeader.expires.deltaSec;
		v_EpiresSubscribe  := v_sip.request.msgHeader.expires.deltaSec;
           if (char2int(v_EpiresSubscribe) <= char2int(v_Epires200OK)) {
			f_setIotVerdictFAIL("TP_IMS_5044_01"); // TODO use oracle functions for vericts
		if (char2int(v_EpiresSubscribe) > char2int(v_Epires200OK)) {
			f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response.");
		}
	}

		// @TODO
		/**
        * @desc Starts monitor component behavior for TP_IMS_5096_01
        * @param p_monitorCompRef Reference to monitor component
        */
		function f_mtc_check_TP_IMS_5096_01_mw_when(
			ImsInterfaceMonitor p_monitorCompRef
		) runs on ImsTestCoordinator  return Request {
    		var SipMessage v_sip;
    		p_monitorCompRef.start(
    			f_imsIot_receive(
    				{mw_SipRequest(mdw_TP_IMS_5096_01_mw_when)},
    				{mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
    				{0, omit},
    				"TP_IMS_5096_01 (when)",
    				true,
    				false
    			)
    		);
    		p_monitorCompRef.done;
       		f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
       		return v_sip.request;
		}


	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5096_01
		 */
	    function f_mtc_check_TP_IMS_5096_01_mw(
	    	ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe
	    ) runs on ImsTestCoordinator  return Response
	    ) runs on ImsTestCoordinator
	    {
		   var SipMessage v_sip;
           var charstring v_Epires200OK;
@@ -581,7 +616,6 @@ group checksTC_IMS_REG_0001 {
                false
            )
           );
     
           p_monitorCompRef.done;
		   
           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
@@ -589,12 +623,9 @@ group checksTC_IMS_REG_0001 {
           // lower expiry time than specified in the initial SUBSCRIBE"
		   v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec;
		   v_EpiresSubscribe  := p_Subscribe.msgHeader.expires.deltaSec;          
           if (char2int(v_EpiresSubscribe) >=  char2int(v_Epires200OK)) {
			f_setIotVerdictFAIL("TP_IMS_5096_01");
           if (char2int(v_Epires200OK) <= char2int(v_EpiresSubscribe)) {
			 f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe.");
           }


           return v_sip.response;
	    }

} // group
+36 −14
Original line number Diff line number Diff line
@@ -474,6 +474,8 @@ module AtsImsIot_Functions {

    	/**
    	 * @desc Get the S-CSCF FQDN address of referenced EUT 
    	 * @return if a S-CSCF is avaiable, the domainname of the S-CSCF, 
    	 *         otherwise error_string
    	 */
       function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring {
			// TODO function not tested
@@ -488,6 +490,7 @@ module AtsImsIot_Functions {
					v_interface := i;
				}
			}
			if (v_interface > -1) {
				v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo);
    			for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) {
    				v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName;
@@ -495,7 +498,10 @@ module AtsImsIot_Functions {
    					v_ipinterfaceinfo := i;
    				}
    			}
			if (v_interface > -1 and v_ipinterfaceinfo > -1) {
			} else {
				return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
			}
			if (v_ipinterfaceinfo > -1) {
				return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName;
			} else {
				return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
@@ -520,6 +526,7 @@ module AtsImsIot_Functions {
			  v_interface := i;
		  	}
		  }
		  if (v_interface > -1) {
    		  v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo);
    		  for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) {
    			v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName;
@@ -527,13 +534,28 @@ module AtsImsIot_Functions {
    			  v_ipinterfaceinfo := i;
     	        }
    		  }
		  if (v_interface > -1 and v_ipinterfaceinfo > -1) {
		  } else {
			return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
		  }
		  if (v_ipinterfaceinfo > -1) {
     	  	return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName;
		  } else {
			return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
		  }
     	}

		/**
		* @desc Get the Public Id of referenced UE
		* @param p_ProductIdx index of the product the UE belongs to 
		* @return PublicID of the UE of the productIdx
		*/
		function f_GetUEPublicId(integer p_ProductIdx) return charstring {
			
			var ImsUserInfo v_uePublicId := f_getSipUserId(p_ProductIdx);
			
			return v_uePublicId.publicId;
		}

    	/**
    	 * @desc Get the Public Id of referenced EUT 
    	 */
+49 −32
Original line number Diff line number Diff line
@@ -91,12 +91,18 @@ module AtsImsIot_Templates {
      msgHeader := {
        path := mw_PathDef (p_EUTHostname), 
        require :=  mw_Require ({"path", *}), 
        pChargingVector :=  mw_PChargingVector({
            {id := "icid-value", paramValue := *}, 
            {id := "orig-ioi", paramValue := *}, //TODO better should be ? instead of *
            {id := "term-ioi", paramValue := *}, //TODO check term-ioi should not be present
		pChargingVector := {
			fieldName := P_CHARGING_VECTOR_E,
			chargeParams := {
    			*,
    			{id := "icid-value", paramValue := ?},
    			*,
    			{id := "orig-ioi", paramValue := ?},
    			*,
    			complement({id := "term-ioi", paramValue := ?}),
    			*
          }),
			}
		},
        authorization := m_Authorization(mw_credentialIntegrityNo), 
        securityClient := omit,
        securityVerify :=omit,
@@ -158,23 +164,24 @@ module AtsImsIot_Templates {
     * 
     * @desc 200 OK  message for TP_IMS_5092_01
     */
    template Response mdw_TP_IMS_5092_01_mw (template SipUrl p_eutBUri )modifies mw_200OK_Base := {
      msgHeader := {
        // TODO 
        // all registered_public_identities and "its associated set of implicitly 
        // registered public user identities" indicating (first the default 
        // public_user_identity and no barred_public_user_identities
        pAssociatedURI := mw_PAssociatedURI({
          {id := "publicUserId1", paramValue :="eutBxxx"},
          {id := "publicUserId2", paramValue :="eutByyy"}
        }),
        serviceRoute := mw_ServiceRoute (p_eutBUri),
    template Response mdw_TP_IMS_5092_01_mw (charstring p_EUTHostname, template SipUrl p_eutBUri) modifies mw_200OK_Base := {
		msgHeader := {
			path := mw_PathDef (p_EUTHostname), 
			pAssociatedURI := {
				fieldName := P_ASSOCIATED_URI_E, 
				nameAddrList := ?
			},
			pChargingVector :=  mw_PChargingVector({ 
            {id := "term-ioi", paramValue := *}, 
							{id := "term-ioi", paramValue := ?}, 
							*
			}),
        // TODO indicating all contact addresses
        contact := m_Contact(p_eutBUri)
			serviceRoute := mw_ServiceRoute (p_eutBUri),
			contact := {
				fieldName := CONTACT_E,
				contactBody := {
					contactAddresses := ?
				}
			} 
		}
    }
   /**
@@ -192,22 +199,22 @@ module AtsImsIot_Templates {
     * 
     * @desc SUBSCRIBE checking TP_IMS_5044_01.
     */
    template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw(template SipUrl p_eutAUri, 
                                     template SipUrl p_eutBUri,
    template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw(
		template SipUrl p_subscribe_uri,
    	template SipUrl p_eutAUri, 
        template charstring p_EUTB_PublicId
                                     )  
    modifies mw_SUBSCRIBE_Request_Base := {
    ) modifies mw_SUBSCRIBE_Request_Base := {
      
      requestLine := {
        method := SUBSCRIBE_E,
        requestUri := p_eutBUri,
        requestUri := p_subscribe_uri, // @TODO
        sipVersion := c_sipNameVersion
      },
      msgHeader := {
        fromField := mw_From (p_eutAUri),
        toField := mw_To_NameAddr_SipUrl (p_EUTB_PublicId, ?, ?),
        event := m_Event_reg,
        expires := ?, // to be checked outside the template
        expires := ?, // checked outside the template
        pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)),
        pChargingVector :=  mw_PChargingVector({
            {id := "icid-value", paramValue := *}, 
@@ -260,6 +267,16 @@ module AtsImsIot_Templates {
      }
    }
    
    /**
    * 
    * @desc SUBSCRIBE checking TP_IMS_5096_01.
    */
    template SUBSCRIBE_Request mdw_TP_IMS_5096_01_mw_when modifies mw_SUBSCRIBE_Request_Base := {
		msgHeader := {
			event := m_Event_reg
		}
    }
    
   /**
     * @desc INVITE Request checking TP_IMS_5097_01
     */
+11 −19
Original line number Diff line number Diff line
@@ -46,12 +46,8 @@ module AtsImsIot_TestCases_REG {
		var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B);
		var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A);
		var ImsInterfaceMonitor v_mw := f_cf_create_monitor(c_mw);
		var Request v_Register_Step3;
		var Response v_401Unauthorited_Step4;
		var Request v_Register_Step7;
		var Response v_200OK_Step8;
		var Request v_Subscribe_Step10;
		var Response v_200OK_Step11;
		
		// map/connect component ports
		f_cf_user_up(v_ueB);
@@ -59,33 +55,29 @@ module AtsImsIot_TestCases_REG {
		f_cf_monitor_up(v_mw);
		
		// test body
		f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Step1
		f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Test Sequence Step 1
		
		f_mtc_check_TP_IMS_5011_01_gm(v_gmA); // Check1 when
		v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo)
		f_mtc_check_TP_IMS_5011_01_mw(v_mw, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo)
		
		f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA); // Check4 when (Gm)
		f_mtc_check_TP_IMS_5089_01_mw_when(v_mw); // Check4 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo)
		v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw_then(v_mw); // Check4 then @TODO fields in mw_WwwAuthenticate
		f_mtc_check_TP_IMS_5089_01_mw_then(v_mw); // Check4 then @TODO fields in mw_WwwAuthenticate
		
		f_mtc_check_TP_IMS_5011_02_gm(v_gmA); // Check2 when (Gm)
		v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw);  // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes)
		f_mtc_check_TP_IMS_5011_02_mw(v_mw, true);  // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes)
		
		f_mtc_check_TP_IMS_5092_01_gm(v_gmA); // Check5 when (Gm)
		f_mtc_check_TP_IMS_5092_01_mw_when(v_mw); // Check5 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo)		
		v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then @TODO template does not contain valid content
		// TODO incomplete
		// Check3 when
		f_mtc_check_TP_IMS_5092_01_mw(v_mw, true); // Check5 then @TODO fields need to be checked (pChargingVector)
		
		// Check3 then
		v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); // Check3 then
		v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_mw_when(v_mw); // Check3 when
		f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8, true); // Check3 then
		
		// Check6 when 
		v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_mw_when(v_mw); // Check6 when 
		f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 then
		
		// Check6 then
		f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6
		
		// Step2
		// Test Sequence Step 2
		f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B));
		
		// postamble
@@ -128,7 +120,7 @@ module AtsImsIot_TestCases_REG {
		// check mw for protected register (check2-when)
		
		// check mw for 200_response (check2-then) 
		v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2
		//v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2
		
		//Step 2
		f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B));