Commit 30d3f8ad authored by Elian Kraja's avatar Elian Kraja
Browse files

Initial commit on MEC021

parent 2cade7b1
Loading
Loading
Loading
Loading
+544 −0
Original line number Diff line number Diff line
/**
*    @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 {
    var HeaderLines v_headers;
    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_service_info(PX_APP_MOBILITY_SERVICE_ID)
                  }
                )
              )
            )
          )
        )
      ) 
      {
        tc_ac.stop;

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

  }




  testcase TP_MEC_SRV_AMS_001_BR() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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

  }


  testcase TP_MEC_SRV_AMS_002_OK() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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_post(
          "/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
          v_headers,
          m_http_message_body_json(
            m_body_json_ams_registration_request(
              m_registration_request({
                  m_service_consumer_id(PX_APP_INS_IP, *),
                  *,
                  *
                }
              )
            )
          )
        )
      )
    );
    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_mobility_service_info(
                mw_app_mobility_service_info(
                  {
                    mw_registration_info({
                        mw_service_consumer_id(PX_APP_INS_ID, *),
                        *,
                        *
                      }),
                    *
                  }
                )
              )
            )
          )
        )
      ) 
      {
        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

  }


testcase TP_MEC_SRV_AMS_002_BR() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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_post(
          "/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
          v_headers,
          m_http_message_body_json(
            m_body_json_ams_registration_request(
              m_registration_request({
                  m_service_consumer(PX_APP_INS_IP, *),
                  *,
                  *
                }
              )
            )
          )
        )
      )
    );
    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 AppMobilityServiceInfo ***");
        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

  }

}

group appMobilityServicesSubscriptions {
  
    testcase TP_MEC_SRV_AMS_003_OK() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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 & X_ME_APP_AMS_SUBS & "?subscriptionType=" & oct2char(unichar2oct(PX_SUBSCRIPTION_TYPE, "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_ams_subscriptions(
                            mw_ams_subscription(PX_SUBSCRIPTION_TYPE, *, *, *, *)
              )
            )
          )
        )
      ) 
      {
        tc_ac.stop;

        log("*** " & testcasename() & ": PASS: IUT successfully responds with the list of subscriptions type MobilityProcedureSubscription ***");
        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

  }
  

  testcase TP_MEC_SRV_AMS_002_BR() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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 & X_ME_APP_AMS_SUBS & "?subscriptionTyp=" & oct2char(unichar2oct(PX_SUBSCRIPTION_TYPE, "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

  }


  testcase TP_MEC_SRV_AMS_004_OK() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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_post(
         "/" & PICS_ROOT_API & X_ME_APP_AMS_SUBS,
          v_headers,
          m_http_message_body_json(
            m_body_json_ams_subscriptions({
				m_ams_subscription(
					PX_SUBSCRIPTION_TYPE,
  					PX_CALLBACK_REFERENCE,
  					*,
					*,
					*
				)
            })
          )
        )
      )
    );
    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_ams_subscriptions(
                mw_ams_subscription(
                  PX_SUBSCRIPTION_TYPE,
  					PX_CALLBACK_REFERENCE,
  					*,
					*,
					*
                )
              )
            )
          )
        )
      ) 
      {
        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

  }


testcase TP_MEC_SRV_AMS_004_BR() runs on HttpComponent system HttpTestAdapter {
    var HeaderLines v_headers;
    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_post(
          "/" & PICS_ROOT_API & X_ME_APP_AMS_SUBS,
          v_headers,
          m_http_message_body_json(
            m_body_json_ams_subscriptions(
              m_ams_subscription_error({
                PX_SUBSCRIPTION_TYPE, PX_CALLBACK_REFERENCE, *, *, *
              }
              )
            )
          )
        )
      )
    );
    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 AppMobilityServiceInfo ***");
        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 module AtsMec_Ams_TestCases 
+33 −0
Original line number Diff line number Diff line
module Ams_EncdecDeclarations {

  import from Ams_TypesAndValues all;
  
  external function enc_AppMobilityServiceInfo(in AppMobilityServiceInfo p_app_mobility_service_info) return octetstring
  with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
  external function dec_AppMobilityServiceInfo(in octetstring p_pdu) return AppMobilityServiceInfo
  with { extension "prototype (convert) decode(JSON)" };

  external function enc_RegistrationRequest(in RegistrationRequest p_registration_request) return octetstring
  with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
  external function dec_RegistrationRequest(in octetstring p_pdu) return RegistrationRequest
  with { extension "prototype (convert) decode(JSON)" };
  
  
  external function enc_RegistrationInfo(in RegistrationInfo p_registration_info) return octetstring
  with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
  external function dec_Registrationinfo(in octetstring p_pdu) return RegistrationInfo
  with { extension "prototype (convert) decode(JSON)" };


  external function enc_SubscriptionLink(in SubscriptionLink p_subscription_link) return octetstring
  with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
  external function dec_SubscriptionLinks(in octetstring p_pdu) return SubscriptionLinks
  with { extension "prototype (convert) decode(JSON)" };


  external function enc_NotificationSubscription(in NotificationSubscription p_notification_subscription) return octetstring
  with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
  external function dec_NotificationSubscription(in octetstring p_pdu) return NotificationSubscription
  with { extension "prototype (convert) decode(JSON)" };

} // End of module LocationAPI_EncdecDeclarations
+8 −0
Original line number Diff line number Diff line
module Ams_Pics {
  
  /**
   * @desc Does the IUT support LocationAPI?
   */
  modulepar boolean PICS_AMS_API_SUPPORTED := true;
  
} // End of module LocationAPI_Pics 
+21 −0
Original line number Diff line number Diff line
module Ams_Pixits {
  
  // LibCommon
  import from LibCommon_BasicTypesAndValues all;

  // LibMec/LocationAPI
  import from Ams_TypesAndValues all;
  
  modulepar charstring PX_APP_MOBILITY_SERVICE_ID := "KtRGymNQ84dG3mQfRepa"
  
  modulepar charstring PX_APP_INS_ID := "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f"
  
  modulepar charstring PX_SUBSCRIPTION_TYPE := "MobilityProcedureSubscription"
  
  modulepar charstring PX_SUBSCRIPTION_ID := "e0deee2b-6e50-4f33-ab09-8bf0585025d3"
  
  modulepar charstring PX_NON_EXISTENT_SUBSCRIPTION_ID := "NON_EXISTENT_SUBSCRIPTION_ID"
  
  modulepar charstring PX_CALLBACK_REFERENCE :=	"http://127.0.0.1/callback"
  
} // End of module LocationAPI_Pixits 
+337 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading