AtsMec_MepmPkgm_TestCases.ttcn 33.6 KB
Newer Older
Elian Kraja's avatar
Elian Kraja committed
/**
*    @author   ETSI / STF569
*    @version  $URL:$
*              $ID:$
*    @desc     This module provides the MEC test cases.
*    @copyright   ETSI Copyright Notification
*                 No part may be reproduced except as authorized by written permission.
*                 The copyright and the foregoing restriction extend to reproduction in all media.
*                 All rights reserved.
*    @see      ETSI GS MEC 003, Draft ETSI GS MEC 013 V2.0.3 (2018-10)
*/
module AtsMec_PkgMgmt_mm3_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 MepmPkgm_Templates all;
    import from MepmPkgm_Pics all;
    import from MepmPkgm_Pixits all;
    
    // LibMec
    import from LibMec_Functions all;
    import from LibMec_Pics all;
    import from LibMec_Pixits all;
    
    group appPackageManagement {
  
    /**
    * @desc: Check that MEPM returns the list of App Packages when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.1.3.2,
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1,      //OnboardedAppPkgInfo
    */
    testcase TP_MEC_MEPM_PKGM_001_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_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_mepm_pkg_mgmt_response_list(
                                {
                                    *,
                                        mw_package_management(
                                            PX_ON_BOARDED_APP_PKG_ID, 
                                            PX_APP_D_ID, 
                                            -,
                                            -,
                                            -,
                                            -
                                        ),
                                    *
                                }
Elian Kraja's avatar
Elian Kraja committed
          ))))) -> value v_response {
          tc_ac.stop;
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a Onboarded 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 TP_MEC_MEPM_PKGM_001_OK
 
 
 
    /**
    * @desc: Check that MEPM responds with an error when it receives a malformed request for requesting the list of existing App Packages
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.1.3.2
    *        ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1      //OnboardedAppPkgInfo
    */
    testcase TP_MEC_MEPM_PKGM_001_BR() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_URI & "?operationalStatus=ENABLED", //query prameter should be operationalState
                        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 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 TP_MEC_MEO_PKGM_001_BR 



    /**
    * @desc: Check that MEPM returns the an App Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.2.3.2
    *         ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1      //OnboardedAppPkgInfo
Elian Kraja's avatar
Elian Kraja committed
    */
    testcase TP_MEC_MEPM_PKGM_002_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_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(
Elian Kraja's avatar
Elian Kraja committed
                            mw_body_json_mepm_pkg_mgmt_response(
                                mw_package_management(
                                    PX_ON_BOARDED_APP_PKG_ID,
                                    -, -, -, -, -, -
                                )
                              )
                          )
                    )
Elian Kraja's avatar
Elian Kraja committed
          )) -> value v_response {
          tc_ac.stop;
          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 TP_MEC_MEPM_PKGM_002_OK


    /**
    * @desc: Check that MEPM responds with an error when it receives 
    *         a request for returning a App Package referred with a wrong ID
Elian Kraja's avatar
Elian Kraja committed
    * @see:  ETSI GS MEC 010-2 2.0.10, clause 7.4.2.3.2
    */
    testcase TP_MEC_MEPM_PKGM_002_NF() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_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;
          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 TP_MEC_MEO_PKGM_003_NF


    /**
    * @desc: Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2
    */
    testcase TP_MEC_MEPM_PKGM_003_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_URI & "/" & oct2char(unichar2oct(PX_ON_BOARDED_APP_PKG_ID, "UTF-8")) & "/app_descriptor",
                        v_headers
                )));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                mw_http_response(
                    mw_http_response_ok(
                    //@TODO: How to check if a file is present in the body?
            ))) -> value v_response {
Elian Kraja's avatar
Elian Kraja committed
          tc_ac.stop;
          log("*** " & testcasename() & ": PASS: IUT successfully responds with the app descriptor contained in the app pkg ***");
          f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
        }
        [] tc_ac.timeout {
          log("*** " & testcasename() & ": INCONC: Expected message not received ***");
          f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
        }
      } // End of 'alt' statement
    } // End of testcase TP_MEC_MEPM_PKGM_003_OK


Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM responds with an error when it receives 
    *         a request for returning a App Descriptor referred with a wrong App Package ID
Elian Kraja's avatar
Elian Kraja committed
    * @see:  ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2
    */
    testcase TP_MEC_MEPM_PKGM_003_NF() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_URI & oct2char(unichar2oct(PX_NON_EXISTENT_APP_PKG_ID, "UTF-8")) &"/app_descriptor",
                        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 TP_MEC_MEPM_PKGM_003_NF


    /**
    * @desc: Check that MEPM returns the content on a on-boarded Application Package when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.3.3.2
    */
    testcase TP_MEC_MEPM_PKGM_004_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_URI & oct2char(unichar2oct(PX_ON_BOARDED_APP_PKG_ID, "UTF-8")) & "/appPkgContent",
                        v_headers
                )));
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);

        // Test Body
        tc_ac.start;
        alt {
            [] httpPort.receive(
                mw_http_response(
                    mw_http_response_ok(
                    //@TODO: How to check if a file is present in the body?
            ))) -> value v_response {
Elian Kraja's avatar
Elian Kraja committed
          tc_ac.stop;
            log("*** " & testcasename() & ": PASS: IUT successfully responds with and APP Descriptor and 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 TP_MEC_MEPM_PKGM_004_OK

Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM responds with an error when it receives 
    *         a request for returning a App Descriptor referred with a wrong App Package ID
Elian Kraja's avatar
Elian Kraja committed
    * @see:  ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2
    */
    testcase TP_MEC_MEPM_PKGM_004_NF() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_URI & oct2char(unichar2oct(PX_NON_EXISTENT_APP_PKG_ID, "UTF-8")) & "/appPkgContent",
                        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 TP_MEC_MEPM_PKGM_004_NF

} // End of packageManagement

group pkg_mgmt_subscriptions {
  
Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service returns an application package subscription when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.1
    */
    testcase TP_MEC_MEPM_PKGM_005_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_SUBS,
                        v_headers,
                        m_http_message_body_json(
                            m_body_json_mepm_pkgm_subscription(
                                m_app_package_subscription(
                                    PX_CALLBACK_URI,
                                    PX_SUBSCRIPTION_TYPE
                                )
                            )
Elian Kraja's avatar
Elian Kraja committed
                        )
                  )
            ));
                
        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_mepm_pkgm_subscription_info(
                                mw_app_package_subscription_info(
                                    -,
                                    PX_SUBSCRIPTION_TYPE,
                                    PX_CALLBACK_URI
                                )
Elian Kraja's avatar
Elian Kraja committed
          ))))) -> 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 TP_MEC_MEPM_PKGM_005_OK
 
Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service sends an error when it receives a 
    *         malformed request for creating a new subscription on AppPackages
Elian Kraja's avatar
Elian Kraja committed
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.1
    */
    testcase TP_MEC_MEPM_PKGM_005_BR() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_SUBS,
                        v_headers,
                        m_http_message_body_json(
                            m_body_json_mepm_pkgm_subscription_with_error(
                                m_app_package_subscription_with_error(
                                    PX_CALLBACK_URI,
                                    PX_SUBSCRIPTION_TYPE_WITH_ERROR
                                )
                            )
Elian Kraja's avatar
Elian Kraja committed
                        )
                        
                )));
        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 TP_MEC_MEPM_PKGM_005_BR
 
Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service returns the list of Application Package Subscriptions when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.2
    */
    testcase TP_MEC_MEPM_PKGM_006_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_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_mepm_pkgm_subscription_info_list(
                                {
                                    *,
                                    mw_app_package_subscription_info(
                                        -,
                                        PX_SUBSCRIPTION_TYPE,
                                        PX_CALLBACK_URI
                                    ),
                                    *
                                }
Elian Kraja's avatar
Elian Kraja committed
          ))))) -> 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 TP_MEC_MEPM_PKGM_006_OK
 
 
Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service returns an Application Package Subscription when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.2
    */
    testcase TP_MEC_MEPM_PKGM_007_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_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_mepm_pkgm_subscription_info(
                                mw_app_package_subscription_info(
                                    PX_SUBSCRIPTION_ID,
                                    PX_SUBSCRIPTION_TYPE,
                                    PX_CALLBACK_URI
                                    )
Elian Kraja's avatar
Elian Kraja committed
          ))))) -> value v_response {
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds with a App Package Subscription Info identified by the given ID ***");
          f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
        }
        [] tc_ac.timeout {
          log("*** " & testcasename() & ": INCONC: Expected message not received ***");
          f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
        }
      } // End of 'alt' statement
    } // End of testcase TP_MEC_MEPM_PKGM_007_OK


Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service sends an error when it receives a query 
    *         for a subscription on AppPackages with a wrong identifier
Elian Kraja's avatar
Elian Kraja committed
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.2
    */
    testcase TP_MEC_MEPM_PKGM_007_NF() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_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(
          ))) -> value v_response {
Elian Kraja's avatar
Elian Kraja committed
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds with 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 testcase TP_MEC_MEPM_PKGM_007_NF
      
Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service deletes an Application Package Subscription when requested
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.4
    */
    testcase TP_MEC_MEPM_PKGM_008_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_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_204_no_content(
          ))) -> value v_response {
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds 204 No Content removing the AppPkgSubscription identified by the given ID ***");
          f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
        }
        [] tc_ac.timeout {
          log("*** " & testcasename() & ": INCONC: Expected message not received ***");
          f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
        }
      } // End of 'alt' statement
    } // End of testcase TP_MEC_MEPM_PKGM_008_OK


Elian Kraja's avatar
Elian Kraja committed
    * @desc: Check that MEPM service sends an error when it receives a deletion request 
    *         for a subscription on AppPackages with a wrong identifier
Elian Kraja's avatar
Elian Kraja committed
    *        ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.4
    */
    testcase TP_MEC_MEPM_PKGM_008_NF() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        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_MEPM_PKGM_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(
          ))) -> value v_response {
Elian Kraja's avatar
Elian Kraja committed
          tc_ac.stop;
          
          log("*** " & testcasename() & ": PASS: IUT successfully responds with 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 testcase TP_MEC_MEO_PKGM_010_NF
            
} // end of group pkg_mgmt_subscriptions

group mepm_pkg_management_notification {
  
     /**
     * @desc Check that the MEPM service sends a application package notification if 
     *       the MEPM service has an associated subscription and the event is generated
Elian Kraja's avatar
Elian Kraja committed
     * @see  ETSI GS MEC 010-2 2.0.10, clause 7.4.7.3.1
     */  
  testcase TP_MEC_MEPM_PKGM_009_OK() runs on HttpComponent system HttpTestAdapter {
        // Local variables
        var HeaderLines v_headers;
        
        // Test control
        if (not(PIC_APP_PACKAGE_NOTIFICATIONS)) {
            log("*** " & testcasename() & ": PIC_APP_PACKAGE_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");
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);
        
        // Test Body
        tc_wait.start;
        alt {
          [] httpPort_notif.receive(
                  mw_http_request(
                    mw_http_request_post(
                        oct2char(unichar2oct(PX_CALLBACK_URI)),
Elian Kraja's avatar
Elian Kraja committed
                        -,
                        mw_http_message_body_json(
                            mw_body_json_mepm_app_package_notification(
                                mw_app_package_notification(
                                    -, 
                                    PX_NOTIFICATION_TYPE,
                                    PX_SUBSCRIPTION_ID,
                                    PX_CALLBACK_URI)
Elian Kraja's avatar
Elian Kraja committed
                            )
                        )
                    )
                )
            ) {
            tc_wait.stop;
            log("*** " & testcasename() & ": INFO: IUT successfully sends 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 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 pkg_management_notification


} // End of module AtsMec_PkgMgmt_mm1_TestCases