Commits (65)
......@@ -9,7 +9,24 @@ cd "$(dirname "$0")"
run_dir="$(pwd)"
echo "Using git branch $GIT_BRANCH"
./scripts/build-container.sh
./scripts/run-container.sh "${run_dir}"
exit $?
if [[ "$GIT_BRANCH" =~ .*fix-plu$ ]]; then
apiTestsVersion=$(echo $GIT_BRANCH | cut -d'/' -f 2)
apiTestsVersion=$(echo $apiTestsVersion | cut -d'-' -f 1)
echo apiTestsVersion
curl -X POST \
-F token=${ROBOT_HIVE_TAP_TT_TOKEN} \
-F ref=master \
-F "variables[API_TESTS_VERSION]=$apiTestsVersion" \
-F "variables[TEST_SUITE]=MEC" \
https://forge.etsi.org/rep/api/v4/projects/484/trigger/pipeline
fi
ret=$?
echo "Final validation result: $ret"
exit $ret
......@@ -25,7 +25,8 @@ Should Be Present In Json List
[Arguments] ${expr} ${json_field} ${json_value}
Log Check if ${json_field} is present in ${expr} with the value ${json_value}
:FOR ${item} IN @{expr}
\ Exit For Loop If ${item[${json_field}]} == ${json_value}
\ ${are_equal}= Should Be Equal As Strings ${item["${json_field}"]} ${json_value}
\ Exit For Loop If ${are_equal}
Log Item found ${item}
[return] ${item}
......
''[Documentation] robot --outputdir ./outputs ./SRV/UETAG/PlatUeIdentity.robot
... Test Suite to validate UE Identity Tag (UETAG) operations.
''[Documentation] robot --outputdir ./outputs ./Grant.robot
... Test Suite to validate Grant operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../GenericKeywords.robot
Resource ../../../GenericKeywords.robot
Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false
Library OperatingSystem
*** Test Cases ***
Request a new Grant - Synchronous mode
[Documentation] TP_MEC_MEO_GRANT_001_OK
TC_MEC_MEC010p2_MEO_GRANT_001_OK
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_OK
... Check that MEO sends a synchronous grant response when a grant request is requested
... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.1
... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.2.2-1 (GrantRequest)
... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 (Grant)
... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest)
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest)
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRequest
Check HTTP Response Status Code Is 201
Check HTTP Response Header Contains Location
Check HTTP Response Body Json Schema Is Grant
Request a new Grant - Malformed request
[Documentation] TP_MEC_MEO_GRANT_001_BR
TC_MEC_MEC010p2_MEO_GRANT_001_BR
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_BR
... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed
... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2
... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 (Grant)
... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRejectedRequest
Create a GRANT request grantBadRequest
Check HTTP Response Status Code Is 400
TC_MEC_MEC010p2_MEO_GRANT_002_OK
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_002_OK
... Check that MEO sends a synchronous grant response when a grant request is requested
... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 //GrantRequest
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRequest2
Check HTTP Response Status Code Is 201
Check HTTP Response Header Contains Location
Check HTTP Response Body Json Schema Is Grant
Request a new Grant - Asynchronous mode
[Documentation] TP_MEC_MEO_GRANT_002_OK
... Check that MEO sends a asynchronous grant response when a grant request is requested
... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.1
... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 (Grant)
TC_MEC_MEC010p2_MEO_GRANT_003_OK
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_003_OK
... Check that MEO sends an asynchronous grant response when a grant request is requested
... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest)
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest)
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRequest
Create a GRANT request grantRequestAsynchronous
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
Request an individual grant - Ongoing process
[Documentation] TP_MEC_MEO_GRANT_003_OK
TC_MEC_MEC010p2_MEO_GRANT_004_OK
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_004_OK
... Check that MEO sends an asynchronous grant response when a grant request is requested
... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest)
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRequestAsynchronous2
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
TC_MEC_MEC010p2_MEO_GRANT_005_OK
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_005_OK
... Check that MEO sends the status of a grant request when a query on a granting ID is performed.
... The process of creating the grant is ongoing, no grant is available yet
... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2
... ETSI GS MEC 010-2 2.2.1, clause 7.5.2.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual grant ${grantId}
Get an individual grant ${GRANT_ID_ACCEPTED}
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
TC_MEC_MEC010p2_MEO_GRANT_006_OK
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_006_OK
... Check that MEO sends the status of a grant request when a query on a granting ID is performed.
... The process of creating the grant is ongoing, no grant is available yet
... ETSI GS MEC 010-2 2.2.1, clause 7.5.2.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual grant ${GRANT_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Header Contains Location
Check HTTP Response Body Json Schema Is Grant
Request an individual grant using non existant grant identifier
[Documentation] TP_MEC_MEO_GRANT_003_NF
... Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID
... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2
TC_MEC_MEC010p2_MEO_GRANT_006_NF
[Documentation] TP_MEC_MEC010p2_MEO_GRANT_006_NF
... Check that MEO responds with an error when it receives
... a request for returning a grant referred with a wrong ID
... ETSI GS MEC 010-2 2.1.1, clause 7.5.2.3.2
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual grant ${non_existant_grant_id}
Get an individual grant ${NOT_EXISTING_GRANT_ID}
Check HTTP Response Status Code Is 404
Request an individual grant - Successful
[Documentation] TP_MEC_MEO_GRANT_004_OK
... Check that MEO sends the status of a grant request when a query on a granting ID is performed
... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2
... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual grant ${grantId}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is Grant
*** Keywords ***
Create a GRANT request
......@@ -99,7 +121,7 @@ Create a GRANT request
Get an individual grant
[Arguments] ${grantId}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} allow_redirects=false
${output}= Output response
......
*** Variables ***
# Generic variables
${MEO_SCHEMA} http
${MEO_HOST} 10.192.2.172
#${MEO_HOST} 10.192.2.172
${MEO_HOST} 127.0.0.1
${MEO_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
......@@ -10,8 +11,10 @@ ${apiName} granting
${apiVersion} v1
# Specific variables
${grantId} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${non_existant_grant_id} non_existant_grant_id
${GRANT_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${GRANT_ID_ACCEPTED} abcdee2b-6e50-4f33-ab09-8bf05850abcd
${NOT_EXISTING_GRANT_ID} NOT_EXISTING_GRANT_ID
${APP_INSTANCE_ID} 456
# Notifications variables
......
{
"id": "123",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"operationERROR":"INSTANTIATE"
}
\ No newline at end of file
{
"id": "123",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"operationERROR":"INSTANTIATE"
}
\ No newline at end of file
{
"id": "123",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"appDId":"appDId",
"operation":"INSTANTIATE",
"addResources": [
{
"resourceDefinitionId": "resourceDefinitionId",
"vimConnectionId": "vimConnectionId",
"resourceGroupId": "resourceGroupId",
"zoneId": "zoneId"
}
],
"_links": {
"appLcmOpOcc": {
"href": "https://anexample.ex/"
},
"appInstance": {
"href": "https://anexample.ex/"
}
}
}
\ No newline at end of file
{
"id": "123",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"operation": "OPERATE",
"addResources": [
{
"resourceDefinitionId": "resourceDefinitionId",
"vimConnectionId": "vimConnectionId",
"resourceGroupId": "resourceGroupId",
"zoneId": "zoneId"
}
],
"_links": {
"appLcmOpOcc": {
"href": "https://anexample.ex/"
},
"appInstance": {
"href": "https://anexample.ex/"
}
}
}
\ No newline at end of file
{
"id": "456",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"operation": "INSTANTIATE",
"addResources": [
{
"resourceDefinitionId": "resourceDefinitionId",
"vimConnectionId": "vimConnectionId",
"resourceGroupId": "resourceGroupId",
"zoneId": "zoneId"
}
],
"_links": {
"appLcmOpOcc": {
"href": "https://anexample.ex/"
},
"appInstance": {
"href": "https://anexample.ex/"
}
}
}
\ No newline at end of file
{
"id": "456",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"operation": "OPERATE",
"addResources": [
{
"resourceDefinitionId": "resourceDefinitionId",
"vimConnectionId": "vimConnectionId",
"resourceGroupId": "resourceGroupId",
"zoneId": "zoneId"
}
],
"_links": {
"appLcmOpOcc": {
"href": "https://anexample.ex/"
},
"appInstance": {
"href": "https://anexample.ex/"
}
}
}
\ No newline at end of file
{
"id": "123",
"appInstanceId": "456",
"appLcmOpOccId": "789",
"operation": "INSTANTIATE",
"_links": {
"appLcmOpOcc": {
"href": "https://anexample.ex/"
},
"appInstance": {
"href": "https://anexample.ex/"
}
}
}
\ No newline at end of file
{
"description": "'This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 '",
"type": "object",
"required": [
"id",
"appInstanceId",
"appLcmOpOccId",
"_links"
],
"properties": {
"id": {
"type": "string"
},
"appInstanceId": {
"description": "Identifier of application instance.",
"type": "string"
},
"appLcmOpOccId": {
"description": "Identifier of application lifecycle management operation occurrence.",
"type": "string"
},
"vimConnections": {
"type": "array",
"items": {
"properties": {
"accessInfo": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
},
"extra": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
},
"id": {
"description": "The identifier of the VIM Connection. This identifier is managed by the MEO.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"interfaceInfo": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
},
"vimId": {
"description": "The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimType": {
"description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. ",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"id",
"vimType"
],
"type": "object",
"x-etsi-ref": "6.2.2.18"
}
},
"zones": {
"type": "array",
"items": {
"properties": {
"id": {
"description": "The identifier of this ZoneInfo instance, for the purpose of referencing it from other structures in the \"Grant\" structure.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"zoneId": {
"description": "The identifier of the resource zone, as managed by the resource management layer (typically, the VIM).",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"id",
"zoneId"
],
"type": "object",
"x-etsi-ref": "6.2.4.6f"
}
},
"zoneGroups": {
"type": "array",
"items": {
"properties": {
"zoneId": {
"description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"zoneId"
],
"type": "object",
"x-etsi-ref": "6.2.4.7"
}
},
"addResources": {
"type": "array",
"items": {
"properties": {
"resourceDefinitionId": {
"description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"resourceGroupId": {
"description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"zoneId": {
"description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"resourceDefinitionId"
],
"type": "object",
"x-etsi-ref": "6.2.4.5"
}
},
"tempResources": {
"type": "array",
"items": {
"properties": {
"resourceDefinitionId": {
"description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"resourceGroupId": {
"description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"zoneId": {
"description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"resourceDefinitionId"
],
"type": "object",
"x-etsi-ref": "6.2.4.5"
}
},
"removeResources": {
"type": "array",
"items": {
"properties": {
"resourceDefinitionId": {
"description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"resourceGroupId": {
"description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"zoneId": {
"description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"resourceDefinitionId"
],
"type": "object",
"x-etsi-ref": "6.2.4.5"
}
},
"updateResources": {
"type": "array",
"items": {
"properties": {
"resourceDefinitionId": {
"description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"resourceGroupId": {
"description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"zoneId": {
"description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"resourceDefinitionId"
],
"type": "object",
"x-etsi-ref": "6.2.4.5"
}
},
"vimAssets": {
"description": "Information about assets for the application that are managed by the MEO in the VIM, such as software images.",
"type": "object",
"properties": {
"softwareImages": {
"type": "array",
"items": {
"properties": {
"appDSoftwareImageId": {
"description": "Identifier which references the software image descriptor in the AppD.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to access the software image referenced in this structure. ",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimSoftwareImageId": {
"description": "Identifier of the software image in the resource management layer (i.e. VIM).",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"appDSoftwareImageId",
"vimSoftwareImageId"
],
"type": "object",
"x-etsi-ref": "6.2.4.11"
}
}
}
},
"extVirtualLinks": {
"type": "array",
"items": {
"properties": {
"extCps": {
"description": "External CPs of the application instance to be connected to this external VL.",
"items": {
"properties": {
"cpConfig": {
"description": "List of instance data that need to be configured on the CP instances created from the respective CPD.",
"items": {
"properties": {
"cpInstanceId": {
"description": "Identifier of the external CP instance to which this set of configuration parameters is requested to be applied. \n\nShall be present if this instance has already been created. ",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"cpProtocolData": {
"description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note.",
"items": {
"properties": {
"ipOverEthernet": {
"description": "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'",
"type": "object",
"properties": {
"macAddress": {
"description": "'MAC address. If this attribute is not present, it shall be chosen by the VIM'",
"type": "string"
},
"ipAddresses": {
"description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.",
"type": "array",
"items": {
"description": "'IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.'",
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"description": "The type of the IP addresses.",
"type": "string",
"enum": [
"IPV4",
"IPV6"
]
},
"fixedAddresses": {
"description": "Fixed addresses to assign (from the subnet defined by subnetId if provided).",
"type": "array",
"items": {
"description": "Fixed addresses to assign (from the subnet defined by subnetId if provided)",
"type": "string"
}
},
"numDynamicAddresses": {
"description": "Number of dynamic addresses to assign (from the subnet defined by subnetId if provided)",
"type": "integer"
},
"addressRange": {
"description": "An IP address range to be used, e.g. in case of egress connections.",
"type": "object",
"required": [
"minAddress",
"maxAddress"
],
"properties": {
"minAddress": {
"description": "Lowest IP address belonging to the range.",
"type": "string"
},
"maxAddress": {
"description": "Highest IP address belonging to the range.",
"type": "string"
}
}
},
"subnetId": {
"description": "Subnet defined by the identifier of the subnet resource in the VIM.",
"type": "string"
}
}
}
}
}
},
"layerProtocol": {
"description": "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'",
"type": "object",
"properties": {
"macAddress": {
"description": "'MAC address. If this attribute is not present, it shall be chosen by the VIM'",
"type": "string"
},
"ipAddresses": {
"description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.",
"type": "array",
"items": {
"description": "'IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.'",
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"description": "The type of the IP addresses.",
"type": "string",
"enum": [
"IPV4",
"IPV6"
]
},
"fixedAddresses": {
"description": "Fixed addresses to assign (from the subnet defined by subnetId if provided).",
"type": "array",
"items": {
"description": "Fixed addresses to assign (from the subnet defined by subnetId if provided)",
"type": "string"
}
},
"numDynamicAddresses": {
"description": "Number of dynamic addresses to assign (from the subnet defined by subnetId if provided)",
"type": "integer"
},
"addressRange": {
"description": "An IP address range to be used, e.g. in case of egress connections.",
"type": "object",
"required": [
"minAddress",
"maxAddress"
],
"properties": {
"minAddress": {
"description": "Lowest IP address belonging to the range.",
"type": "string"
},
"maxAddress": {
"description": "Highest IP address belonging to the range.",
"type": "string"
}
}
},
"subnetId": {
"description": "Subnet defined by the identifier of the subnet resource in the VIM.",
"type": "string"
}
}
}
}
}
}
},
"required": [
"layerProtocol"
],
"type": "object",
"x-etsi-notes": "NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.",
"x-etsi-ref": "6.2.4.14"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "CpProtocolData"
},
"linkPortId": {
"description": "Identifier of a pre-configured link port to which the external CP will be associated. See note.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"type": "object",
"x-etsi-notes": "NOTE:\tThe following conditions apply to the attributes \"linkPortId\" and \" cpProtocolData\": \nThe \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance addressed by cpInstanceId. \nAt least one of these attributes shall be present for a to-be-created external CP instance or an existing external CP instance.\nIf the \"linkPortId\" attribute is absent, the MEPM shall create a link port.\nIf the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port, and the MEPM can use means outside the scope of the present document to obtain the pre-configured address information for the connection point from the resource representing the link port.\nIf both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".",
"x-etsi-ref": "6.2.4.13"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "AppExtCpConfig"
},
"cpdId": {
"description": "The identifier of the CPD in the AppD.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"cpdId",
"cpConfig"
],
"type": "object",
"x-etsi-ref": "6.2.4.12"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "AppExtCpData"
},
"extLinkPorts": {
"description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the MEPM shall create the link ports on the external VL.",
"items": {
"properties": {
"id": {
"description": "Identifier of this link port as provided by the entity that has created the link port.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"resourceHandle": {
"properties": {
"resourceId": {
"description": "Identifier of the resource in the scope of the VIM.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to manage the resource.The applicable \"VimConnectionInfo\" structure, which is referenced by vimConnectionId, can be obtained from the \"vimConnectionInfo\" attribute of the \"AppInstance\" structure.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"vimLevelResourceType": {
"description": "Type of the resource in the scope of the VIM. See note.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"resourceId"
],
"type": "object",
"x-etsi-notes": "NOTE:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition.",
"x-etsi-ref": "6.2.4.10"
}
},
"required": [
"id",
"resourceHandle"
],
"type": "object",
"x-etsi-ref": "6.2.4.9"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "ExtLinkPortData"
},
"id": {
"description": "The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"resourceId": {
"description": "The identifier of the resource in the scope of the VIM.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"vimConnectionId": {
"description": "Identifier of the VIM connection to manage this resource. ",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"id",
"resourceId",
"extCps"
],
"type": "object",
"x-etsi-ref": "6.2.4.8"
}
},
"additionalParams": {
"description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
"type": "object",
"additionalProperties": true
},
"_links": {
"description": "Links to resources related to this resource.",
"type": "object",
"required": [
"appLcmOpOcc",
"appInstance"
],
"properties": {
"appLcmOpOcc": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"appInstance": {
"properties": {
"href": {
"description": "URI referring to a resource",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "URI"
}
},
"required": [
"href"
],
"type": "object",
"x-etsi-ref": "6.5.2"
}
}
}
}
}
\ No newline at end of file
''[Documentation] robot --outputdir ./outputs ./SRV/UETAG/PlatUeIdentity.robot
... Test Suite to validate UE Identity Tag (UETAG) operations.
''[Documentation] robot --outputdir ./outputs ./AppPkgMgt.robot
... Test Suite to validate Package Management (PKGM) operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../GenericKeywords.robot
Resource ../../../GenericKeywords.robot
Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
Library MockServerLibrary
#Library MockServerLibrary
*** Test Cases ***
Create new App Package Resource
[Documentation] TP_MEC_MEO_PKGM_001_OK
TC_MEC_MEC010p2_MEO_PKGM_001_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_001_OK
... 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)
... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo)
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.2.2-1 (AppPkg)
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Post Request to create new App Package Resource AppPkg
Post Request to create new App Package Resource CreateAppPackage.json
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is OnboardedAppPkgInfos
Check HTTP Response Body Json Schema Is AppPkgInfo
Check HTTP Response Header Contains Location
Check Result Contains ${response} appName ${APP_PKG_NAME}
Check Result Contains ${response} appDVersion ${APP_PKG_VERSION}
Check Result Contains ${response} checksum ${CHECKSUM}
Check Result Contains ${response} operationalState ${OPERATIONAL_STATE}
Check Result Contains ${response} usageState ${USAGE_STATE}
Should Be Equal As Strings ${response['body']['appDVersion']} ${APP_PKG_VERSION}
Should Be Equal As Strings ${response['body']['checksum']['algorithm']} ${CHECKSUM}
Should Be Equal As Strings ${response['body']['operationalState']} ${OPERATIONAL_STATE}
Should Be Equal As Strings ${response['body']['onboardingState']} ${ONBOARDING_STATE}
Should Be Equal As Strings ${response['body']['usageState']} ${USAGE_STATE}
Create new App Package Resource using malformed request
[Documentation] TP_MEC_MEO_PKGM_001_BR
TC_MEC_MEC010p2_MEO_PKGM_001_BR
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_001_BR
... 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.2.2-1 (AppPkg)
... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.2.2-1 (AppPkg)
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Post Request to create new App Package Resource MalformedAppPkg
Post Request to create new App Package Resource CreateAppPackageBadRequest.json
Check HTTP Response Status Code Is 400
Request all APP Packages
[Documentation] TP_MEC_MEO_PKGM_002_OK
... 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)
TC_MEC_MEC010p2_MEO_PKGM_002_01_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_002_01_OK
... Check that MEO returns the list of App Packages when requested - Note 3
... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET all APP Packages
GET all app Packages
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is OnboardedAppPkgInfos
Check Result Contains ${response} appPkgId ${ON_BOARDED_APP_PKG_ID}
Check Result Contains ${response} appDId ${APPD_ID}
FOR ${onBoardedAppPkgInfo} IN @{response['body']}
Validate Json AppPkgInfo.schema.json ${onBoardedAppPkgInfo}
END
TC_MEC_MEC010p2_MEO_PKGM_002_02_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_002_02_OK
... Check that MEO returns the list of App Packages when requested - Note 3
... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET all onboarded app Packages
Check HTTP Response Status Code Is 200
FOR ${onBoardedAppPkgInfo} IN @{response['body']}
Validate Json AppPkgInfo.schema.json ${onBoardedAppPkgInfo}
END
Request all APP Packages using bad attribute-based filtering parameter
TC_MEC_MEC010p2_MEO_PKGM_002_BR
[Documentation] TP_MEC_MEO_PKGM_002_BR
... 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.2.1, clause 7.3.1.3.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE}
Check HTTP Response Status Code Is 400
Request an individual APP Package
[Documentation] TP_MEC_MEO_PKGM_003_OK
... 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)
TC_MEC_MEC010p2_MEO_PKGM_003_01_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_01_OK
... Check that MEO returns the an App Package when requested - Note 3
... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET an APP Package identified by ${ON_BOARDED_APP_PKG_ID}
GET an app Package identified by ${ON_BOARDED_APP_PKG_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is OnboardedAppPkgInfo
Check Result Contains ${response} appPkgId ${ON_BOARDED_APP_PKG_ID}
Check Result Contains ${response} appDId ${APPD_ID}
Check HTTP Response Body Json Schema Is AppPkgInfo
Should Be Equal As Strings ${response['body']['id']} ${ON_BOARDED_APP_PKG_ID}
Should Be Equal As Strings ${response['body']['appName']} ${APP_NAME}
TC_MEC_MEC010p2_MEO_PKGM_003_02_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_02_OK
... Check that MEO returns the an onboarded App Package when requested - Note 3
... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET an onboarded app Package identified by ${ON_BOARDED_APP_PKG_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppPkgInfo
Should Be Equal As Strings ${response['body']['id']} ${ON_BOARDED_APP_PKG_ID}
Should Be Equal As Strings ${response['body']['appName']} ${APP_NAME}
Request an individual APP Package using wrong identifier
[Documentation] TP_MEC_MEO_PKGM_003_NF
TC_MEC_MEC010p2_MEO_PKGM_003_NF
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_NF
... 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.1.3.2
... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo)
... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET an APP Package identified by ${NON_EXISTENT_APP_PKG_ID}
Check HTTP Response Status Code Is 404
Remove an individual APP Package
TC_MEC_MEC010p2_MEO_PKGM_004_OK
[Documentation] TP_MEC_MEO_PKGM_004_OK
... Check that MEO deletes an App Package when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.4
... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.4
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an individual APP Package identified by ${ON_BOARDED_APP_PKG_ID}
Check HTTP Response Status Code Is 204
Check HTTP Response Body is Empty
Remove an individual APP Package using wrong identifier
TC_MEC_MEC010p2_MEO_PKGM_004_NF
[Documentation] TP_MEC_MEO_PKGM_004_NF
... 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.2.1, clause 7.3.2.3.4
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an individual APP Package identified by ${NON_EXISTENT_APP_PKG_ID}
Check HTTP Response Status Code Is 404
Request a Operational state update on an APP Package
[Documentation] TP_MEC_MEO_PKGM_005_OK
... 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
TC_MEC_MEC010p2_MEO_PKGM_005_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_OK
... Check that MEO updates the operational state of an individual application package resource
... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Update Operational State for an APP Package ${ON_BOARDED_APP_PKG_ID} ${OPERATION_VALUE}
Update Operational State for an app Package ${ON_BOARDED_APP_PKG_ID} AppPkgInfoModifications.json
Check HTTP Response Body Json Schema Is AppPkgInfoModifications
Check HTTP Response Status Code Is 200
Check HTTP Response Body is Empty
Should Be Equal As Strings ${response['body']['operationalState']} ${OPERATIONAL_STATE}
Request a Operational state update on an APP Package using wrong operation value
[Documentation] TP_MEC_MEO_PKGM_005_BR
TC_MEC_MEC010p2_MEO_PKGM_005_BR
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_BR
... 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
... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Update Operational State for an APP Package ${ON_BOARDED_APP_PKG_ID} WRONG_OP_VALUE
Update Operational State for an app Package ${ON_BOARDED_APP_PKG_ID} AppPkgInfoModificationsBadRequest.json
Check HTTP Response Status Code Is 400
Request a Operational state update on a non onboarded APP Package
[Documentation] TP_MEC_MEO_PKGM_005_NF
... 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
TC_MEC_MEC010p2_MEO_PKGM_005_NF
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_NF
... 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.2.1, clause 7.3.2.3.5
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Update Operational State for an APP Package ${NON_EXISTENT_APP_PKG_ID} ${OPERATION_VALUE}
Update Operational State for an app Package ${NON_EXISTENT_APP_PKG_ID} AppPkgInfoModificationsBadRequest.json
Check HTTP Response Status Code Is 404
Request the App Descriptor of an App Package
[Documentation] TP_MEC_MEO_PKGM_006_OK
... 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
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an AppD from App Package identified by ${ON_BOARDED_APP_PKG_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Contain Header with value Content-Type ${ACCEPTED_CONTENT_TYPE}
Request the App Descriptor of an App Package using a non onboarded APP Package
[Documentation] TP_MEC_MEO_PKGM_006_NF
... 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
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an AppD from App Package identified by ${NON_EXISTENT_APP_PKG_ID}
Check HTTP Response Status Code Is 404
Create a new App Packages Subscription
[Documentation] TP_MEC_MEO_PKGM_007_OK
... 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
... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.7.2-1 (AppPkgSubscription)
... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionInfo)
TC_MEC_MEC010p2_MEO_PKGM_006_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_006_OK
... Check that MEO service returns an application package subscription when requested
... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for a subscription AppPkgSubscription
Send a request for a subscription AppPkgSubscription.json
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo
Check Result Contains ${response} subscriptionType ON_BOARDING
Check Result Contains ${response} callbackUri ${CALLBACK_URI}
Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUBSCRIPTION_TYPE}
Should Be Equal As Strings ${response['body']['callbackUri']} ${CALLBACK_URI}
Create a new App Packages Subscription with malformed parameter
[Documentation] TP_MEC_MEO_PKGM_007_BR
... 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
... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.7.2-1 (AppPkgSubscription)
TC_MEC_MEC010p2_MEO_PKGM_006_BR
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_006_BR
... 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.2.1, clause 7.3.4.3.1",
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4",
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for a subscription MalformedAppPkgSubscription
Send a request for a subscription AppPkgSubscriptionBadRequest.json
Check HTTP Response Status Code Is 400
Request all App Package subscriptions
[Documentation] TP_MEC_MEO_PKGM_008_OK
TC_MEC_MEC010p2_MEO_PKGM_007_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_007_OK
... 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
... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionLinkList)
... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.2
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get all APP Package subscriptions
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppPkgSubscriptionLinkList
Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID}
Request a specific App Package subscription
[Documentation] TP_MEC_MEO_PKGM_009_OK
TC_MEC_MEC010p2_MEO_PKGM_008_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_008_OK
... 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
... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionInfo)
... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual APP Package subscriptions ${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo
Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID}
Request a specific App Package subscription using non existant subscription identifier
[Documentation] TP_MEC_MEO_PKGM_009_NF
... Check that MEO service sends an error when it receives a query for a subscription
... on AppPackages with a wrong identifier
... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.2
Should Be Equal As Strings ${response['body']['id']} ${SUBSCRIPTION_ID}
TC_MEC_MEC010p2_MEO_PKGM_008_NF
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_008_NF
... Check that MEO service sends an error when it receives a query for a subscription on AppPackages with a wrong identifier
... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual APP Package subscriptions ${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
Remove a APP Package subscription
[Documentation] TP_MEC_MEO_PKGM_010_OK
TC_MEC_MEC010p2_MEO_PKGM_009_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_OK
... Check that MEO service deletes an Application Package Subscription when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.4
... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an App Package Subscription identified by ${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
Check HTTP Response Body is Empty
Remove a APP Package subscription using non existant subscription id
[Documentation] TP_MEC_MEO_PKGM_010_NF
... Check that MEO service sends an error when it receives a deletion request
... for a subscription on AppPackages with a wrong identifier
... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.4
TC_MEC_MEC010p2_MEO_PKGM_009_NF
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_NF
... Check that MEO service sends an error when it receives a deletion request for a subscription on AppPackages
... with a wrong identifier
... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
TC_MEC_MEC010p2_MEO_PKGM_011_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_011_OK
... Check that MEO reads the content of the AppD of on-boarded individual application package resources when requested
... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an AppD from App Package identified by ${ON_BOARDED_APP_PKG_ID}
Check HTTP Response Status Code Is 200
TC_MEC_MEC010p2_MEO_PKGM_011_NF
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_011_NF
... 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.2.1, clause 7.3.6.3.2",
... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an AppD from App Package identified by ${NON_EXISTING_APPD_ID}
Check HTTP Response Status Code Is 404
TC_MEC_MEC010p2_MEO_PKGM_012_01_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_01_OK
... Check that MEO fetches the application package content identified by appPkgId when requested
... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get app Package identified by ${ON_BOARDED_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP}
Check HTTP Response Status Code Is 200
TC_MEC_MEC010p2_MEO_PKGM_012_02_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_02_OK
... Check that MEO fetches the application package content identified by appPkgId when requested
... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get onboarded app Package identified by ${ON_BOARDED_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP}
Check HTTP Response Status Code Is 200
TC_MEC_MEC010p2_MEO_PKGM_012_BR
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_BR
... Check that MEO service sends an error when it receives a malformed request
... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get app Package identified by ${ON_BOARDED_APP_PKG_ID} ${WRONG_CONTENT_TYPE}
Check HTTP Response Status Code Is 400
TC_MEC_MEC010p2_MEO_PKGM_013_OK
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_OK
... Check that MEO accepts application package when submitted
... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3
... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Submit application package ${APP_PKG_ID}
Check HTTP Response Status Code Is 202
TC_MEC_MEC010p2_MEO_PKGM_013_NF
[Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_NF
... Check that MEO returns an error when an application package with wrong id is submitted
... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3
... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Submit application package ${NOT_EXISTING_APP_PKG_ID}
Check HTTP Response Status Code Is 404
Post Application Package Notification
[Documentation] TP_MEC_MEO_PKGM_011_OK
... Check that the MEO service sends a application package notification
... if the MEO service has an associated subscription and the event is generated
... ETSI GS MEC 010-2 2.0.10, clause 7.3.5.1
${json}= Get File schemas/AppPkgNotification.schema.json
Log Creating mock request and response to handle Application Package Notification
&{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json}
&{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204
Create Mock Expectation ${req} ${rsp}
Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req}
Log Verifying results
Verify Mock Expectation ${req}
Log Cleaning the endpoint
Clear Requests ${callback_endpoint}
*** Keywords ***
Post Request to create new App Package Resource
[Arguments] ${content}
Log Creating a new App Package
Set Headers {"Accept":"application/json"}
Set Headers {"Accept":"*/*"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Post ${apiRoot}/${apiName}/${apiVersion}/app_packages ${content} allow_redirects=false
${path} Catenate SEPARATOR= jsons/ ${content}
${body} Get File ${path}
Post ${apiRoot}/${apiName}/${apiVersion}/app_packages ${body} allow_redirects=false
${output}= Output response
Set Suite Variable ${response} ${output}
GET all APP Packages
GET all app Packages
Log Getting all App Packages
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages
${output}= Output response
Set Suite Variable ${response} ${output}
GET all onboarded app Packages
Log Getting all App Packages
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages
${output}= Output response
Set Suite Variable ${response} ${output}
GET all APP Packages with filters
GET all app Packages with filters
[Arguments] ${key} ${value}
Log Getting all App Packages using filtering parameters
Set Headers {"Accept":"application/json"}
......@@ -284,23 +360,33 @@ GET all APP Packages with filters
Set Suite Variable ${response} ${output}
GET an APP Package identified by
GET an app Package identified by
[Arguments] ${value}
Log Getting an App Package
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value}
${output}= Output response
Set Suite Variable ${response} ${output}
GET an onboarded app Package identified by
[Arguments] ${value}
Log Getting an App Package
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${value}
${output}= Output response
Set Suite Variable ${response} ${output}
Delete an individual APP Package identified by
[Arguments] ${value}
Log Removing an App Package
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Delete ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value}
${output}= Output response
......@@ -308,13 +394,15 @@ Delete an individual APP Package identified by
Update Operational State for an APP Package
[Arguments] ${appPkgId} ${operation}
Update Operational State for an app Package
[Arguments] ${appPkgId} ${content}
Log Updating an App Package
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}?appPkgOperation=${operation}
${path} Catenate SEPARATOR= jsons/ ${content}
${body} Get File ${path}
PATCH ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
......@@ -325,47 +413,81 @@ Get an AppD from App Package identified by
Log Getting App descriptor for App Package
Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/addDId
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/appd
${output}= Output response
Set Suite Variable ${response} ${output}
Get app Package identified by
[Arguments] ${appPkgId} ${CONTENT_TYPE}
Log Getting App descriptor for App Package
Set Headers {"Accept":"${CONTENT_TYPE}"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/package_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get onboarded app Package identified by
[Arguments] ${appPkgId} ${CONTENT_TYPE}
Log Getting App descriptor for App Package
Set Headers {"Accept":"${CONTENT_TYPE}"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appPkgId}/package_content
${output}= Output response
Set Suite Variable ${response} ${output}
Submit application package
[Arguments] ${appPkgId}
Log Getting App descriptor for App Package
Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE_ZIP}"}
Set Headers {"Authorization":"${TOKEN}"}
Put ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/package_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send a request for a subscription
[Arguments] ${content}
Log Creating a new subscription
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${content}
${path} Catenate SEPARATOR= jsons/ ${content}
${body} Get File ${path}
Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Get all APP Package subscriptions
Get all app Package subscriptions
Log Getting list of subscriptions
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
Get an individual APP Package subscriptions
[Arguments] ${subId}
Log Getting an individual subscription
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId}
${output}= Output response
Set Suite Variable ${response} ${output}
Delete an App Package Subscription identified by
[Arguments] ${subId}
Log Deleting a subscription
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId}
${output}= Output response
......
*** Variables ***
# Generic variables
${MEO_SCHEMA} http
${MEO_HOST} 10.192.2.172
${MEO_HOST} 127.0.0.1
#${MEO_HOST} 10.192.2.172
${MEO_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} apmi
${apiName} app_pkgm
${apiVersion} v1
# Specific variables
${APP_PKG_NAME} APP_PKG_NAME // Should be the same as in AppPkg.json
${APP_PKG_VERSION} APP_PKG_VERSION // Should be the same as in AppPkg.json
${CHECKSUM} CHECKSUM // Should be the same as in AppPkg.json
${OPERATIONAL_STATE} OPERATIONAL_STATE // Should be the same as in AppPkg.json
${USAGE_STATE} USAGE_STATE // Should be the same as in AppPkg.json
${APP_PKG_NAME} appName
${APP_PKG_VERSION} APP_PKG_VERSION
${APP_NAME} appName
${CHECKSUM} SHA-256
${OPERATIONAL_STATE} ENABLED
${ONBOARDING_STATE} CREATED
${USAGE_STATE} NOT_IN_USE
${APP_PKG_ID} 01234782-2c70-4e47-9a4e-0ee3a1a00123
${ON_BOARDED_APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${MALFORMED_FILTER_NAME} operationalStatus // Should be operationalState
${MALFORMED_FILTER_NAME} operationalStatus
${FILTER_VALUE} NOT_IN_USE
${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID
${NON_EXISTING_APPD_ID} NON_EXISTENT_APPD_ID
${OPERATION_VALUE} DISABLE
${WRONG_OPERATION_VALUE} DISABL
${ACCEPTED_CONTENT_TYPE} text/plain // Should refer to the type of AppD
${ACCEPTED_CONTENT_TYPE} text/plain; charset=utf-8
${ACCEPTED_CONTENT_TYPE_ZIP} application/zip
${WRONG_CONTENT_TYPE} application/json
${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${NOT_EXISTING_APP_PKG_ID} NOT_EXISTING_APP_PKG_ID
${SUBSCRIPTION_TYPE} MobilityProcedureSubscription
${SUBSCRIPTION_TYPE} AppPackageOnBoardingSubscription
${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID
${CALLBACK_URI} http://some.url/somepath
# Notifications variables
......
{
"operationalState": "ENABLED"
}
\ No newline at end of file
{
"operationalState": "DISABL"
}
\ No newline at end of file
{
"id": "1234",
"subscriptionType": "AppPackageOnBoardingSubscription",
"callbackUri": "http://172.22.1.7:9091",
"_links": {
"self": {
"href": "https://app_lcm/subscriptions/1234"
}
}
}
\ No newline at end of file
{
"id": "1234",
"subscriptionType": "ON-BOARDING",
"callbackUri": "http://172.22.1.7:9091",
"_links": {
"self": {
"href": "https://app_lcm/subscriptions/1234"
}
}
}
\ No newline at end of file