AtsMec_ApplicationPackageLifecycleAndOperationGrantingAPI_TestCases.ttcn 142 KB
Newer Older
/**
*    @Author   ETSI / STF569 / TTF012
*    @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 010-2 V2.2.1
*/
module AtsMec_ApplicationPackageLifecycleAndOperationGrantingAPI_TestCases {

  // JSON
  import from JSON all;

  // 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_ApplicationPackageLifecycleAndOperationGrantingAPI
  import from ApplicationPackageLifecycleAndOperationGrantingAPI_Templates all;
  import from ApplicationPackageLifecycleAndOperationGrantingAPI_Pics all;
  import from ApplicationPackageLifecycleAndOperationGrantingAPI_Pixits all;

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

    
    /**
     * @desc Check that MEO sends a synchronous grant response when a grant request is requested - INSTANTIATE
     */
    testcase TC_MEC_MEC010p2_MEO_GRANT_001_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_post(
                                                       PICS_ROOT_API & PX_MEO_GRANT_URI,
                                                       v_headers,
                                                       m_http_message_body_json(
                                                                                m_body_json_grant_request(
                                                                                                          m_grant_request(
                                                                                                                          PX_APP_INSTANCE_ID,
                                                                                                                          PX_APP_LCM_OP_OCC_ID,
                                                                                                                          PX_APP_ID,
                                                                                                                          INSTANTIATE,
                                                                                                                          m_grant_request_link(
                                                                                                                                               m_link_type(""), // TODO
                                                                                                                                               m_link_type("")  // TODO
                    )))))));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                                mw_http_response(
                                                 mw_http_response_201_created(
                                                                              mw_http_message_body_json(
                                                                                                        mw_body_json_grant_response(
                                                                                                                                    mw_grant
                                ))))) -> value v_response {
          tc_ac.stop;
          
          if (f_check_headers(valueof(v_response.response.header)) == false) {
            log("*** " & testcasename() & ": FAIL: Header 'Location' was not present in the response headers ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
          } else {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a Grant Response ***");
            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 TC_MEC_MEC010p2_MEO_GRANT_001_OK

    /**
     * @desc Check that MEO responds with an error when it receives a malformed request when a new grant request is performed
     */
    testcase TC_MEC_MEC010p2_MEO_GRANT_001_BR() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_post(
                                                       PICS_ROOT_API & PX_MEO_GRANT_URI,
                                                       v_headers,
                                                       m_http_message_body_json(
                                                                                m_body_json_grant_request(
                                                                                                          m_grant_request(
                                                                                                                          PX_APP_INSTANCE_ID,
                                                                                                                          PX_APP_LCM_OP_OCC_ID,
                                                                                                                          PX_APP_ID,
                                                                                                                          INVALID_OPERATE,
                                                                                                                          m_grant_request_link(
                                                                                                                                               m_link_type(""), // TODO
                                                                                                                                               m_link_type("")  // TODO
                    )))))));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
          [] httpPort.receive(
                              mw_http_response(
                                               mw_http_response_400_bad_request(
                                               ))) {
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a Bad response ***");
          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 TC_MEC_MEC010p2_MEO_GRANT_001_BR  

    /**
     * @desc Check that MEO sends a synchronous grant response when a grant request is requested
     */
    testcase TC_MEC_MEC010p2_MEO_GRANT_002_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_post(
                                                       PICS_ROOT_API & PX_MEO_GRANT_URI,
                                                       v_headers,
                                                       m_http_message_body_json(
                                                                                m_body_json_grant_request(
                                                                                                          m_grant_request(
                                                                                                                          PX_APP_INSTANCE_ID,
                                                                                                                          PX_APP_LCM_OP_OCC_ID,
                                                                                                                          PX_APP_ID,
                                                                                                                          PX_APP_OPERATION,
                                                                                                                          m_grant_request_link(
                                                                                                                                               m_link_type(""), // TODO
                                                                                                                                               m_link_type("")  // TODO
                    )))))));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                                mw_http_response(
                                                 mw_http_response_201_created(
                                                                              mw_http_message_body_json(
                                                                                                        mw_body_json_grant_response(
                                                                                                                                    mw_grant
                                ))))) -> value v_response {
          tc_ac.stop;
          
          if (f_check_headers(valueof(v_response.response.header)) == false) {
            log("*** " & testcasename() & ": FAIL: Header 'Location' was not present in the response headers ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
          } else {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a Grant Response ***");
            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 TC_MEC_MEC010p2_MEO_GRANT_002_OK

    /**
     * @desc Check that MEO sends a asynchronous grant response when a grant request is requested - INSTANTIATE
     */
    testcase TC_MEC_MEC010p2_MEO_GRANT_003_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response_1;
      var HttpMessage v_response_2;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_post(
                                                       PICS_ROOT_API & PX_MEO_GRANT_URI & oct2char(unichar2oct(PX_GRANTING_ID, "UTF-8")),
                                                       v_headers,
                                                       m_http_message_body_json(
                                                                                m_body_json_grant_request(
                                                                                                          m_grant_request(
                                                                                                                          PX_APP_INSTANCE_ID,
                                                                                                                          PX_APP_LCM_OP_OCC_ID,
                                                                                                                          PX_APP_ID,
                                                                                                                          PX_APP_OPERATION,
                                                                                                                          m_grant_request_link(
                                                                                                                                               m_link_type(""), // TODO
                                                                                                                                               m_link_type("")  // TODO
                    )))))));
      f_selfOrClientSyncAndVerdict(c_prDone, e_success);

      // Test Body
      tc_ac.start;
      alt {
        [] httpPort.receive(
                            mw_http_response(
                                             mw_http_response_202_accepted
                            )) -> value v_response_1 {
          tc_ac.stop;

          if (f_check_headers(valueof(v_response_1.response.header)) == false) {
            log("*** " & testcasename() & ": FAIL: Header 'Location' was not present in the response headers ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
          } else {
            repeat;
          }
        }
        [] httpPort.receive(
                            mw_http_response(
                                             mw_http_response_201_created(
                                                                          mw_http_message_body_json(
                                                                                                    mw_body_json_grant_response(
                                                                                                                                mw_grant
                                ))))) -> value v_response_2 {
          tc_ac.stop;
          
          if (not(isbound(v_response_1)) or f_check_headers(valueof(v_response_2.response.header)) == false) {
            log("*** " & testcasename() & ": FAIL: Didn't receive 202 accepted or Header 'Location' was not present in the response headers ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
          } else {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a Grant Response ***");
            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 TC_MEC_MEC010p2_MEO_GRANT_003_OK

    /**
     * @desc Check that MEO sends the status of a grant request when a query on a granting ID is performed
    testcase TC_MEC_MEC010p2_MEO_GRANT_004_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_MEO_GRANT_URI & oct2char(unichar2oct(PX_GRANTING_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_ok(
                                                                 mw_http_message_body_json(
                                                                                           mw_body_json_grant_response(
                                                                                                                       mw_grant(
                                                                                                                                PX_APP_INSTANCE_ID
                            )))))) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 202 accepted status code ***");
          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 TC_MEC_MEC010p2_MEO_GRANT_004_OK

    /**
     * @desc Check that MEO sends the status of a grant request when a query on a granting ID is performed
     */
    testcase TC_MEC_MEC010p2_MEO_GRANT_005_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_MEO_GRANT_URI & oct2char(unichar2oct(PX_GRANTING_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_202_accepted
                            )) -> value v_response {
           repeat;
        }
        [] httpPort.receive(
                            mw_http_response(
                                             mw_http_response_ok(
                                                                 mw_http_message_body_json(
                                                                                           mw_body_json_grant_response(
                                                                                                                       mw_grant(
                                                                                                                                PX_APP_INSTANCE_ID
          tc_ac.stop;

          if (isbound(v_response)) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 202 accepted status code ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
          } else {
            log("*** " & testcasename() & ": FAIL: IUT successfully didn't respond with a 202 accepted status code ***");
            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 TC_MEC_MEC010p2_MEO_GRANT_005_OK

    /**
     * @desc Check that MEO sends the status of a grant request when a query on a granting ID is performed
     */
    testcase TC_MEC_MEC010p2_MEO_GRANT_006_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_MEO_GRANT_URI & oct2char(unichar2oct(PX_GRANTING_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_ok(
                                                                 mw_http_message_body_json(
                                                                                           mw_body_json_grant_response(
                                                                                                                       mw_grant(
                                                                                                                                PX_APP_INSTANCE_ID
          tc_ac.stop;

          if (isbound(v_response)) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 202 accepted status code ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
          } else {
            log("*** " & testcasename() & ": FAIL: IUT successfully didn't respond with a 202 accepted status code ***");
            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 TC_MEC_MEC010p2_MEO_GRANT_006_OK
     * @desc Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID
    testcase TC_MEC_MEC010p2_MEO_GRANT_006_NF() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;

      // Test control
      if (not(PICS_GRANTS_MANAGEMENT)){
        log("*** " & testcasename() & ": PICS_GRANTS_MANAGEMENT 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_MEO_GRANT_URI & oct2char(unichar2oct(PX_NON_EXISTANT_GRANTING_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_404_not_found
                            )) {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with a not found status code ***");
          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 TC_MEC_MEC010p2_MEO_GRANT_006_NF  

  } // End of group granting

  group meo_pkgmgt {
    
    /**
     * @desc Check that MEO creates a new App Package when requested
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_001_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_post(
                                                       PICS_ROOT_API & PX_MEO_PKGM_URI,
                                                       v_headers,
                                                       m_http_message_body_json(
                                                                                m_body_json_create_package_management(
                                                                                                                      m_create_package_management(
                                                                                                                                                  PX_APP_PKG_VERSION,
                                                                                                                                                  m_checksum(-, PX_CHECKSUM),
                                                                                                                                                  PX_APP_PKG_PATH
                     ))))));

      f_selfOrClientSyncAndVerdict(c_prDone, e_success);

      // Test Body
      tc_ac.start;
      alt {
        [] httpPort.receive(
                            mw_http_response(
                                             mw_http_response_201_created(
                                                                           mw_http_message_body_json(
                                                                                                     mw_body_json_app_pkg_info(
                                                                                                                               mw_app_pkg_info/*(
                                                                                                                                           -,
                                                                                                                                           PX_APP_PKG_NAME,
                                                                                                                                           PX_APP_PKG_VERSION, 
                                                                                                                                           mw_checksum, 
                                                                                                                                           PX_OPERATIONAL_STATE, 
                                                                                                                                           PX_USAGE_STATE
                            )*/
                            ))))) -> value v_response {
          tc_ac.stop;

          // TODO Chek Location header

          log("*** " & testcasename() & ": PASS: IUT successfully responds with an App Package ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_001_OK
    
    /**
     * @desc Check that MEO creates a new App Package when requested
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_001_BR() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_post(
                                                       PICS_ROOT_API & PX_MEO_PKGM_URI,
                                                       v_headers,
                                                       m_http_message_body_json(
                                                                                m_body_json_create_package_management(
                                                                                                                      m_create_package_management(
                                                                                                                                                  "",
                                                                                                                                                  PX_APP_PKG_VERSION,
                                                                                                                                                  m_checksum(-, PX_CHECKSUM),
                                                                                                                                                  PX_APP_PKG_PATH
                     ))))));

      f_selfOrClientSyncAndVerdict(c_prDone, e_success);

      // Test Body
      tc_ac.start;
      alt {
        [] httpPort.receive(
                            mw_http_response(
                                             mw_http_response_400_bad_request
                            )) {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with a correct error code ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_001_BR
    
    /**
     * @desc Check that MEO returns the list of App Packages when requested - Note 3
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_002_01_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_MEO_PKGM_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_pkg_info_list
                            )))) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with an App Package list ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_002_01_OK
    
    /**
     * @desc Check that MEO returns the list of App Packages when requested - Note 3
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_002_02_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_MEO_PKGM_URI_ONBOARDED,
                                                       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_pkg_info_list
                            )))) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with an App Package list ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_002_02_OK
    
    /**
     * @desc Check that MEO responds with an error when it receives 
     *       a malformed request for retrieving the list of existing App Packages
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_002_BR() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_MEO_PKGM_URI & "?filter()",
                                                      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
                            )) {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with a correct error code ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_002_BR
    
    /**
     * @desc Check that MEO returns the an App Package when requested - Note 3
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_003_01_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_MEO_PKGM_URI & "/" & oct2char(unichar2oct(PX_APP_PKG_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_ok(
                                                                 mw_http_message_body_json(
                                                                                           mw_body_json_app_pkg_info(
                                                                                                                     mw_app_pkg_info(
                                                                                                                                     PX_APP_PKG_ID
                            )))))) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with an App Package ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_003_01_OK
    
    /**
     * @desc Check that MEO returns the an App Package when requested - Note 3
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_003_02_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_MEO_PKGM_URI_ONBOARDED & "/" & oct2char(unichar2oct(PX_ON_BOARDED_APP_PKG_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_ok(
                                                                 mw_http_message_body_json(
                                                                                           mw_body_json_app_pkg_info(
                                                                                                                     mw_app_pkg_info(
                                                                                                                                     PX_APP_PKG_ID
                            )))))) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with an App Package ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_003_02_OK
    
    /**
     * @desc Check that MEO responds with an error when it receives 
     *       a request for retrieving a App Package referred with a wrong ID
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_003_NF() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_MEO_PKGM_URI_ONBOARDED & "/" & oct2char(unichar2oct(PX_ON_BOARDED_APP_PKG_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_404_not_found
                            )) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with a correct error code ***");
          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 TC_MEC_MEC010p2_MEO_PKGM_003_NF
    
    /**
     * @desc Check that MEO deletes an App Package when requested
     */
    testcase TC_MEC_MEC010p2_MEO_PKGM_004_OK() runs on HttpComponent system HttpTestAdapter {
      // Local variables
      var Headers v_headers;
      var HttpMessage v_response;

      // Test control
      if (not(PICS_APP_PACKAGE_MANAGEMENT)){
          log("*** " & testcasename() & ": PICS_APP_PACKAGE_MANAGEMENT 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_delete(
                                                         PICS_ROOT_API & PX_MEO_PKGM_URI & "/" & oct2char(unichar2oct(PX_APP_PKG_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_204_no_content
                            )) -> value v_response {
          tc_ac.stop;

          log("*** " & testcasename() & ": PASS: IUT successfully responds with an App Package ***");
          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