Commit ca24fc70 authored by Elian Kraja's avatar Elian Kraja
Browse files

High Level subscriptions test suites for sol002 indicators and sol005 package management

parent 3af90362
......@@ -4,7 +4,11 @@ Resource environment/variables.txt # Generic Parameters
Resource environment/subscriptions.txt
Library OperatingSystem
Library JSONLibrary
Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}
Library Process
Library MockServerLibrary
Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false
Suite Setup Create Sessions
Suite Teardown Terminate All Processes kill=true
*** Test Cases ***
GET VNF Indicators Subscriptions
......@@ -151,7 +155,9 @@ Send Post Request for VNF Indicator Subscription
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Set Suite Variable ${response} ${output}
Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1
... Check Notification Endpoint
Send Put Request for VNF Indicator Subscriptions
Log Trying to create a new subscription
......@@ -215,3 +221,17 @@ Check Postcondition VNF Indicator Subscription Is Set
Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
Log Check Response includes VNF Indicators according to filter
#todo
Create Sessions
Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run
Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance
Wait For Process handle=mockInstance timeout=5s on_timeout=continue
Create Mock Session ${callback_uri}:${callback_port}
Check Notification Endpoint
&{notification_request}= Create Mock Request Matcher GET ${callback_endpoint}
&{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204
Create Mock Expectation ${notification_request} ${notification_response}
Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request}
Clear Requests ${callback_endpoint}
\ No newline at end of file
......@@ -5,3 +5,5 @@ ${erroneousIndicatorId} erroneousIndicatorId
${POS_FILTER} callbackUri=http://127.0.0.1/subscribe
${NEG_FILTER} callback=http://127.0.0.1/subscribe
${response}= httpresponse
${total_polling_time} 2 min
${polling_interval} 10 sec
......@@ -14,3 +14,12 @@ ${AUTH_USAGE} 1
${apiRoot} /
${apiVersion} v1
${apiName} vnfind
${VNFM_CHECKS_NOTIF_ENDPOINT} 0
${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
${callback_uri} http://localhost
${callback_port} 9091
${callback_endpoint} /endpoint
${callback_endpoint_error} /endpoint_404
\ No newline at end of file
*** Settings ***
Library JSONSchemaLibrary schemas/
Resource environment/variables.txt # Generic Parameters
Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}
Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false
Library OperatingSystem
Library JSONLibrary
Resource VNFPerformanceManagementKeywords.robot
......
......@@ -44,6 +44,7 @@ Create new VNF Package subscription
Create duplicated VNF Package subscription with duplication handler
[Tags] no-duplicated-subs
Send Post Request for Duplicated VNF Package Subscription
Check HTTP Response Status Code Is 303
Check HTTP Response Body Is Empty
......@@ -52,6 +53,7 @@ Create duplicated VNF Package subscription with duplication handler
Create duplicated VNF Package subscription without duplication handler
[Tags] duplicated-subs
Send Post Request for Duplicated VNF Package Subscription
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is PmSubscription
......
......@@ -2,135 +2,79 @@
Library JSONSchemaLibrary schemas/
Resource environment/variables.txt # Generic Parameters
Resource environment/subscriptions.txt
Resource VNFPackageManagementKeywords.robot
Library OperatingSystem
Library JSONLibrary
Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false
Library MockServerLibrary
Library Process
Suite Setup Create Sessions
Suite Teardown Terminate All Processes kill=true
*** Test Cases ***
GET Subscription
Log Trying to get the list of subscriptions
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions
Integer response status 200
Log Received a 200 OK as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
${result}= Output response body
Validate Json PkgmSubscriptions.schema.json ${result}
Log Validated PkgmSubscription schema
GET Subscription - Filter
Log Trying to get the list of subscriptions using filters
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok}
Integer response status 200
Log Received a 200 OK as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
${result}= Output response body
Validate Json PkgmSubscriptions.schema.json ${result}
Log Validated PkgmSubscription schema
GET Subscription - Negative Filter
Log Trying to get the list of subscriptions using filters with wrong attribute name
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko}
Integer response status 400
Log Received a 400 Bad Request as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
${problemDetails}= Output response body
Validate Json ProblemDetails.schema.json ${problemDetails}
Log Validation OK
GET Subscription - Negative (Not Found)
Log Trying to perform a request on a Uri which doesn't exist
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscription
Integer response status 404
Log Received 404 Not Found as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
${problemDetails}= Output response body
Validate Json ProblemDetails.schema.json ${problemDetails}
Log Validation OK
POST Subscription
Log Trying to create a new subscription
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
Integer response status 201
Log Received 201 Created as expected
${headers}= Output response headers
Should Contain ${headers} Location
Log Response has header Location
${result}= Output response body
Validate Json PkgmSubscription.schema.json ${result}
Log Validation of PkgmSubscription OK
POST Subscription - DUPLICATION
Log Trying to create a subscription with an already created content
Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO is not permitting duplication. Skipping the test
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
Integer response status 201
Log Received 201 Created as expected
${headers}= Output response headers
Should Contain ${headers} Location
Log Response has header Location
${result}= Output response body
Validate Json PkgmSubscription.schema.json ${result}
Log Validation of PkgmSubscription OK
POST Subscription - NO DUPLICATION
Log Trying to create a subscription with an already created content
Pass Execution If ${NFVO_DUPLICATION} == 1 NFVO is permitting duplication. Skipping the test
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
Integer response status 303
Log Received 303 See Other as expected
${headers}= Output response headers
Should Contain ${headers} Location
Log Response header contains Location
PUT Subscription - (Method not implemented)
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions
Integer response status 405
Log Received 405 Method not implemented as expected
PATCH Subscription - (Method not implemented)
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions
Integer response status 405
Log Received 405 Method not implemented as expected
DELETE Subscription - (Method not implemented)
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions
Integer response status 405
Log Received 405 Method not implemented as expected
Get All VNF Package Subscriptions
Get all VNF Package Subscriptions
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is PkgmSubscriptions
Get VNF Package Subscriptions with attribute-based filter
Get VNF Package Subscriptions with attribute-based filters
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is PkgmSubscriptions
Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
Get VNF Package Subscriptions with invalid attribute-based filter
Get VNF Package Subscriptions with invalid attribute-based filters
Check HTTP Response Status Code Is 400
Check HTTP Response Body Json Schema Is ProblemDetails
GET VNF Package Subscription with invalid resource endpoint
Get VNF Package Subscriptions with invalid resource endpoint
Check HTTP Response Status Code Is 404
Create new VNF Package subscription
Send Post Request for VNF Package Subscription
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is PkgmSubscription
Check HTTP Response Body Matches the Subscription
Check Postcondition VNF Package Subscription Is Set
Create duplicated VNF Package subscription with duplication handler
[Tags] no-duplicated-subs
Send Post Request for Duplicated VNF Package Subscription
Check HTTP Response Status Code Is 303
Check HTTP Response Body Is Empty
Check HTTP Response Header Contains Location
Check Postcondition VNF Package Subscription Is Set Location
Create duplicated VNF Package subscription without duplication handler
[Tags] duplicated-subs
Send Post Request for Duplicated VNF Package Subscription
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is PmSubscription
Check HTTP Response Body Matches the Subscription
Check Postcondition VNF Package Subscription Is Set
PUT VNF Package Subscriptions - Method not implemented
Send Put Request for VNF Package Subscriptions
Check HTTP Response Status Code Is 405
PATCH VNF Package Subscriptions - Method not implemented
Send Patch Request for VNF Package Subscriptions
Check HTTP Response Status Code Is 405
DELETE VNF Package Subscriptions - Method not implemented
Send Delete Request for VNF Package Subscriptions
Check HTTP Response Status Code Is 405
*** Settings ***
Library JSONSchemaLibrary schemas/
Resource environment/variables.txt # Generic Parameters
Resource environment/subscriptions.txt
Library OperatingSystem
Library JSONLibrary
Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false
Library Process
Library MockServerLibrary
*** Keywords ***
Get all VNF Package Subscriptions
Log Trying to get the list of subscriptions
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
# Integer response status 200
# Log Received a 200 OK as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} ${CONTENT_TYPE_JSON}
# ${result}= Output response body
# Validate Json PkgmSubscriptions.schema.json ${result}
# Log Validated PkgmSubscription schema
Get VNF Package Subscriptions with attribute-based filters
Log Trying to get the list of subscriptions using filters
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok}
# Integer response status 200
# Log Received a 200 OK as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} ${CONTENT_TYPE_JSON}
# ${result}= Output response body
# Validate Json PkgmSubscriptions.schema.json ${result}
# Log Validated PkgmSubscription schema
${output}= Output response
Set Suite Variable ${response} ${output}
Get VNF Package Subscriptions with invalid attribute-based filters
Log Trying to get the list of subscriptions using filters with wrong attribute name
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko}
${output}= Output response
Set Suite Variable ${response} ${output}
# Integer response status 400
# Log Received a 400 Bad Request as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} ${CONTENT_TYPE_JSON}
# Log Trying to validate ProblemDetails
# ${problemDetails}= Output response body
# Validate Json ProblemDetails.schema.json ${problemDetails}
# Log Validation OK
Get VNF Package Subscriptions with invalid resource endpoint
Log Trying to perform a request on a Uri which doesn't exist
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscription
${output}= Output response
Set Suite Variable ${response} ${output}
# Integer response status 404
# Log Received 404 Not Found as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} ${CONTENT_TYPE_JSON}
# Log Trying to validate ProblemDetails
# ${problemDetails}= Output response body
# Validate Json ProblemDetails.schema.json ${problemDetails}
# Log Validation OK
Send Post Request for VNF Package Subscription
Log Trying to create a new subscription
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
... Check Notification Endpoint
# Integer response status 201
# Log Received 201 Created as expected
# ${headers}= Output response headers
# Should Contain ${headers} Location
# Log Response has header Location
# ${result}= Output response body
# Validate Json PkgmSubscription.schema.json ${result}
# Log Validation of PkgmSubscription OK
Send Post Request for Duplicated VNF Package Subscription
Log Trying to create a subscription with an already created content
Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO is not permitting duplication. Skipping the test
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
... Check Notification Endpoint
# Integer response status 201
# Log Received 201 Created as expected
# ${headers}= Output response headers
# Should Contain ${headers} Location
# Log Response has header Location
# ${result}= Output response body
# Validate Json PkgmSubscription.schema.json ${result}
# Log Validation of PkgmSubscription OK
Send Put Request for VNF Package Subscriptions
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
# Integer response status 405
# Log Received 405 Method not implemented as expected
Send Patch Request for VNF Package Subscriptions
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
# Integer response status 405
# Log Received 405 Method not implemented as expected
Send Delete Request for VNF Package Subscriptions
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
# Integer response status 405
# Log Received 405 Method not implemented as expected
Create Sessions
Pass Execution If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not started as NFVO is not checking the notification endpoint
Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance
Wait For Process handle=mockInstance timeout=5s on_timeout=continue
Create Mock Session ${callback_uri}:${callback_port}
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
Should Be Equal ${response['status']} ${expected_status}
Log Status code validated
Check HTTP Response Body Json Schema Is
[Arguments] ${input}
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = Catenate ${input} .schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
Log Check Response includes VNF Package Management according to filter
#TODO
Check Notification Endpoint
&{notification_request}= Create Mock Request Matcher GET ${callback_endpoint}
&{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204
Create Mock Expectation ${notification_request} ${notification_response}
Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request}
Clear Requests ${callback_endpoint}
Check HTTP Response Body Matches the Subscription
Log Check Response matches subscription
${body}= Get File jsons/subscriptions.json
${subscription}= evaluate json.loads('''${body}''') json
Should Be Equal ${response['body']['callbackUri']} ${subscription['callbackUri']}
Check Postcondition VNF Package Subscription Is Set
[Arguments] ${location}=""
Log Check Postcondition subscription exist
Log Trying to get the subscription
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
Run Keyword If Should Not Be Equal As Strings ${location} Location GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']}
Run Keyword If Should Be Equal As Strings ${location} Location GET ${response['headers']['Location']}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Is Empty
Should Be Empty ${response['body']}
Log No json schema is provided. Validation OK
Check HTTP Response Header Contains
[Arguments] ${CONTENT_TYPE}
Should Contain ${response.headers} ${CONTENT_TYPE}
Log Header is present
\ No newline at end of file
......@@ -25,4 +25,10 @@ ${callback_uri} http://localhost
${callback_port} 9091
${callback_endpoint} /endpoint
${callback_endpoint_error} /endpoint_404
${sleep_interval} 20s
\ No newline at end of file
${sleep_interval} 20s
${total_polling_time} 2 min
${polling_interval} 10 sec
${NFVO_CHECKS_NOTIF_ENDPOINT} 1
${response}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment