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

Initial commit on MEC021

parent 2cade7b1
/**
* @author ETSI / STF569
* @version $URL:$
* $ID:$
* @desc This module provides the MEC test cases.
* @copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved.
* @see ETSI GS MEC 003, Draft ETSI GS MEC 013 V2.0.3 (2018-10)
*/
module AtsMec_Ams_TestCases {
// Libcommon
import from LibCommon_Sync all;
// LibHttp
import from LibItsHttp_TypesAndValues all;
import from LibItsHttp_Functions all;
import from LibItsHttp_Templates all;
import from LibItsHttp_JsonTemplates all;
import from LibItsHttp_TestSystem all;
// LibMec_LocationAPI
import from Ams_Templates all;
import from Ams_Pics all;
import from Ams_Pixits all;
// LibMec
import from LibMec_Functions all;
import from LibMec_Pics all;
import from LibMec_Pixits all;
group appMobilityServices {
testcase TP_MEC_SRV_AMS_001_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
v_headers
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_ok(
mw_http_message_body_json(
mw_body_json_app_mobility_service_info(
mw_app_mobility_service_info(
{
*,
mw_app_mobility_service_info(PX_APP_MOBILITY_SERVICE_ID)
}
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
testcase TP_MEC_SRV_AMS_001_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & "?appMobilityService=" & oct2char(unichar2oct(PX_APP_MOBILITY_SERVICE_ID, "UTF-8")),
v_headers
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
{
-, -, 400
}
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
testcase TP_MEC_SRV_AMS_002_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
v_headers,
m_http_message_body_json(
m_body_json_ams_registration_request(
m_registration_request({
m_service_consumer_id(PX_APP_INS_IP, *),
*,
*
}
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_app_mobility_service_info(
mw_app_mobility_service_info(
{
mw_registration_info({
mw_service_consumer_id(PX_APP_INS_ID, *),
*,
*
}),
*
}
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
testcase TP_MEC_SRV_AMS_002_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
v_headers,
m_http_message_body_json(
m_body_json_ams_registration_request(
m_registration_request({
m_service_consumer(PX_APP_INS_IP, *),
*,
*
}
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
{
-, -, 400
}
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
}
group appMobilityServicesSubscriptions {
testcase TP_MEC_SRV_AMS_003_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & X_ME_APP_AMS_SUBS & "?subscriptionType=" & oct2char(unichar2oct(PX_SUBSCRIPTION_TYPE, "UTF-8")),
v_headers
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_ok(
mw_http_message_body_json(
mw_body_json_ams_subscriptions(
mw_ams_subscription(PX_SUBSCRIPTION_TYPE, *, *, *, *)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with the list of subscriptions type MobilityProcedureSubscription ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
testcase TP_MEC_SRV_AMS_002_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & X_ME_APP_AMS_SUBS & "?subscriptionTyp=" & oct2char(unichar2oct(PX_SUBSCRIPTION_TYPE, "UTF-8")),
v_headers
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
{
-, -, 400
}
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
testcase TP_MEC_SRV_AMS_004_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & X_ME_APP_AMS_SUBS,
v_headers,
m_http_message_body_json(
m_body_json_ams_subscriptions({
m_ams_subscription(
PX_SUBSCRIPTION_TYPE,
PX_CALLBACK_REFERENCE,
*,
*,
*
)
})
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_ams_subscriptions(
mw_ams_subscription(
PX_SUBSCRIPTION_TYPE,
PX_CALLBACK_REFERENCE,
*,
*,
*
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
testcase TP_MEC_SRV_AMS_004_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & X_ME_APP_AMS_SUBS,
v_headers,
m_http_message_body_json(
m_body_json_ams_subscriptions(
m_ams_subscription_error({
PX_SUBSCRIPTION_TYPE, PX_CALLBACK_REFERENCE, *, *, *
}
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
{
-, -, 400
}
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
}
}
} // End of module AtsMec_Ams_TestCases
module Ams_EncdecDeclarations {
import from Ams_TypesAndValues all;
external function enc_AppMobilityServiceInfo(in AppMobilityServiceInfo p_app_mobility_service_info) return octetstring
with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
external function dec_AppMobilityServiceInfo(in octetstring p_pdu) return AppMobilityServiceInfo
with { extension "prototype (convert) decode(JSON)" };
external function enc_RegistrationRequest(in RegistrationRequest p_registration_request) return octetstring
with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
external function dec_RegistrationRequest(in octetstring p_pdu) return RegistrationRequest
with { extension "prototype (convert) decode(JSON)" };
external function enc_RegistrationInfo(in RegistrationInfo p_registration_info) return octetstring
with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
external function dec_Registrationinfo(in octetstring p_pdu) return RegistrationInfo
with { extension "prototype (convert) decode(JSON)" };
external function enc_SubscriptionLink(in SubscriptionLink p_subscription_link) return octetstring
with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
external function dec_SubscriptionLinks(in octetstring p_pdu) return SubscriptionLinks
with { extension "prototype (convert) decode(JSON)" };
external function enc_NotificationSubscription(in NotificationSubscription p_notification_subscription) return octetstring
with { extension "prototype (convert) encode(JSON)"; extension "printing(pretty)" };
external function dec_NotificationSubscription(in octetstring p_pdu) return NotificationSubscription
with { extension "prototype (convert) decode(JSON)" };
} // End of module LocationAPI_EncdecDeclarations
module Ams_Pics {
/**
* @desc Does the IUT support LocationAPI?
*/
modulepar boolean PICS_AMS_API_SUPPORTED := true;
} // End of module LocationAPI_Pics
module Ams_Pixits {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibMec/LocationAPI
import from Ams_TypesAndValues all;
modulepar charstring PX_APP_MOBILITY_SERVICE_ID := "KtRGymNQ84dG3mQfRepa"
modulepar charstring PX_APP_INS_ID := "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f"
modulepar charstring PX_SUBSCRIPTION_TYPE := "MobilityProcedureSubscription"
modulepar charstring PX_SUBSCRIPTION_ID := "e0deee2b-6e50-4f33-ab09-8bf0585025d3"
modulepar charstring PX_NON_EXISTENT_SUBSCRIPTION_ID := "NON_EXISTENT_SUBSCRIPTION_ID"
modulepar charstring PX_CALLBACK_REFERENCE := "http://127.0.0.1/callback"
} // End of module LocationAPI_Pixits
module Ams_Templates {
// JSON
import