/** * @author STF 370 * @version $Id: $ * @desc This module provides ATS specific test case definitions. */ module AtsImsIot_TestCases_REG { import from AtsImsIot_Behavior { function all; } import from AtsImsIot_Functions { function all; } import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} import from LibIms_UpperTester {type ImsUserInfo;} import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from AtsImsIot_TestConfiguration { const all; function all; } import from LibIot_TestInterface {type IotEquipmentUser;} import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from LibSip_SIPTypesAndValues all; /** * @desc * First time registration in a visited IMS network. * (in ETSI TS 186 011-2 V2.3.1 cause 4.5.2.1) */ testcase TC_IMS_REG_0001() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); var Response v_200OK_Step8; var Request v_Subscribe_Step10; // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 @TODO shouldn't this be EUT_A? // @TODO check mw_credentialIntegrityNo, mw_credentialIntegrityYes f_mtc_check_TP_IMS_5011_01_gm(v_gmA, true); // Check1 when f_mtc_check_TP_IMS_5011_01_ic(v_ic, true); // Check1 then f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA, false); // Check4 when (Gm) f_mtc_check_TP_IMS_5089_01_ic_when(v_ic, false); // Check4 when (Mw) f_mtc_check_TP_IMS_5089_01_ic_then(v_ic, false); // Check4 then @TODO check mw_WwwAuthenticate f_mtc_check_TP_IMS_5011_02_gm(v_gmA, true); // Check2 when (Gm) f_mtc_check_TP_IMS_5011_02_ic(v_ic, true); // Check2 then (Mw) f_mtc_check_TP_IMS_5092_01_gm(v_gmA, false); // Check5 when (Gm) f_mtc_check_TP_IMS_5092_01_ic_when(v_ic, false); // Check5 when (Mw) f_mtc_check_TP_IMS_5092_01_ic(v_ic, true); // Check5 then v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_ic_when(v_ic, false); // Check3 when f_mtc_check_TP_IMS_5044_01_ic(v_ic, v_200OK_Step8, true); // Check3 then v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_ic_when(v_ic, false); // Check6 when f_mtc_check_TP_IMS_5096_01_ic(v_ic, v_Subscribe_Step10, false); // Check6 then // Test Sequence Step 2 f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // postamble f_PO_user_home_deregistration(v_ueB); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); f_cf_adapter_down(); } /** * @desc * No response from first entry point on REGISTER with topology hiding * (TS 186 011-2 V2.3.1 cause 4.5.2.2) */ // @TODO testcase TC_IMS_REG_0002() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var Request v_Register_Step4; // why do we need this variable? var Response v_200OK_Step9; // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Test Sequence Step 1 // check no response (check1-when) -message skip (1st register) // check included in check1-then // check mw for second register request f_mtc_check_TP_IMS_5203_01_ic(v_ic); // (Check1-then) // check gm for protected register (Check2-when) // check mw for protected register (check2-when) // check mw for 200_response (check2-then) //v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_ic(v_ic); // Check2 //Step 2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble f_PO_user_home_deregistration(v_ueB); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); f_cf_adapter_down(); } /** * @desc * 403 response from first entry point on REGISTER with topology hiding * (ETSI TS 186 011-2 V2.3.1 cause 4.5.2.3) */ // @TODO testcase TC_IMS_REG_0002H() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var Request v_Register_Step4; // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); f_mtc_check_TP_IMS_5402_01_gm(v_gmA); v_Register_Step4 := f_mtc_check_TP_IMS_5402_01_ic(v_ic); // Check1 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble f_PO_user_home_deregistration(v_ueB); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); } /** * @desc * 403 response to REGISTER from an un-trusted domain without topology hiding * (ETSI TS 186 011-2 V2.3.1 cause 4.5.2.4) */ testcase TC_IMS_REG_0003() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 f_mtc_check_TP_IMS_5129_01_gm(v_gmA, false); // Check1 when (Gm) f_mtc_check_TP_IMS_5129_01_ic_when(v_ic, false); // Check1 when (Mw) f_mtc_check_TP_IMS_5129_01_ic(v_ic, false); // Check1 then f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - unsuccessful registration // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); } /** * @desc * 403 response to REGISTER from an un-trusted domain with topology hiding * (ETSI TS 186 011-2 V2.3.1 cause 4.5.2.5) */ testcase TC_IMS_REG_0003H() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 f_mtc_check_TP_IMS_5411_01_gm(v_gmA, false); // Check1 when (Gm) f_mtc_check_TP_IMS_5411_01_ic_when(v_gmA, false); //Check1 when (Mw) f_mtc_check_TP_IMS_5411_01_ic(v_ic, false); // Check1 then f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - unsuccessful registration // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); } /** * @desc IMS network supports network initiated re-registration * upon receipt of a new registration with new contact information * @see ETSI TS 186 011-2 V2.3.1 cause 4.5.2.6 */ testcase TC_IMS_REG_0004() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 f_mtc_check_TP_IMS_5088_01_gm(v_gmA, false); // Check1 when (REGISTER) f_mtc_check_TP_IMS_5088_01_ic(v_ic, false); // Check1 then (NOTIFY) f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 // postamble f_PO_user_home_deregistration(v_ueB); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); } /** * @desc IMS network can initiate user de-registration, * e.g., when a user runs out of credit * @see ETSI TS 186 011-2 V2.3.1 cause 4.5.2.7 */ testcase TC_IMS_REG_0005() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body // IMS_B is triggered manually to de-register user B // Test Sequence Step 1 manuallz // IMS_B receives a network_originated_deregistration_event // Check1 when manually f_mtc_check_TP_IMS_5093_01_UE_ic(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY f_mtc_check_TP_IMS_5093_01_IMS_ic(v_ic, false); // check1 then - 2nd NOTIFY f_mtc_userCheckNoRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 - check that user is not registered anymore (de-registration) // postamble f_PO_user_home_deregistration(v_ueB); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); } /** * @desc IMS network can initiate user re-authentication * @see ETSI TS 186 011-2 V2.3.1 cause 4.5.2.8 */ testcase TC_IMS_REG_0006() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body //IMS_B receives a network_originated_deregistration_event // Check1 when manually f_mtc_check_TP_IMS_5094_01_UE(v_ic, v_anyValidUser, false); // check1 then - 1st NOTIFY f_mtc_check_TP_IMS_5094_01_IMS(v_ic, false); // check1 then - 2nd NOTIFY f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 // postamble f_PO_user_home_deregistration(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_adapter_down(); } /** * @desc * First time registration in a visited IMS network with topology hiding. * (ETSI TS 186 011-2 V2.3.1 cause 4.5.2.9) */ // @TODO testcase TC_IMS_REG_0007() runs on ImsTestCoordinator system IotSystemInterface { // create components 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_ic := f_cf_create_monitor(c_ic); var ImsUserInfo v_anyValidUser := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_adapter_up(); f_cf_user_up(v_ueB); f_cf_roam_reg_up(v_gmA, v_ic); // test body f_mtc_userRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 1 f_mtc_check_TP_IMS_5134_01_gm(v_gmA, false); // Check1 when f_mtc_check_TP_IMS_5134_01_ic(v_ic, false); // Check1 then f_mtc_check_TP_IMS_5405_01_gm(v_gmA, false); // Check2 when f_mtc_check_TP_IMS_5405_01_ic(v_ic, false); // Check2 then // @TODO mdw_TP_IMS_5405_01_ic needs to be checked f_mtc_userCheckRegistration(v_ueB, v_anyValidUser); // Test Sequence Step 2 // postamble f_PO_user_home_deregistration(v_ueB); f_cf_roam_reg_down(v_gmA, v_ic); // unmap/disconnect component ports f_cf_user_down(v_ueB); f_cf_adapter_down(); } }