Newer
Older
*** Setting ***
Suite Teardown Terminate All Processes kill=true
Resource variables.txt
Library OperatingSystem
Library MockServerLibrary
Library Process
Library BuiltIn
Library Collections
Library String
Library JSONSchemaLibrary schemas/
Library JSONLibrary
Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}
*** Variables ***
${headers}
${vnfLcmOpOccId}
${response}
&{notification_request}
&{notification_response}
${vnfInstanceId}
*** Test Cases ***
VNF Instantiation
Send VNF Instantiation Request
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check Operation Occurrence Id
Check Operation Notification STARTING
Check Operation Notification PROCESSING
Check Operation Notification COMPLETED
Check Postcondition
*** Keywords ***
Create VNF Resource
Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/vnf_instances
Set Headers {"Accept":"${ACCEPT}"}
Set Headers {"Content-Type": "${CONTENT_TYPE}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"}
${body}= Get File json/createVnfRequest.json
${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body}
Send VNF Instantiation Request
Log Instantiate a VNF Instance
Set Headers {"Accept":"${ACCEPT}"}
Set Headers {"Content-Type": "${CONTENT_TYPE}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"}
${body}= Get File json/instantiateVnfRequest.json
${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body}
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
Should Be Equal ${response.status_code} ${expected_status}
Log Status code validated
Check HTTP Response Header Contains
[Arguments] ${CONTENT_TYPE}
Should Contain ${response.headers} ${CONTENT_TYPE}
Log Header is present
Check Operation Occurrence Id
${vnfLcmOpOccId}= Get Value From Json ${response.headers} $..Location
Should Not Be Empty ${vnfLcmOpOccId}
Check HTTP Response Body Json Schema Is
[Arguments] ${schema}
${json}= evaluate json.loads('''${response.body}''') json
Validate Json ${schema} ${json}
${vnfInstanceId}= ${response.body.id}
Log Json Schema Validation OK
[Arguments] ${current} ${expected}
Should Be Equal As Strings ${current} ${expected}
Log VNF Status in the correct status
[Arguments] ${vnfId}
Set Headers {"Accept":"${ACCEPT}"}
Set Headers {"Content-Type": "${CONTENT_TYPE}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"}
${response}= Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfId}
Create Sessions
Start Process java -jar mockserver-netty-5.3.0-jar-with-dependencies.jar -serverPort ${callback_port} alias=mockInstance
Wait For Process handle=mockInstance timeout=5s on_timeout=continue
Create Mock Session ${callback_uri}:${callback_port}
Configure Notification Handler
[Arguments] ${element} ${endpoint}
${json}= Get File schemas/${element}.schema.json
${BODY}= evaluate json.loads('''${json}''') json
Log Creating mock request and response to handle ${element}
&{notification_request}= Create Mock Request Matcher Schema POST ${endpoint} body=${BODY}
&{notification_response}= Create Mock Response Schema headers="Content-Type: application/json" status_code=204
Create Mock Expectation ${notification_request} ${notification_response}
Check Operation Notification
[Arguments] ${status}
Configure Notification Handler VnfLcmOperationOccurrenceNotification ${callback_endpoint}
Wait Until Keyword Succeeds 2 min 10 sec Verify Notification ${status}
Get ${vnfLcmOpOccId}
${body}= Output response body
Should Be Equal ${body.operationState} ${status}
Clear Requests ${callback_endpoint}
Verify Notification COMPLETED
[Arguments] ${status}
Verify Mock Expectation ${notification_request}
Initialize System
Create Sessions
Configure Notification Handler VnfIdentifierCreationNotification ${callback_endpoint}
Create VNF Resource
Check HTTP Response Status Code Is 201
Check HTTP Response Header Contains Location
Check HTTP Response Header Contains ${response.headers} Content-Type
Check HTTP Response Body Json Schema Is vnfInstance.schema.json
Check Postcondition
Log Retrieve VNF Instance
Check VNF Instance ${vnfInstanceId}
Should Not Be Empty ${response}
Check HTTP Status Code Is 200
Should Be Equal ${response.body.id} ${vnfInstanceId}
Check HTTP Response Header Contains Content-Type
Check HTTP Response Json Schema ${response.body} vnfInstance.schema.json
Check VNF Status ${response.body.instantiationState} INSTANTIATED