Commit 719d4daf authored by Elian Kraja's avatar Elian Kraja
Browse files

Refactoring generic elements. Added MEC-021 Robotframework code

parents c38aaf8c 049d3a21
......@@ -28,7 +28,6 @@ Should Be Present In Json List
Log Item found ${item}
[return] ${item}
Check Result Contains
Check Result Contains
[Arguments] ${source} ${parameter} ${value}
Should Be Present In Json List ${source} ${parameter} ${value}
\ No newline at end of file
Should Be Present In Json List ${source} ${parameter} ${value}
''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot
... Test Suite to validate RNIS/Subscription (RNIS) operations.
*** Settings ***
Resource environment/variables.txt
Resource environment/pics.txt
Resource resources/GenericKeywords.robot
Resource resources/RadioNetworkInformationAPI.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** Test Cases ***
Request RNIS subscription list
[Documentation] TC_MEC_SRV_RNIS_011_OK
... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested
... ETSI GS MEC 012 2.0.4, clause 7.6.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/SubscriptionLinkList
Get RNIS subscription list
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
log ${response['body']['SubscriptionLinkList']['_links']}
Should Be Equal ${response['body']['SubscriptionLinkList']['_links']['self']} ${LINKS_SELF}
*** Keywords ***
Get RNIS subscription list
Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Get /exampleAPI/rni/v2/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
*** Variables ***
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
*** Variables ***
${MEC-APP_SCHEMA} http
#${MEC-APP_HOST} 172.28.4.87
#${MEC-APP_HOST} 127.0.0.1
${MEC-APP_HOST} 192.168.56.1
${MEC-APP_PORT} 8081
${SUBSCRIPTION_ID} 7777
${NON_EXISTENT_SUBSCRIPTION_ID} 6666
${LINKS_SELF} http://example.com/exampleAPI/rni/v2/subscriptions
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
*** Settings ***
Resource ../environment/variables.txt
Resource GenericKeywords.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
Library JSONSchemaLibrary schemas/
*** Keywords ***
Get User Equipment for location with filters
[Arguments] ${value}
Set Headers {"Accept":"application/json"}
Get /location/v2/users/${value}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['status']} ${status}
Log Status code validated
Check HTTP Response Body Json Schema Is
[Arguments] ${input}
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = Catenate SEPARATOR= ${input} .schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Should Be Present In Json List
[Arguments] ${expr} ${json_field} ${json_value}
Log Check if ${json_field} is present in ${expr} with the value ${jsonvalue}
:FOR ${item} IN @{expr}
\ Exit For Loop If "${item['${json_field}']}" == "${json_value}"
Log Item found ${item}
[return] ${item}
Check Result Contains
[Arguments] ${source} ${parameter} ${value}
Should Be Present In Json List ${source} ${parameter} ${value}
*** Settings ***
Resource ../environment/variables.txt
Resource LocationAPI.robot
#Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
Library JSONSchemaLibrary schemas/
*** Keywords ***
Check Location
[Arguments] ${value}
Log Check Location for userInfo element
Should be Equal ${response['body']['userInfo']['zoneId']} ${value}
Log Location OK
*** Settings ***
Resource ../environment/variables.txt
Resource ../environment/pics.txt
Resource GenericKeywords.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
Library JSONSchemaLibrary schemas/
*** Keywords ***
{
"ProblemDetails": {
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/Problem.type"
},
"title": {
"$ref": "#/definitions/Problem.title"
},
"status": {
"$ref": "#/definitions/Problem.status"
},
"detail": {
"$ref": "#/definitions/Problem.detail"
},
"instance": {
"$ref": "#/definitions/Problem.instance"
}
}
},
"Problem.type": {
"type": "string",
"format": "uri",
"description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
},
"Problem.title": {
"type": "string",
"description": "A short, human-readable summary of the problem type"
},
"Problem.status": {
"type": "integer",
"format": "uint32",
"description": "The HTTP status code for this occurrence of the problem"
},
"Problem.detail": {
"type": "string",
"description": "A human-readable explanation specific to this occurrence of the problem"
},
"Problem.instance": {
"type": "string",
"format": "uri",
"description": "A URI reference that identifies the specific occurrence of the problem"
},
"PlmnInfo": {
"type": "object",
"required": [
"appInsId",
"ecgi"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"ecgi": {
"$ref": "#/definitions/Ecgi"
}
}
},
"RabInfo": {
"type": "object",
"required": [
"appInsId",
"requestId"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"requestId": {
"$ref": "#/definitions/RequestId"
},
"cellUserInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/CellUserInfo"
}
}
}
},
"S1BearerInfo": {
"type": "object",
"required": [
"s1UeInfo"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"s1UeInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/S1UeInfo"
}
}
}
},
"S1UeInfo": {
"type": "object",
"required": [
"tempUeId",
"ecgi",
"s1BearerInfoDetailed"
],
"properties": {
"tempUeId": {
"type": "array",
"items": {
"$ref": "#/definitions/TempUeId"
}
},
"associateId": {
"type": "array",
"items": {
"$ref": "#/definitions/AssociateId"
}
},
"ecgi": {
"type": "array",
"items": {
"$ref": "#/definitions/Ecgi"
}
},
"s1BearerInfoDetailed": {
"type": "array",
"items": {
"$ref": "#/definitions/S1BearerInfoDetailed"
}
}
},
"description": "The information on users per cell."
},
"S1BearerInfoDetailed": {
"type": "object",
"required": [
"erabId",
"s1EnbInfo"
],
"properties": {
"erabId": {
"$ref": "#/definitions/ErabId"
},
"s1EnbInfo": {
"$ref": "#/definitions/S1EnbInfo"
},
"sGwInfo": {
"$ref": "#/definitions/SGwInfo"
}
},
"description": "Information on UEs in the specific cell."
},
"ErabId": {
"type": "integer",
"format": "int32",
"description": "The element that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413",
"example": 10
},
"TempUeId": {
"type": "object",
"required": [
"mmec",
"mtmsi"
],
"properties": {
"mmec": {
"$ref": "#/definitions/Mmec"
},
"mtmsi": {
"$ref": "#/definitions/Mtmsi"
}
}
},
"Mmec": {
"type": "string",
"description": "MMEC as defined in ETSI TS 136 413",
"example": "0"
},
"Mtmsi": {
"type": "string",
"description": "M-TMSI as defined in ETSI TS 136 413",
"example": "1234"
},
"S1EnbInfo": {
"type": "object",
"required": [
"ipAddress",
"tunnelId"
],
"properties": {
"ipAddress": {
"type": "string",
"description": "eNB transport layer address of this S1 bearer.",
"example": "192.0.2.0"
},
"tunnelId": {
"type": "string",
"description": "eNB GTP-U TEID of this S1 bearer.",
"example": "1111"
}
}
},
"SGwInfo": {
"type": "object",
"required": [
"ipAddress",
"tunnelId"
],
"properties": {
"ipAddress": {
"type": "string",
"description": "SGW transport layer address of this S1 bearer.",
"example": "192.0.2.1"
},
"tunnelId": {
"type": "string",
"description": "SGW GTP-U TEID of this S1 bearer.",
"example": "2222"
}
}
},
"TimeStamp": {
"type": "object",
"required": [
"nanoSeconds",
"seconds"
],
"properties": {
"seconds": {
"type": "integer",
"format": "uint32",
"description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
"example": 1577836800
},
"nanoSeconds": {
"type": "integer",
"format": "uint32",
"description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
"example": 0
}
}
},
"AppInsId": {
"type": "string",
"format": "string",
"description": "Unique identifier for the mobile edge application instance",
"example": "01"
},
"RequestId": {
"type": "string",
"format": "string",
"description": "Unique identifier allocated by the Mobile Edge application for the Information request.",
"example": "01"
},
"CellUserInfo": {
"type": "object",
"required": [
"ecgi",
"ueInfo"
],
"properties": {
"ecgi": {
"$ref": "#/definitions/Ecgi"
},
"ueInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/UeInfo"
}
}
},
"description": "The information on users per cell."
},
"Ecgi": {
"type": "object",
"required": [
"cellId",
"plmn"
],
"properties": {
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
}
},
"description": "E-UTRAN CelI Global Identifier as defined in 3GPP TS 36.413"
},
"Plmn": {
"type": "object",
"required": [
"mcc",
"mnc"
],
"properties": {
"mcc": {
"type": "string",
"format": "string",
"description": "The Mobile Country Code part of PLMN Identity as defined in 3GPP TS 36.413",
"example": "001"
},
"mnc": {
"type": "string",
"format": "string",
"description": "The Mobile Network Code part of PLMN Identity as defined in 3GPP TS 36.413",
"example": "01"
}
}
},
"CellId": {
"type": "array",
"items": {
"type": "string",
"format": "binary"
},
"description": "The E-UTRAN Cell Identity as a bit string (size (28)), as defined in 3GPP TS 36.413",
"example": "0x800000A"
},
"UeInfo": {
"type": "object",
"required": [
"erabInfo"
],
"properties": {
"associateId": {
"type": "array",
"items": {
"$ref": "#/definitions/AssociateId"
}
},
"erabInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/ErabQosParameters"
}
}
},
"description": "Information on UEs in the specific cell."
},
"AssociateId": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"RESERVED",
"UE_IPV4_ADDRESS",
"UE_IPV6_ADDRESS",
"NATED_IP_ADDRESS",
"GTP_TEID"
],
"description": "Numeric value (0-255) corresponding to specified type of identifier",
"example": "UE_IPV4_ADDRESS"
},
"value": {
"type": "integer",
"format": "int32",
"description": "Value for the identifier",
"example": 1
}
}
},
"ErabQosParameters": {
"type": "object",
"properties": {
"qci": {
"$ref": "#/definitions/Qci"
},
"qci_information": {
"$ref": "#/definitions/QosInformation"
}
}
},
"Qci": {
"type": "integer",
"format": "int32",
"description": "QoS Class Identifier as defined in TS 23.401",
"example": 7
},
"QosInformation": {
"type": "object",
"required": [
"erabGbrDl",
"erabGbrUl",
"erabMbrDl",
"erabMbrUl"
],
"properties": {
"erabMbrDl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the maximum downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
},
"erabMbrUl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the maximum uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
},
"erabGbrDl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the guaranteed downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
},
"erabGbrUl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the guaranteed uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
}
}
},
"SubscriptionLinkList": {
"type": "object",
"required": [
"_links"
],
"properties": {
"_links": {
"$ref": "#/definitions/Link"
},
"subscription": {
"type": "array",
"items": {
"$ref": "#/definitions/Subscription"
}
}
}
},
"MeasRepUeSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocTri"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"MeasRepUeSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"