AtsMec_MeoPkgm_TestCases.ttcn 44 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 010-2 V2.1.1
Elian Kraja's avatar
Elian Kraja committed
*/
module AtsMec_PkgMgmt_mm1_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;
    

    import from MeoPkgm_Templates all;
    import from MeoPkgm_Pics all;
    import from MeoPkgm_Pixits all;
    
    // LibMec
    import from LibMec_Functions all;
    import from LibMec_Pics all;
    import from LibMec_Pixits all;
    
    group appPackageManagement {
  
    /**
    * @desc: Check that MEO creates a new App Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.1,
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1,      //OnboardedAppPkgInfo
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.2.2-1       //AppPkg
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_001_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_package_management(
                                   m_package_management(
                                       PX_APP_PKG_NAME,
                                       PX_APP_PKG_VERSION,
                                       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_ok(
                        mw_http_message_body_json(
                            mw_body_json_pkg_mgmt_response(
								mw_package_management_list( 
Elian Kraja's avatar
Elian Kraja committed
								    -,
									PX_APP_PKG_NAME,
									PX_APP_PKG_VERSION, 
									PX_CHECKSUM, 
									PX_OPERATIONAL_STATE, 
									PX_USAGE_STATE
								)
          ))))) -> value v_response {
          tc_ac.stop;
          
          if (v_response.response.statuscode == 201) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a Onboarded 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
Elian Kraja's avatar
Elian Kraja committed
 
 
 
    /**
    * @desc: Check that MEO responds with an error when it receives a malformed request for creating a new App Package
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.1
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.2.2-1      //AppPkg
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_001_BR() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_package_management_with_error(
                                   m_package_management_with_error(
                                       PX_APP_PKG_VERSION,
                                       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(
            ))) -> value v_response {
          tc_ac.stop;
          
          if (v_response.response.statuscode == 400) {
            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_PKGM_001_BR 
Elian Kraja's avatar
Elian Kraja committed


    /**
    * @desc: Check that MEO returns the list of App Packages when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1      //OnboardedAppPkgInfo
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_002_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_pkg_mgmt_response(
								mw_package_management_list(
								    -,
									PX_APP_PKG_NAME,
									PX_APP_PKG_VERSION, 
									PX_CHECKSUM, 
									PX_OPERATIONAL_STATE, 
									PX_USAGE_STATE
								)
          					)
          				)
                	)
		  		)
		  	) -> value v_response {
          tc_ac.stop;
          if (v_response.response.statuscode == 200) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a list of OnboardedAppPkgInfo and 200 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_PKGM_002_OK
Elian Kraja's avatar
Elian Kraja committed


    /**
    * @desc: Check that MEO responds with an error when it receives a malformed request for retrieving the list of existing App Packages
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1     //OnboardedAppPkgInfo
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_002_BR() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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 & "?operationalStatus=ENABLED",
                        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_pkg_mgmt_response(
								mw_package_management_list(
								    -,
									PX_APP_PKG_NAME,
									PX_APP_PKG_VERSION, 
									PX_CHECKSUM, 
									PX_OPERATIONAL_STATE, 
									PX_USAGE_STATE
								)
          					)
          				)
                	)
		  		)
		  	) -> value v_response {
          tc_ac.stop;
          if (v_response.response.statuscode == 400) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 testcase TC_MEC_MEC010p2_MEO_PKGM_002_BR
Elian Kraja's avatar
Elian Kraja committed
    
    

    /**
    * @desc: Check that MEO returns the an App Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.2
    *		 ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1	//OnboardedAppPkgInfo
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_003_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_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_pkg_mgmt_response(
								mw_package_management_list(
								    PX_ON_BOARDED_APP_PKG_ID,
									PX_APP_PKG_NAME,
									PX_APP_PKG_VERSION, 
									PX_CHECKSUM, 
									PX_OPERATIONAL_STATE, 
									PX_USAGE_STATE
								)
          					)
          				)
                	)
          )) -> value v_response {
          tc_ac.stop;
          //@TODO: How to check Location???
          if (v_response.response.statuscode == 201) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with an Onboarded App Package info and 200 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_PKGM_003_OK
Elian Kraja's avatar
Elian Kraja committed


    /**
    * @desc: Check that MEO responds with an error when it receives a request for retrieving a App Package referred with a wrong ID
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.2
    *		 ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1	//OnboardedAppPkgInfo
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_003_NF() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_NON_EXISTENT_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;
          
          if (v_response.response.statuscode == 404) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 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_PKGM_003_NF
Elian Kraja's avatar
Elian Kraja committed


    /**
    * @desc: Check that MEO deletes an App Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.4
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_004_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_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_204_no_content(
		    ))) -> value v_response {
          tc_ac.stop;
          if (v_response.response.statuscode == 204) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 204 no content 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_PKGM_004_OK
Elian Kraja's avatar
Elian Kraja committed


	/**
    * @desc: Check that MEO responds with an error when it receives a request for deleting an App Package referred with a wrong ID
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.4
    *		 ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1	//OnboardedAppPkgInfo
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_004_NF() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_NON_EXISTENT_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;
          
          if (v_response.response.statuscode == 404) {
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 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_PKGM_004_NF
Elian Kraja's avatar
Elian Kraja committed


    /**
    * @desc: Check that MEO changes the status of an App Package from INITIAL_OP_STATE with an operation of type OPERATION_VALUE when requested, with the following possible combinations:
    *            - ENABLED, DISABLE
    *            - DISABLED, ENABLE
    *            - DELETION_PENDING, ABORT
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_005_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_put(
                    "/" & PICS_ROOT_API & PX_MEO_PKGM_URI & oct2char(unichar2oct(PX_ON_BOARDED_APP_PKG_ID, "UTF-8")) & "?appPkgOperation=DISABLE",
                        v_headers
                )));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                mw_http_response(
                    mw_http_response_ok(
		    ))) -> value v_response {
          tc_ac.stop;
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 200 ok 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_PKGM_005_OK
Elian Kraja's avatar
Elian Kraja committed


	/**
    * @desc: Check that MEO sends an error when it receives a malformed request to modify the operational state of an application package
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_005_BR() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_ON_BOARDED_APP_PKG_ID, "UTF-8")) & "?appPkgOperation=DISAB",
                        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(
            ))) -> value v_response {
          tc_ac.stop;
          
            log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 testcase TC_MEC_MEC010p2_MEO_PKGM_005_BR
Elian Kraja's avatar
Elian Kraja committed


	/**
    * @desc: Check that MEO responds with an error when it receives a request for updating an App Package referred with a wrong ID
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_005_NF() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_NON_EXISTENT_APP_PKG_ID, "UTF-8")) & "?appPkgOperation=DISABLE",
                        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(
            ))) -> value v_response {
          tc_ac.stop;
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 testcase TC_MEC_MEC010p2_MEO_PKGM_005_NF
Elian Kraja's avatar
Elian Kraja committed


    /**
    * @desc: Check that MEO returns the Application Descriptor contained on a on-boarded Application Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.6.3.2
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_006_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_ON_BOARDED_APP_PKG_ID, "UTF-8")) & "/appDId",
                        v_headers
                )));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                mw_http_response(
                    mw_http_response_ok(
                    //@TODO: The response should contain a file. Is it possible to check?
		    ))) -> value v_response {
          tc_ac.stop;
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 200 ok 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_PKGM_006_OK
Elian Kraja's avatar
Elian Kraja committed


	/**
    * @desc: Check that MEO responds with an error when it receives a request to retrieve an application descriptor referred with a wrong app package ID
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.6.3.2
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_006_NF() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_NON_EXISTENT_APP_PKG_ID, "UTF-8")) & "/appDId",
                        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 404 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_PKGM_006_NF
Elian Kraja's avatar
Elian Kraja committed



} // End of packageManagement

group pkg_mgmt_subscriptions {
  
	/**
    * @desc: Check that MEO service sends a Application Package Subscription when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.1
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_007_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_SUBS,
                        v_headers,
                        m_http_message_body_json(
                        	m_body_json_pkgm_subscription(
                        		m_app_package_subscription(
                        			PX_CALLBACK_URI,
									PX_SUBSCRIPTION_TYPE
								)
                        	)
                        )
                  )
            ));
                
        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_pkgm_subscription_info(
								mw_app_package_subscription_info(
									-,
									PX_SUBSCRIPTION_TYPE,
									PX_CALLBACK_URI
								)
          ))))) -> value v_response {
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a App Package Subscription Info ***");
          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_007_OK
Elian Kraja's avatar
Elian Kraja committed
 
	/**
    * @desc: Check that MEO service sends an error when it receives a malformed request for creating a new subscription on AppPackages
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.1
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_007_BR() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_SUBS,
                        v_headers,
                        m_http_message_body_json(
                        	m_body_json_pkgm_subscription_with_error(
                        		m_app_package_subscription_with_error(
                        			PX_CALLBACK_URI,
                        			PX_SUBSCRIPTION_TYPE_WITH_ERROR
                        		)
                        	)
                        )
                        
                )));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                mw_http_response(
                    mw_http_response_400_bad_request(
            ))) -> value v_response {
          tc_ac.stop;
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 testcase TC_MEC_MEC010p2_MEO_PKGM_007_BR
Elian Kraja's avatar
Elian Kraja committed
 
 	/**
    * @desc: Check that MEO service returns the list of Application Package Subscriptions when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.2
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_008_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_SUBS,
                        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_pkgm_subscription_info_list(
                            	{
                            		*,
                                	mw_app_package_subscription_info(
    									-,
    									PX_SUBSCRIPTION_TYPE,
    									PX_CALLBACK_URI
    								),
									*
                            	}
          ))))) -> value v_response {
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a App Package Subscription Info 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_008_OK
Elian Kraja's avatar
Elian Kraja committed
 
 
 	/**
    * @desc: Check that MEO service returns an Application Package Subscription when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.2
    */
    testcase TC_MEC_MEC010p2_MEO_PKGM_009_OK() runs on HttpComponent system HttpTestAdapter {
Elian Kraja's avatar
Elian Kraja committed
        // Local variables
Yann Garcia's avatar
Yann Garcia committed
        var Headers v_headers;
Elian Kraja's avatar
Elian Kraja committed
        var HttpMessage v_response;

        // Test control
        if (not(PIC_APP_PACKAGE_MANAGEMENT)){
            log("*** " & testcasename() & ": PIC_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_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_ID, "UTF-8")),
                        v_headers
                  )
            ));
                
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body