AtsMec_Ams_TestCases.ttcn 7.56 KB
Newer Older
Elian Kraja's avatar
Elian Kraja committed
/**
*    @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 003, Draft ETSI GS MEC 013 V2.0.3 (2018-10)
*/
module AtsMec_Ams_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_LocationAPI
import from Ams_Templates all;
import from Ams_Pics all;
import from Ams_Pixits all;

// LibMec
import from LibMec_Functions all;
import from LibMec_Pics all;
import from LibMec_Pixits all;

  group appMobilityServices {

    testcase TP_MEC_SRV_AMS_001_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var HeaderLines v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
        log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
        setverdict(inconc);
        stop;
      // Test component configuration
      f_cf_01_http_up();

      // Preamble
      f_init_default_headers_list(-, -, v_headers);
      httpPort.send(
                    m_http_request(
                                   m_http_request_get(
                                                      "/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
                                                      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_app_mobility_service_info(
                                                                                                                                  mw_app_mobility_service_info(
                                                                                                                                                               {
                                                                                                                                                                 mw_app_mobility_registration_info(
                                                                                                                                                                                                   mw_service_consumer_id(
                                                                                                                                                                                                                          PX_APP_INS_ID,
                                                                                                                                                                                                                          PX_MEP_ID
                                                                                                                                                                                                                          )
                                                                                                                                                                                                   )
                                                                                                                                                                 }
                            )))))) -> value v_response {
          tc_ac.stop;
          
          if (f_check_headers(v_response.response.header) == true) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppTerminationNotificationSubscription ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
          } else {
            log("*** " & testcasename() & ": FAIL: Header 'Location' was not present in the response headers ***");
            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
    } // End of testcase TP_MEC_SRV_AMS_001_OK

    testcase TP_MEC_SRV_AMS_001_BR() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var HeaderLines v_headers;

      // Test control
      if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
        log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
        setverdict(inconc);
        stop;
      // Test component configuration
      f_cf_01_http_up();

      // Preamble
      f_init_default_headers_list(-, -, v_headers);
      httpPort.send(
                    m_http_request(
                                   m_http_request_get(
                                                      "/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & "?appMobilityService=" & oct2char(unichar2oct(PX_APP_MOBILITY_SERVICE_ID, "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_ams_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

    }  // End of testcase TP_MEC_SRV_AMS_001_BR
  } // End of group ams_notifications 
Elian Kraja's avatar
Elian Kraja committed

} // End of module AtsMec_Ams_TestCases