Commit 2b7be269 authored by Michael Proestler's avatar Michael Proestler
Browse files

Add ECRF SIP Testcases

Add ECRF Profile, Add PICS, Add TCs
parent 5a7fd027
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -17,6 +17,21 @@ module AtsECRF_Pics {
   */
  modulepar boolean PICS_ECRF_LIST_SERVICES_BY_LOCATION := true;

  /**
   * @desc Does the IUT support SIP Element State ?
   */
  modulepar boolean PICS_ECRF_SIP_ELEMENT_STATE := true

  /**
   * @desc Does the IUT support SIP Security Posture ?
   */
  modulepar boolean PICS_ECRF_SIP_SECURITY_POSTURE := true

    /**
   * @desc Does the IUT support SIP Service State ?
   */
  modulepar boolean PICS_ECRF_SIP_SERVICE_STATE := true

  /**
  * @desc Does the IUT support Redirect?
  */
+346 −0
Original line number Diff line number Diff line
@@ -82,6 +82,19 @@ module AtsECRF_TestCases {
  import from LibItsHttp_XmlTemplates all;
  import from LibItsHttp_TestSystem all;
  
  // LibSip
  import from LibSip_SIPTypesAndValues all;
  import from LibSip_SDPTypes all;
  import from LibSip_Steps all;
  import from LibSip_Templates all;
  import from LibSip_Interface all;

  // LibIms
  import from LibIms_SIPTypesAndValues all;
  import from LibIms_Steps all;
  import from LibIms_Templates all;
  import from LibIms_Interface all;

  // LibNg112
  import from LibNg112_TypesAndValues all;
  import from LibNg112_Templates all;
@@ -90,6 +103,7 @@ module AtsECRF_TestCases {
  import from LibNg112_Steps all;
  import from LibNg112_Pics all;
  import from LibNg112_Pixits all;
    import from LibNg112_SubscriptionPayloads all;

  // AtsECRF
  import from AtsECRF_Pics all;
@@ -1122,4 +1136,336 @@ module AtsECRF_TestCases {

  }

  group Subscriptions {

   /**
     * @desc "IUT responds to SIP Subscribe for Element State with an 200 OK"
     */
    testcase TC_ECRF_SIP_BV_01() runs on HttpSipComponent system TestAdapter {             
        // Local variables        
        var NOTIFY_Request v_msg_recv;
        var CSeq v_cSeq_s := {
          fieldName := CSEQ_E,
          seqNumber := 0,
          method := "SUBSCRIBE"
        };

        var SipUrl v_subscription_target :=  f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE);

      f_check_statements({
        { name := "PICS_ECRF_SIP_ELEMENT_STATE", val := PICS_ECRF_SIP_ELEMENT_STATE }        
      })
        
        // Test component configuration              
        f_cf_01_up();                          
        f_init_userprofile(c_userProfile_ESINetSubscriber);        
        f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF);
        
        // Preamble         
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));                                
        template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event(
          v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
        );
       
        f_SendSUBSCRIBE(request);
                
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);

        // Test Body
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));                        
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); 
                      
        var ElementStatePayload v_elementStatePayload;
        f_decodeElementState(v_msg_recv, v_elementStatePayload);
                
        if (match(v_elementStatePayload, mw_element_state_payload)) {
          f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        } else {
          log(match(v_elementStatePayload, mw_element_state_payload));
          f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
        }
        
        // Postamble
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));        
        f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event(
                                                            v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
                                                          )
        );
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); 
        
        f_cf_01_down();
    } // End of testcase TC_ECRF_SIP_BV_01


    /**
     * @desc "IUT responds to a SIP "Unsubscribe" for elementState event package with an 200 OK and NOTIFY" 
     */
    testcase TC_ECRF_SIP_BV_02() runs on HttpSipComponent system TestAdapter {             
        // Local variables        
        var NOTIFY_Request v_msg_recv;
        var CSeq v_cSeq_s := {
          fieldName := CSEQ_E,
          seqNumber := 0,
          method := "SUBSCRIBE"
        };

        var SipUrl v_subscription_target :=  f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE);

      f_check_statements({
        { name := "PICS_ECRF_SIP_ELEMENT_STATE", val := PICS_ECRF_SIP_ELEMENT_STATE }        
      })
        
        // Test component configuration              
        f_cf_01_up();                          
        f_init_userprofile(c_userProfile_ESINetSubscriber);        
        f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF);
        
        // Preamble         
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));                                
        template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event(
          v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
        );

        f_SendSUBSCRIBE(request);        
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));                        
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); 
        
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);                                  

        // Test Body        
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));        
        f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event(
                                                            v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
                                                          )
        );
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); 

        // Postamble
        f_cf_01_down();
    } // End of testcase TC_ECRF_SIP_BV_05


    /**
     * @desc "IUT responds to SIP Subscribe for Security Posture"
     */
    testcase TC_ECRF_SIP_BV_03() runs on HttpSipComponent system TestAdapter {             
        // Local variables        
        var NOTIFY_Request v_msg_recv;
        var CSeq v_cSeq_s := {
          fieldName := CSEQ_E,
          seqNumber := 0,
          method := "SUBSCRIBE"
        };

        var SipUrl v_subscription_target :=  f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE);

        // Test control
        f_check_statements({
        { name := "PICS_ECRF_SIP_SECURITY_POSTURE", val := PICS_ECRF_SIP_SECURITY_POSTURE }        
        })
        
        // Test component configuration              
        f_cf_01_up();                          
        f_init_userprofile(c_userProfile_ESINetSubscriber);        
        f_init_interfaceprofile(c_interfaceProfile_SUT_LIS);
        
        // Preamble         
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));                                
        template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event(
          v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
        );

        f_SendSUBSCRIBE(request);
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);

        // Test Body
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));                        
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); 
                      
        var SecurityPosturePayload v_securityPosturePayload;
        f_decodeSecurityPosture(v_msg_recv, v_securityPosturePayload);
                
        if (match(v_securityPosturePayload, mw_security_posture_payload())) {
          f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        } else {
          log(match(v_securityPosturePayload, mw_security_posture_payload()));
          f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
        }
        
        // Postamble
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));        
        f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event(
                                                            v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
                                                          )
        );
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); 

        f_cf_01_down();
    } // End of testcase TC_ECRF_SIP_BV_03


    /**
     * @desc "IUT responds to SIP Unsubscribe for Security Posture"
     */
    testcase TC_ECRF_SIP_BV_04() runs on HttpSipComponent system TestAdapter {             
     // Local variables        
        var NOTIFY_Request v_msg_recv;
        var CSeq v_cSeq_s := {
          fieldName := CSEQ_E,
          seqNumber := 0,
          method := "SUBSCRIBE"
        };

        var SipUrl v_subscription_target :=  f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE);

        // Test control
        f_check_statements({
          { name := "PICS_ECRF_SIP_SECURITY_POSTURE", val := PICS_ECRF_SIP_SECURITY_POSTURE }        
        })
        
        // Test component configuration              
        f_cf_01_up();                          
        f_init_userprofile(c_userProfile_ESINetSubscriber);        
        f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF);
        
        // Preamble         
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));                                
        template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event(
          v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
        );

        f_SendSUBSCRIBE(request);        
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));                        
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); 
        
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);                                  

        // Test Body        
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));        
        f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event(
                                                            v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
                                                          )
        );
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); 

        // Postamble
        f_cf_01_down();
    } // End of testcase TC_ECRF_SIP_BV_04


    /**
     * @desc "IUT responds to SIP Subscribe for ServiceState"
     */
    testcase TC_ECRF_SIP_BV_05() runs on HttpSipComponent system TestAdapter {             
        // Local variables        
        var NOTIFY_Request v_msg_recv;
        var CSeq v_cSeq_s := {
          fieldName := CSEQ_E,
          seqNumber := 0,
          method := "SUBSCRIBE"
        };

        var SipUrl v_subscription_target :=  f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE);

        // Test control        
        f_check_statements({
          { name := "PICS_ECRF_SIP_SERVICE_STATE", val := PICS_ECRF_SIP_SERVICE_STATE }        
        })
        
        // Test component configuration              
        f_cf_01_up();                          
        f_init_userprofile(c_userProfile_ESINetSubscriber);        
        f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF);
        
        // Preamble         
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));                                
        template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event(
          v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
        );

        f_SendSUBSCRIBE(request);
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);

        // Test Body
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));                        
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); 
                      
        var ServiceStatePayload v_serviceStatePayload;
        f_decodeServiceState(v_msg_recv, v_serviceStatePayload);
                
        if (match(v_serviceStatePayload, mw_service_state_payload)) {
          f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        } else {
          log(match(v_serviceStatePayload, mw_service_state_payload));
          f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
        }
        
        // Postamble
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));        
        f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event(
                                                            v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
                                                          )
        );
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); 

        f_cf_01_down();
    } // End of testcase TC_ECRF_SIP_BV_05


   /**
     * @desc "IUT responds to SIP Unsubscribe for ServiceState"
     */
    testcase TC_ECRF_SIP_BV_06() runs on HttpSipComponent system TestAdapter {             
     // Local variables        
        var NOTIFY_Request v_msg_recv;
        var CSeq v_cSeq_s := {
          fieldName := CSEQ_E,
          seqNumber := 0,
          method := "SUBSCRIBE"
        };

        var SipUrl v_subscription_target :=  f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE);

        // Test control        
        f_check_statements({
          { name := "PICS_ECRF_SIP_SERVICE_STATE", val := PICS_ECRF_SIP_SERVICE_STATE }        
        })
        
        // Test component configuration              
        f_cf_01_up();                          
        f_init_userprofile(c_userProfile_ESINetSubscriber);        
        f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF);
        
        // Preamble         
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));                                
        template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event(
          v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
        );

        f_SendSUBSCRIBE(request);        
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));                        
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); 
        
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);                                  

        // Test Body        
        LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER));        
        f_SendSUBSCRIBE(m_UNSUBSCRIBE_ServiceState_Request_Event(
                                                            v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit
                                                          )
        );
        f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
        f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); 

        // Postamble
        f_cf_01_down();
    } // End of testcase TC_ECRF_SIP_BV_09

  }

} // End of module AtsECRF_TestCases 
+15 −0
Original line number Diff line number Diff line
@@ -515,6 +515,21 @@ module LibNg112_Pixits {
      modulepar charstring  PX_SUT_LIS_SIP_HOME_DOMAIN := "esinet.io";
    }

     group SUT_ECRF {

      /** @desc charstring for SUT - LIS IP address to exchange SIP messages
       */
      modulepar charstring  PX_SUT_ECRF_SIP_IPADDR := "172.31.10.8";

      /** @desc	integer for SUT - LIS port number to exchange SIP messages
       */
      modulepar integer	  PX_SUT_ECRF_SIP_PORT := 5060;
	
      /** @desc	charstring for SUT/LIS domain
       */
      modulepar charstring  PX_SUT_ECRF_SIP_HOME_DOMAIN := "esinet.io";
    }
    
  } // End og grup sut

  group ts_ue1 {
+7 −10
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ module LibNg112_Steps {
      const integer c_interfaceProfile_IMS_SUT_ECSCF  := 117; 		// Mw interface at E-CSCF located in SUT
      const integer c_interfaceProfile_IMS_SUT_BCF    := 118;          // SIP interface at BCF located in SUT
      const integer c_interfaceProfile_SUT_LIS        := 119;
      const integer c_interfaceProfile_SUT_ECRF       := 120;

      // number of conference profile
      const integer c_conferenceProfile_factoryURI := 800;			// conference factory URI
@@ -121,15 +122,6 @@ module LibNg112_Steps {
    } // End of function f_init_userprofile
    
    function f_initSipUrlFromCharstring(charstring p_uri) return SipUrl {
      // var charstring v_scheme := regexp(p_uri, charstring:"([a-zA-Z]+):?+", 0);
      // var charstring v_user   := regexp(p_uri, charstring:"([a-zA-Z]+):([a-zA-Z0-9]+)@([a-zA-Z0-9.]+)(:([0-9]+))?", 1);
      // var charstring v_host   := regexp(p_uri, charstring:"([a-zA-Z]+):([a-zA-Z0-9]+)@([a-zA-Z0-9.]+)(:([0-9]+))?", 2);
      
      
      // var charstring v_scheme := regexp(p_uri, charstring:"([a-zA-Z]+):?+", 0);
      // var charstring v_user   := regexp(p_uri, pattern "(sips?):([^@]+)@([^:]+):?(.+)", 1);
      // var template charstring v_uri_pattern := "(http[s]#(0,1))://([^/\\s]+)/(?+)";

      var charstring v_scheme     := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@?+", 0);
      var charstring v_user       := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@?+", 1);
      var charstring v_host_port  := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@(?+)", 2);
@@ -302,6 +294,11 @@ module LibNg112_Steps {
               vc_interfaceprofile.SUTPort := PX_SUT_LIS_SIP_PORT;
               vc_interfaceprofile.SUTIpaddr := PX_SUT_LIS_SIP_IPADDR;		
               vc_interfaceprofile.SUTHomeDomain := PX_SUT_LIS_SIP_HOME_DOMAIN;
              }
              case (c_interfaceProfile_SUT_ECRF) { //variant c_interfaceProfile_SUT_ECRF
               vc_interfaceprofile.SUTPort := PX_SUT_ECRF_SIP_PORT;
               vc_interfaceprofile.SUTIpaddr := PX_SUT_ECRF_SIP_IPADDR;		
               vc_interfaceprofile.SUTHomeDomain := PX_SUT_ECRF_SIP_HOME_DOMAIN;
              }                  
			}
    } // End of function f_init_interfaceprofile