/** * @author ETSI / STF569 * @version $URL:$ * $ID:$ * @desc This module provides the MEC test cases. * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * @see ETSI GS MEC 014 */ module AtsMec_UEidentityAPI_TestCases { // Libcommon import from LibCommon_Sync all; // LibHttp import from LibItsHttp_TypesAndValues all; import from LibItsHttp_Functions all; import from LibItsHttp_Templates all; import from LibItsHttp_JsonTemplates all; import from LibItsHttp_TestSystem all; // LibMec_UEidentityAPI import from UEidentityAPI_Templates all; import from UEidentityAPI_Pics all; import from UEidentityAPI_Pixits all; // LibMec import from LibMec_Functions all; import from LibMec_Pics all; import from LibMec_Pixits all; group ueTag { /** * @desc Check that the IUT responds with the information on a UE Identity tag when queried by a MEC Application * @see https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/UETAG/PlatUeIdentity.tplan2 */ testcase TC_MEC_SRV_UETAG_001_OK() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; // Test control if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_UE_IDENTITY_API_SUPPORTED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_init_default_headers_list(-, -, v_headers); httpPort.send( m_http_request( m_http_request_get( "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info?ueIdentityTag=" & oct2char(unichar2oct(PX_UE_IDENTITY_TAG, "UTF-8")), v_headers ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_response( mw_http_response_ok( mw_http_message_body_json( mw_body_json_ue_identity_tag_info( mw_ue_identity_tag_info( { *, mw_ue_identity_tag_item(PX_UE_IDENTITY_TAG), * } )))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a UeIdentityTag ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_UETAG_001_OK /** * @desc Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 */ testcase TC_MEC_SRV_UETAG_001_BR() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; // Test control if (not(PICS_MEC_PLAT) or not (PICS_SERVICES) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_init_default_headers_list(-, -, v_headers); httpPort.send( m_http_request( m_http_request_get( "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/invalid/ue_identity_tag_info?ueIdentityTag=" & oct2char(unichar2oct(PX_UE_IDENTITY_TAG, "UTF-8")), v_headers ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_response( mw_http_response_400_bad_request( mw_http_message_body_json( mw_body_json_ue_identity_problem_details( mw_problem_details( -, -, 400 )))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_UETAG_001_BR /** * @desc Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 */ testcase TC_MEC_SRV_UETAG_001_NF() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; // Test control if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_init_default_headers_list(-, -, v_headers); httpPort.send( m_http_request( m_http_request_get( "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_NON_EXISTENT_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info?ueIdentityTag=" & oct2char(unichar2oct(PX_UE_IDENTITY_TAG, "UTF-8")), v_headers ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_response( mw_http_response_404_not_found( mw_http_message_body_json( mw_body_json_ue_identity_problem_details( mw_problem_details( -, -, 404 )))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 404 Not Found ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_UETAG_001_NF /** * @desc Check that the IUT registers a tag (representing a UE) or a list of tags when commanded by a MEC Application * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 */ testcase TC_MEC_SRV_UETAG_002_OK() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; // Test control if (not(PICS_MEC_PLAT) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_init_default_headers_list(-, -, v_headers); // Verify that the user is not register yet if (f_check_user_register_state(-, v_headers) != 0) { log("*** " & testcasename() & ": INCONC: Wrong initial conditions ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } httpPort.send( m_http_request( m_http_request_put( "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info", v_headers, m_http_message_body_json( m_body_json_ue_identity_tag_info( m_ue_identity_tag_info( { m_ue_identity_tag_item( PX_UE_IDENTITY_TAG, REGISTERED ) } ) ) ) ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_response( mw_http_response_ok( mw_http_message_body_json( mw_body_json_ue_identity_tag_info( mw_ue_identity_tag_info( { *, mw_ue_identity_tag_item(PX_UE_IDENTITY_TAG, REGISTERED), * } )))))) { tc_ac.stop; if (f_check_user_register_state(-, v_headers) == 1) { log("*** " & testcasename() & ": PASS: IUT successfully registered the tag ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: The tag was not registered ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_UETAG_002_OK /** * @desc Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 */ testcase TC_MEC_SRV_UETAG_002_BR() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; // Test control if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_init_default_headers_list(-, -, v_headers); // Verify that the user is not register yet if (f_check_user_register_state(-, v_headers) == -1) { log("*** " & testcasename() & ": INCONC: Wrong initial conditions ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } httpPort.send( m_http_request( m_http_request_put( "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info", v_headers, m_http_message_body_json( m_body_json_ue_identity_tag_info( m_ue_identity_tag_info( { m_ue_identity_tag_item( PX_UE_IDENTITY_TAG, INVALID_STATE ) } ) ) ) ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_response( mw_http_response_400_bad_request/*( mw_http_message_body_json( mw_body_json_ue_identity_problem_details( mw_problem_details( -, -, 400 ))))*/)) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 403 Forbidden ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_UETAG_002_BR /** * @desc Check that the IUT responds with ProblemDetails on information an invalid URI * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 */ testcase TC_MEC_SRV_UETAG_002_PF() runs on HttpComponent system HttpTestAdapter { // FIXME Which IE protocol should be invalid? // Local variables var HeaderLines v_headers; // Test control if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_init_default_headers_list(-, -, v_headers); httpPort.send( m_http_request( m_http_request_put( "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info", v_headers, m_http_message_body_json( m_body_json_ue_identity_tag_info( m_ue_identity_tag_info( { m_ue_identity_tag_item( PX_UE_IDENTITY_TAG_INVALID_STATE, UNREGISTERED ) } ) ) ) ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_response( mw_http_response_412_precondition_failed( mw_http_message_body_json( mw_body_json_ue_identity_problem_details( mw_problem_details( -, -, 412 )))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 412 Precondition Failed ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_UETAG_002_PF // /** // * @desc Check that the IUT deregisters a tag (representing a UE) or a list of tags when commanded by a MEC Application // * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 // */ // testcase TC_MEC_PLAT_UETAG_003_OK() runs on HttpComponent system HttpTestAdapter { // // Local variables // var HeaderLines v_headers; // // // Test control // if (not(PICS_MEC_PLAT) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { // log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); // setverdict(inconc); // stop; // } // // // Test component configuration // f_cf_01_http_up(); // // // Test adapter configuration // // // Preamble // f_init_default_headers_list(-, -, v_headers); // // Verify that the user is not register yet // if (f_check_user_register_state(-, v_headers) != 1) { // log("*** " & testcasename() & ": INCONC: Wrong initial conditions ***"); // f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // } // httpPort.send( // m_http_request( // m_http_request_post( // "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info", // v_headers, // m_http_message_body_json( // m_body_json_ue_identity_tag_info( // m_ue_identity_tag_info( // { // m_ue_identity_tag_item( // PX_UE_IDENTITY_TAG, // UNREGISTERED // ) // } // ) // ) // ) // ) // ) // ); // f_selfOrClientSyncAndVerdict(c_prDone, e_success); // // // Test Body // tc_ac.start; // alt { // [] httpPort.receive( // mw_http_response( // mw_http_response_ok( // mw_http_message_body_json( // mw_body_json_ue_identity_tag_info( // mw_ue_identity_tag_info( // { *, mw_ue_identity_tag_item(PX_UE_IDENTITY_TAG, UNREGISTERED), * } // )))))) { // if (f_check_user_register_state(-, v_headers) == 0) { // log("*** " & testcasename() & ": PASS: IUT successfully unregistered the tag ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // } else { // log("*** " & testcasename() & ": FAIL: The tag was not unregistered ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // } // } // [] tc_ac.timeout { // log("*** " & testcasename() & ": INCONC: Expected message not received ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); // } // } // End of 'alt' statement // // // Postamble // f_cf_01_http_down(); // } // End of testcase TC_MEC_PLAT_UETAG_003_OK // // /** // * @desc Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application // * @see https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UeIdentity/PlatUeIdentity.tplan2 // */ // testcase TC_MEC_PLAT_UETAG_005_BI() runs on HttpComponent system HttpTestAdapter { // // Local variables // var HeaderLines v_headers; // // // Test control // if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_UE_IDENTITY_API_SUPPORTED)) { // log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_LOCATION_API_SUPPORTED required for executing the TC ***"); // setverdict(inconc); // stop; // } // // // Test component configuration // f_cf_01_http_up(); // // // Test adapter configuration // // // Preamble // f_init_default_headers_list(-, -, v_headers); // // Verify that the user is not register yet // if (f_check_user_register_state(-, v_headers) != 1) { // log("*** " & testcasename() & ": INCONC: Wrong initial conditions ***"); // f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // } // httpPort.send( // m_http_request( // m_http_request_post( // "/" & PICS_ROOT_API & PX_ME_APP_Q_UE_IDENTITY_ID_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/ue_identity_tag_info", // v_headers, // m_http_message_body_json( // m_body_json_ue_identity_tag_info( // m_ue_identity_tag_info( // { // m_ue_identity_tag_item( // PX_UE_IDENTITY_TAG, // REGISTERED // ) // } // ) // ) // ) // ) // ) // ); // f_selfOrClientSyncAndVerdict(c_prDone, e_success); // // // Test Body // tc_ac.start; // alt { // [] httpPort.receive( // mw_http_response( // mw_http_response_400_bad_request( // mw_http_message_body_json( // mw_body_json_ue_identity_problem_details( // mw_problem_details( // -, -, 400 // )))))) { // log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // } // [] tc_ac.timeout { // log("*** " & testcasename() & ": INCONC: Expected message not received ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); // } // } // End of 'alt' statement // // // Postamble // f_cf_01_http_down(); // } // End of testcase TC_MEC_PLAT_UETAG_005_BI } // End of group ueTag } // End of module AtsMec_TestCases