AtsMec_Ams_TestCases.ttcn 61.6 KB
Newer Older
                    mw_ams_subscription(
                      PX_SUBSCRIPTION_TYPE,
      					PX_CALLBACK_REFERENCE,
      					-,
    					-,
    					-
                    )
                  )
                )
              )
            )
          ) 
          {
            tc_ac.stop;
    
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a AMS Subscription and 201 Created 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 TP_MEC_SRV_AMS_004_OK
  
  	/**
       * @desc Check that the AMS service sends an error when it receives a malformed request to create a notification subscription
       *     Permitted SUBSCRIPTION_TYPE are:
       *     - MobilityProcedureSubscription
       *     - AdjacentAppInfoSubscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.6.3.4
       */
    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 & PX_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
                  )
                )
              )
            )
          )
        ) 
        {
  
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a Problem Details and 400 Bad request 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 TP_MEC_SRV_AMS_004_BR
    
    	/**
       * @desc Check that the AMS service returns information about a given subscription when requested.
       *     Permitted SUBSCRIPTION_TYPE are:
       *     - MobilityProcedureSubscription
       *     - AdjacentAppInfoSubscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.1
       */
    testcase TP_MEC_SRV_AMS_005_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_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_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_ams_subscriptions(
                	mw_ams_subscription(PX_SUBSCRIPTION_TYPE, -, -, -, -)
                )
              )
            )
          )
        ) 
        {
  
          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
  
    } // End of TP_MEC_SRV_AMS_005_OK
  	/**
       * @desc Check that the AMS service returns an error when receives a query about a not existing subscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.1
       */
    testcase TP_MEC_SRV_AMS_005_NF() 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_SUBS & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_SUBSCRIPTION_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(
              mw_http_message_body_json(
                mw_body_json_ams_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
  
    } // End of TP_MEC_SRV_AMS_005_NF
    
    	/**
       * @desc Check that the AMS service deletes a given subscription when requested
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.5
       */
    testcase TP_MEC_SRV_AMS_006_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_delete(
            "/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_ID, "UTF-8")),
            v_headers
          )
        )
      );
      f_selfOrClientSyncAndVerdict(c_prDone, e_success);
  
      // Test Body
      tc_ac.start;
      alt {
        [] httpPort.receive(
          mw_http_response(
YannGarcia's avatar
YannGarcia committed
            mw_http_response_204_no_content
          )
        ) 
        {
          tc_ac.stop;
  
          log("*** " & testcasename() & ": PASS: IUT successfully responds with 204 No Content on deletion 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 TP_MEC_SRV_AMS_006_OK
    
       * @desc Check that the AMS service sends an error when it receives a delete request for a not existing subscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.5
       */
    testcase TP_MEC_SRV_AMS_006_NF() 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_delete(
            "/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_SUBSCRIPTION_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(
              mw_http_message_body_json(
                mw_body_json_ams_problem_details(
                )
              )
            )
          )
        ) 
        {
          tc_ac.stop;
  
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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
  
    } // End of TP_MEC_SRV_AMS_006_NF 
  
  	/**
       * @desc Check that the AMS service modifies a given subscription when requested.
  	 *	  Permitted SUBSCRIPTION_TYPE are:
       *     - MobilityProcedureSubscription
       *     - AdjacentAppInfoSubscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.2
       */
    testcase TP_MEC_SRV_AMS_007_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_put(
            "/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_ID, "UTF-8")),
            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_ok(
              mw_http_message_body_json(
                mw_body_json_ams_subscriptions(
                	mw_ams_subscription(PX_SUBSCRIPTION_TYPE, -, -, -, -)
                )
              )
            )
          )
        ) 
          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 TP_MEC_SRV_AMS_007_OK 
  	/**
       * @desc Check that the AMS service sends an error when it receives a malformed modify request for a given subscription.
  	 *	  Permitted SUBSCRIPTION_TYPE are:
       *     - MobilityProcedureSubscription
       *     - AdjacentAppInfoSubscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.2
       */
    testcase TP_MEC_SRV_AMS_007_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_put(
            "/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_ID, "UTF-8")),
            v_headers,
            m_http_message_body_json(
              m_body_json_ams_registration_request(
                m_registration_request(
                    m_service_consumer_error(PX_APP_INS_ID, -),
                    -,
                    -
                )
              )
            )
          )
        )
      );
      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(
                )
              )
            )
          )
        ) 
        {
          tc_ac.stop;
  
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 TP_MEC_SRV_AMS_007_BR
  
  	/**
       * @desc Check that the AMS service sends an error when it receives a modify request for a not existing subscription
       * @see  ETSI GS MEC 021 2.0.8, clause 8.7.3.2
       */
    testcase TP_MEC_SRV_AMS_007_NF() 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_put(
            "/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_SUBSCRIPTION_ID, "UTF-8")),
            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_404_not_found(
              mw_http_message_body_json(
                mw_body_json_ams_problem_details(
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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
  
    } // End of TP_MEC_SRV_AMS_007_NF 
  } // End of group appMobilityServicesSubscriptions
  
  group ams_notifications {
      
      /**
       * @desc Check that the AMS service sends an AMS notification  about a mobility procedure if the AMS service has an associated subscription and the event is generated
       * @see  ETSI GS MEC 021 2.0.8, clause 7.4.2
       */
      testcase TP_MEC_SRV_AMS_008_OK() runs on HttpComponent system HttpTestAdapter {
          // Local variables
          var HeaderLines v_headers;
          
          // Test control
          if (not(PICS_AMS) or not(PICS_AMS_NOTIFICATIONS)) {
              log("*** " & testcasename() & ": PICS_AMS and PICS_AMS_NOTIFICATIONS required for executing the TC ***");
              setverdict(inconc);
              stop;
          
          // Test component configuration
          f_cf_01_http_notif_up();
          
          // Test adapter configuration
          
          // Preamble
          f_init_default_headers_list(-, -, v_headers);
          action("Trigger a mobility procedure event");
          f_selfOrClientSyncAndVerdict(c_prDone, e_success);
          
          // Test Body
          tc_wait.start;
          alt {
            [] httpPort_notif.receive(
            		mw_http_request(
                  	mw_http_request_post(
                      	PX_CALLBACK_URI,
                          -,
                      	mw_http_message_body_json(
                          	mw_body_json_mobility_procedure_notification(
                              	mw_mobility_procedure_notification(
                              		-,
                                  	PX_CALLBACK_REFERENCE,
                                  	-,
                                  	-,
                                  	-
                                  )
                              )
                          )
                      )
                  )
              ) {
              tc_wait.stop;
              log("*** " & testcasename() & ": INFO: IUT successfully sends mobility procedure notification ***");
              
              // Send 204 No Content
              httpPort_notif.send(m_http_response(m_http_response_204_no_content(v_headers)));
              
              log("*** " & testcasename() & ": PASS: IUT successfully sends mobility procedure notification ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            [] tc_wait.timeout {
              log("*** " & testcasename() & ": INCONC: Expected message not received ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
            }
          } // End of 'alt' statement
          
          // Postamble
          f_cf_01_http_notif_down();
      } // End of TP_MEC_SRV_AMS_008_OK
      
      /**
       * @desc Check that the AMS service sends an AMS notification about adjacent application instances if the AMS service has an associated subscription and the event is generated
       * @see  ETSI GS MEC 021 2.0.8, clause 7.4.3
       */
    testcase TP_MEC_SRV_AMS_009_OK() runs on HttpComponent system HttpTestAdapter {
          // Local variables
          var HeaderLines v_headers;
          
          // Test control
          if (not(PICS_AMS) or not(PICS_AMS_NOTIFICATIONS)) {
              log("*** " & testcasename() & ": PICS_AMS and PICS_AMS_NOTIFICATIONS required for executing the TC ***");
              setverdict(inconc);
              stop;
          
          // Test component configuration
          f_cf_01_http_notif_up();
          
          // Test adapter configuration
          
          // Preamble
          f_init_default_headers_list(-, -, v_headers);
          action("Trigger a adjacent application info event");
          f_selfOrClientSyncAndVerdict(c_prDone, e_success);
          
          // Test Body
          tc_wait.start;
          alt {
            [] httpPort_notif.receive(
            		mw_http_request(
                  	mw_http_request_post(
                      	PX_CALLBACK_URI,
                          -,
                      	mw_http_message_body_json(
                          	mw_body_json_adjacent_application_info_notification(
                              	mw_adjacent_application_info_notification(
                              		-,
                                  	PX_CALLBACK_REFERENCE,
                                  	-,
                                  	-,
                                  	-
                                  )
                              )
                          )
                      )
                  )
              ) {
              tc_wait.stop;
              log("*** " & testcasename() & ": INFO: IUT successfully sends adjacent application info notification ***");
              
              // Send 204 No Content
              httpPort_notif.send(m_http_response(m_http_response_204_no_content(v_headers)));
              
              log("*** " & testcasename() & ": PASS: IUT successfully sends adjacent application info notification ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            [] tc_wait.timeout {
              log("*** " & testcasename() & ": INCONC: Expected message not received ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
            }
          } // End of 'alt' statement
          
          // Postamble
          f_cf_01_http_notif_down();
      } 
      
      
     /**
       * @desc Check that the AMS service sends an AMS notification on subscription expiration if the AMS service has an associated subscription and the event is generated
       * @see  ETSI GS MEC 021 2.0.8, clause 7.4.4
       */  
    testcase TP_MEC_SRV_AMS_010_OK() runs on HttpComponent system HttpTestAdapter {
          // Local variables
          var HeaderLines v_headers;
          var UInt64 v_timestamp;
          
          // Test control
          if (not(PICS_AMS) or not(PICS_AMS_NOTIFICATIONS)) {
              log("*** " & testcasename() & ": PICS_AMS and PICS_AMS_NOTIFICATIONS required for executing the TC ***");
              setverdict(inconc);
              stop;
          
          // Test component configuration
          f_cf_01_http_notif_up();
          
          // Test adapter configuration
          
          // Preamble
          f_init_default_headers_list(-, -, v_headers);
          action("Trigger a expire notification event");
          v_timestamp := f_get_current_timestamp_utc();
          f_selfOrClientSyncAndVerdict(c_prDone, e_success);
          
          // Test Body
          tc_wait.start;
          alt {
            [] httpPort_notif.receive(
            		mw_http_request(
                  	mw_http_request_post(
                      	PX_CALLBACK_URI,
                          -,
                      	mw_http_message_body_json(
                          	mw_body_json_expire_notification(
                              	mw_expire_notification(
                                  	-,
                                  	-,
                                  	{ seconds := v_timestamp / 1000, nanoSeconds := 1000 * v_timestamp mod 1000 }
                                  )
                              )
                          )
                      )
                  )
              ) {
              tc_wait.stop;
              log("*** " & testcasename() & ": INFO: IUT successfully sends adjacent application info notification ***");
              
              // Send 204 No Content
              httpPort_notif.send(m_http_response(m_http_response_204_no_content(v_headers)));
              
              log("*** " & testcasename() & ": PASS: IUT successfully sends adjacent applicationinfo notification ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            [] tc_wait.timeout {
              log("*** " & testcasename() & ": INCONC: Expected message not received ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
            }
          } // End of 'alt' statement
          
          // Postamble
          f_cf_01_http_notif_down();
      } 
  
  
  
    } // End of group ams_notifications 
  
Elian Kraja's avatar
Elian Kraja committed
} // End of module AtsMec_Ams_TestCases