AtsImsIot_TP_behavior_CX.ttcn 33 KB
Newer Older
Bostjan Pintar's avatar
Bostjan Pintar committed
/*
 *  @author     STF 574, TTF006
 *  @version    $Id$
 *  @desc       This module provides the TP behaviour functions at CX interface
 */

module AtsImsIot_TP_behavior_CX
{

    // LibDiameter
    import from LibDiameter_Templates all;
    import from LibDiameter_TypesAndValues all;
Bostjan Pintar's avatar
Bostjan Pintar committed
    
    // LibIot
    import from LibIot_PIXITS all;
    import from LibIot_TestInterface all;
    import from LibIot_TypesAndValues all;
    import from LibIot_Functions all;
    import from LibIot_PIXITS all;
Bostjan Pintar's avatar
Bostjan Pintar committed
    
    // AtsImsIot
    import from AtsImsIot_Templates all;
    import from AtsImsIot_TypesAndValues all;
Bostjan Pintar's avatar
Bostjan Pintar committed
    import from AtsImsIot_Functions all;
    import from AtsImsIot_Diameter_Templates all;
    import from AtsImsIot_TestSystem all;
Bostjan Pintar's avatar
Bostjan Pintar committed
    
    // LibIms
    import from LibIms_UpperTester all;

group g_HSS {
    

    /**
     * Starts monitor component behavior for TP_CX_HSS_MAA_01
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a MA-Request received due to S-CSCF registration notification procedure and sends SA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isNotRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_S_CSCF_A entity sends a MAR containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *                 indicating value NO_STATE_MAINTAINED
     *             Origin_Host_AVP
     *             Origin_Realm_AVP 
     *             Destination_Realm_AVP
     *             Public_Identity_AVP
     *             User_Name_AVP
     *             Server_Name_AVP
     *             SIP_Number_Auth_Items_AVP
     *             SIP_Auth_Data_Item_AVP containing
     *                 SIP_Authentication_Scheme_AVP
     *             ;
     *         ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the MAA containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             not Experimental_Result_AVP
     *             Result_Code_AVP
     *                  indicating value DIAMETER_SUCCESS
     *             User_Name_AVP
     *             SIP_Number_Auth_Items_AVP
     *             SIP_Auth_Data_Item_AVP containing
     *                 SIP_Authentication_Scheme_AVP
     *             ;
     *         ;
     *         to the IMS_S_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_MAA_01(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            var template DIAMETER_MSG mw_diameter_msg_pass := { mAR_MSG := mw_MAR(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { mAR_MSG := mw_MAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_MAA_01 - MAR",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { mAA_MSG := mw_MAA };
            mw_diameter_msg_fail := { mAA_MSG := mw_MAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_MAA_01 - MAA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_MAA_01
    

    /**
     * Starts monitor component behavior for TP_CX_HSS_RTA_01
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a RT-Request received due to S-CSCF network de-registration notification procedure and sends RT-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_S_CSCF_A entity sends a RTR containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *                 indicating value NO_STATE_MAINTAINED
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             Destination_Host_AVP
     *             Destination_Realm_AVP
     *             User_Name_AVP
     *             Deregistration_Reason_AVP containing
     *                 Reason_Code_AVP
     *         ;;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the RTA containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             Result_Code_AVP
     *                 indicating value DIAMETER_SUCCESS
     *         ;
     *         to the IMS_S_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_RTA_01(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var template DIAMETER_MSG mw_diameter_msg_pass := { rTR_MSG := mw_RTR };
            var template DIAMETER_MSG mw_diameter_msg_fail := { rTR_MSG := mw_RTR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_RTA_01 - RTR",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { rTA_MSG := mw_RTA };
            mw_diameter_msg_fail := { rTA_MSG := mw_RTA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_RTA_01 - RTA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_RTA_01
    

    /**
     * Starts monitor component behavior for TP_CX_HSS_SAA_01
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a SA-Request received due to S-CSCF registration notification procedure and sends SA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isNotRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_S_CSCF_A entity sends a SAR containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *                 indicating value NO_STATE_MAINTAINED,
     *             Origin_Host_AVP
     *             Origin_Realm_AVP 
     *             Public_Identity_AVP
     *             not User_Name_AVP
     *             Destination_Realm_AVP
     *             Server_Name_AVP
     *             Server_Assignment_Type_AVP
     *                 indicating value UNREGISTERED_USER
     *             User_Data_Already_Available_AVP 
     *         ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the SAA containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             Result_Code_AVP
     *                 indicating value DIAMETER_SUCCESS
     *             User_Data AVP
     *             Charging_Information_AVP
     *         ;
     *         to the IMS_S_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_SAA_01(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            var template DIAMETER_MSG mw_diameter_msg_pass := { sAR_MSG := mw_SAR_Registration(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { sAR_MSG := mw_SAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_SAA_01 - SAR",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { sAA_MSG := mw_SAA_userData };
            mw_diameter_msg_fail := { sAA_MSG := mw_SAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_SAA_01 - SAA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_SAA_01
    

    /**
     * Starts monitor component behavior for TP_CX_HSS_SAA_02
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in an SA-Request received due to S-CSCF de-registration procedure and sends SA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_S_CSCF_A entity sends a SAR containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *                 indicating value NO_STATE_MAINTAINED,
     *             Origin_Host_AVP
     *             Origin_Realm_AVP 
     *             Public_Identity_AVP
     *             User_Name_AVP
     *             Destination_Realm_AVP
     *             Server_Name_AVP
     *             Server_Assignment_Type_AVP
     *                 indicating value USER_DEREGISTRATION
     *             User_Data_Already_Available_AVP 
     *         ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the SAA containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             Result_Code_AVP
     *                indicating value DIAMETER_SUCCESS
     *         ;
     *         to the IMS_S_CSCF_A entity
     *    }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_SAA_02(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            var template DIAMETER_MSG mw_diameter_msg_pass := { sAR_MSG := mw_SAR_UserDeregistration(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { sAR_MSG := mw_SAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_SAA_02 -SAR",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { sAA_MSG := mw_SAA };
            mw_diameter_msg_fail := { sAA_MSG := mw_SAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_SAA_02 - SAA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_SAA_02
    

    /**
     * Starts monitor component behavior for TP_CX_HSS_UAA_01
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to first UE initial registration and sends UA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isNotRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_I_CSCF_A entity sends a UAR containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *                 indicating value NO_STATE_MAINTAINED,
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             Public_Identity_AVP
     *             Visited_Network_Identifier_AVP
     *             User_Authorization_Type_AVP 
     *                 indicating value REGISTRATION,
     *             User_Name_AVP
     *             Destination_Host_AVP
     *             Destination_Realm_AVP
     *             UAR_Flags_AVP 
     *                 indicating value IMS_Emergency_Registration_bit_not_set
     *             ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the UAA containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *             Origin_Host_AVP
     *             Origin_Realm_AVP 
     *             not Result_Code_AVP
     *             Experimental_Result_AVP containing
     *                 Experimental_Result_Code_AVP 
     *                     indicating value DIAMETER_FIRST_REGISTRATION
     *                 ;
     *             ;
     *         to the IMS_I_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_UAA_01(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            //"sip:"&v_userInfoA.publicId&@&v_userInfoA.domain
            var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
              f_Iot_Diameter_receive(
                  {
                      mw_diameter_msg_pass
                      mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                  },
                  {0, omit},
                  "TP_CX_HSS_UAA_01 - UAR",
                  p_forward_to_mtc,
                  p_checkMessage 
              )
            );
            p_monitorCompRef.done;
        
            mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamFirstRegistration };
            mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_UAA_01 - UAA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_UAA_01

    /**
     * Starts monitor component behavior for f_mtc_check_TP_CX_HSS_ECO_UAA_01
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to first UE initial registration and sends UA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isNotRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_I_CSCF_A entity sends a UAR containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *                 indicating value NO_STATE_MAINTAINED,
     *             Origin_Host_AVP
     *             Origin_Realm_AVP
     *             Public_Identity_AVP
     *             Visited_Network_Identifier_AVP
     *             User_Authorization_Type_AVP 
     *                 indicating value REGISTRATION,
     *             User_Name_AVP
     *             Destination_Host_AVP
     *             Destination_Realm_AVP
     *             UAR_Flags_AVP 
     *                 indicating value IMS_Emergency_Registration_bit_not_set
     *             ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the UAA containing
     *             Session_ID_AVP
     *             Vendor_Specific_Application_Id_AVP
     *             Auth_Session_State_AVP
     *             Origin_Host_AVP
     *             Origin_Realm_AVP 
     *             not Result_Code_AVP
     *             Experimental_Result_AVP containing
     *                 Experimental_Result_Code_AVP 
     *                     indicating value DIAMETER_FIRST_REGISTRATION
     *                 ;
     *             ;
     *         to the IMS_I_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_ECO_UAA_01(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            //"sip:"&v_userInfoA.publicId&@&v_userInfoA.domain
            var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
            p_monitorCompRef.start (
              f_Iot_Diameter_receive(
                  {
                      mw_diameter_msg_pass
                      mw_diameter_msg_fail
                  },
                  {0, omit},
                  "TP_CX_HSS_UAA_01 - UAR",
                  p_forward_to_mtc,
                  p_checkMessage 
              )
            );
            p_monitorCompRef.done;
        
            mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamFirstRegistration };
            mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
                    },
                    {0, omit},
                    "TP_CX_HSS_UAA_01 - UAA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_ECO_UAA_01

Bostjan Pintar's avatar
Bostjan Pintar committed
    /**
     * Starts monitor component behavior for TP_CX_HSS_UAA_02
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to protected UE initial registration and sends UA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isNotRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_I_CSCF_A entity sends a UAR containing
     *             Public_Identity_AVP
     *             User_Name_AVP
     *         ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the UAA containing
     *             not Result_Code_AVP
     *             Experimental_Result_AVP containing
     *                 Experimental_Result_Code_AVP
     *                     indicating value DIAMETER_SUBSEQUENT_REGISTRATION
     *                 ;,
     *             Server_Name_AVP
     *             not Server_Capabilities_AVP
     *         ;
     *         to the IMS_I_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_UAA_02(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                {
                    mw_diameter_msg_pass
Bostjan Pintar's avatar
Bostjan Pintar committed
                {0, omit},
                "TP_CX_HSS_UAA_02 - UAR",
                p_forward_to_mtc,
                p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamSuccess/*uAA_MSG := mw_UAA_diamSubsequentRegistration*/ }; //TODO:Check TP
            mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                {
                    mw_diameter_msg_pass
                    mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                },
                {0, omit},
                "TP_CX_HSS_UAA_02 - UAA",
                p_forward_to_mtc,
                p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_UAA_02

    function f_mtc_check_TP_CX_HSS_ECO_UAA_02( // FIXME To be reviewed
                                              DiameterInterfaceMonitor p_monitorCompRef,
                                              in boolean p_checkMessage := false,
                                              in boolean p_forward_to_mtc := false
                                              ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                {
                    mw_diameter_msg_pass
                },
                {
                    mw_diameter_msg_fail
                },
                {0, omit},
                "TP_CX_HSS_UAA_02 - UAR",
                p_forward_to_mtc,
                p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamSuccess/*uAA_MSG := mw_UAA_diamSubsequentRegistration*/ }; //TODO:Check TP
            mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                {
                    mw_diameter_msg_pass
                },
                {
                    mw_diameter_msg_fail
                },
                {0, omit},
                "TP_CX_HSS_UAA_02 - UAA",
                p_forward_to_mtc,
                p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_ECO_UAA_02

Bostjan Pintar's avatar
Bostjan Pintar committed
    /**
     * Starts monitor component behavior for TP_CX_HSS_UAA_03
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "Verify that the IUT checks that the Private User Identity and the Public User Identity exists in the HSS and if not then IUT sets the appropriate experimental result code in the UA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isNotRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_I_CSCF_A entity sends a UAR containing
     *         User_Name_AVP
     *             indicating value "an unknown private user identity"
     *         Public_Identity_AVP
     *         ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the UAA containing
     *             not Result_Code_AVP
     *             Experimental_Result_AVP
     *                 Experimental_Result_Code_AVP
     *                     indicating value DIAMETER_ERROR_USER_UNKNOWN
     *             not Server_Name_AVP
     *         ;
     *         to the IMS_I_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_UAA_03(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_unknownPrivateId };
            var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_UAA_03 - UAR",
                    p_forward_to_mtc,
                    p_checkMessage )
                );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamErrorUserUnknown };
            mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_UAA_03 - UAA",
                    p_forward_to_mtc,
                    p_checkMessage )
                );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_UAA_03

    /**
     * Starts monitor component behavior for TP_CX_HSS_UAA_03
     * @param p_monitorCompRef Reference to monitor component
     * <pre>
     * Test objective  "IUT successfully processes all mandatory AVPs in a UA-Request received due to UE de-registration and sends UA-Answer."
     *
     * <pre>
     * 
     * Config Id CF_VxLTE_INT
     * 
     * Initial conditions with {
     *     the UE_A entity isRegisteredTo the IMS_A
     * }
     * 
     * ensure that {
     *     when {
     *         the IMS_I_CSCF_A entity sends a UAR containing
     *             Public_Identity_AVP
     *             User_Name_AVP
     *             User_Authentication_Type_AVP
     *                 indicating value DE_REGISTRATION
     *             Visited_Network_Identifier_AVP
     *         ;
     *         to the IMS_HSS_A entity
     *     }
     *     then {
     *         the IMS_HSS_A entity sends the UAA containing
     *             Result_Code_AVP
     *                 indicating value DIAMETER_SUCCESS
     *             Server_Name_AVP
     *             not Server_Capabilities_AVP
     *         ;
     *         to the IMS_I_CSCF_A entity
     *     }
     * }
     * </pre>
     * @see TS 103 653-1 clause 7.4
     */
    function f_mtc_check_TP_CX_HSS_UAA_04(
        DiameterInterfaceMonitor p_monitorCompRef,
        in boolean p_checkMessage := false,
        in boolean p_forward_to_mtc := false
    ) runs on ImsTestCoordinator {
        if (isvalue(p_monitorCompRef)){
            var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
            var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain;
            var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_deRegistration(mw_publicIdentity(v_publicIdentity)) };
            var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_UAA_04 - UAR",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
            
            mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamSuccess };
            mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_monitorCompRef.start (
                f_Iot_Diameter_receive(
                    {
                        mw_diameter_msg_pass
                        mw_diameter_msg_fail
Bostjan Pintar's avatar
Bostjan Pintar committed
                    },
                    {0, omit},
                    "TP_CX_HSS_UAA_04 - UAA",
                    p_forward_to_mtc,
                    p_checkMessage 
                )
            );
            p_monitorCompRef.done;
        }
    } // End of function f_mtc_check_TP_CX_HSS_UAA_04


} // end group g_HSS


} // end module AtsImsIot_TP_behavior_CX