Loading SOL003/VNFIndicator-API/Subscriptions.robot +78 −139 Original line number Diff line number Diff line Loading @@ -2,147 +2,86 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Resource environment/subscriptions.txt Resource VNFIndicatorsKeywords.robot Library OperatingSystem Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_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} application/json ${result}= Output response body Validate Json VnfIndicatorSubscriptions.schema.json ${result} Log Validated VnfIndicatorSubscription 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?${POS_FILTER} Integer response status 200 ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json Log Received a 200 OK as expected ${result}= Output response body Validate Json VnfIndicatorSubscriptions.schema.json ${result} Log Validated VnfIndicatorSubscriptions 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?${NEG_FILTER} Integer response status 400 Log Received a 400 Bad Request as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/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} application/json Log Trying to validate ProblemDetails ${problemDetails}= Output response body Validate Json ProblemDetails.schema.json ${problemDetails} Log Validation OK GET Subscription - Negative (Unauthorized: Wrong Token) Log Trying to perform a negative get, using wrong authorization bearer Pass Execution If ${AUTH_USAGE} == 0 Skipping test as VNFM is not supporting authentication Set Headers {"Accept": "${ACCEPT_JSON}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions Integer response status 401 Log Received 401 Unauthorized as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/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 VnfIndicatorSubscription.schema.json ${result} Log Validation of VnfIndicatorSubscription OK POST Subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM 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 VnfIndicatorSubscription.schema.json ${result} Log Validation of VnfIndicatorSubscription OK POST Subscription - NO DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM 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 has header Location PUT Subscription - (Method not implemented) 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) 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) 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 Indicators Subscriptions Get All VNF Indicators Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfIndicatorSubscriptions GET VNF Indicators Subscriptions with attribute-based filter Get VNF Indicators Subscriptions with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfIndicatorSubscriptions Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter GET VNF Indicators Subscriptions with invalid attribute-based filter Get VNF Indicators Subscriptions with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails GET VNF Indicators Subscriptions with invalid resource endpoint Get VNF Indicators Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 GET VNF Indicators Subscriptions with invalid authentication token Get VNF Indicators Subscriptions with invalid authentication token Check HTTP Response Status Code Is 401 Check HTTP Response Body Json Schema Is ProblemDetails Create new VNF indicator subscription Send Post Request for VNF Indicator Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check HTTP Response Body Matches the Subscription Check Postcondition VNF Indicator Subscription Is Set Create duplicated VNF indicator subscription with duplication handler Send Post Request for Duplicated VNF indicator Subscription Check HTTP Response Status Code Is 303 Check HTTP Response Body Is Empty Check HTTP Response Header Contains Location Check Postcondition VNF indicator Subscription Is Set Location Create duplicated VNF indicator subscription without duplication handler Send Post Request for Duplicated VNF indicator 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 indicator Subscription Is Set PUT VNF Indicator Subscriptions - Method not implemented Send Put Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405 PATCH VNF Indicator Subscriptions - Method not implemented Send Patch Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405 DELETE VNF Indicator Subscriptions - Method not implemented Send Delete Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405 SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot 0 → 100644 +230 −0 Original line number Diff line number Diff line *** Settings *** Resource environment/variables.txt Resource environment/subscriptions.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library Process *** Keywords *** Get All VNF Indicators 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} application/json # ${result}= Output response body # Validate Json VnfIndicatorSubscriptions.schema.json ${result} # Log Validated VnfIndicatorSubscription schema Get VNF Indicators Subscriptions with 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} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 # ${contentType}= Output response headers Content-Type # Should Contain ${contentType} application/json # Log Received a 200 OK as expected # ${result}= Output response body # Validate Json VnfIndicatorSubscriptions.schema.json ${result} # Log Validated VnfIndicatorSubscriptions schema Get VNF Indicators Subscriptions with invalid 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} ${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} application/json # Log Trying to validate ProblemDetails # ${problemDetails}= Output response body # Validate Json ProblemDetails.schema.json ${problemDetails} # Log Validation OK Get VNF Indicators 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} application/json # Log Trying to validate ProblemDetails # ${problemDetails}= Output response body # Validate Json ProblemDetails.schema.json ${problemDetails} # Log Validation OK Get VNF Indicators Subscriptions with invalid authentication token Log Trying to perform a negative get, using wrong authorization bearer Pass Execution If ${AUTH_USAGE} == 0 Skipping test as VNFM is not supporting authentication Set Headers {"Accept": "${ACCEPT_JSON}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 401 # Log Received 401 Unauthorized as expected # ${contentType}= Output response headers Content-Type # Should Contain ${contentType} application/json # Log Trying to validate ProblemDetails # ${problemDetails}= Output response body # Validate Json ProblemDetails.schema.json ${problemDetails} # Log Validation OK Send Post Request for VNF Indicator 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 ${VNFM_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 VnfIndicatorSubscription.schema.json ${result} # Log Validation of VnfIndicatorSubscription OK Send Post Request for Duplicated VNF indicator Subscription Log Trying to create a subscription with an already created content 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} # 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 VnfIndicatorSubscription.schema.json ${result} # Log Validation of VnfIndicatorSubscription OK Send Put Request for VNF Indicator Subscriptions 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} Send Patch Request for VNF Indicator Subscriptions 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} Send Delete Request for VNF Indicator Subscriptions 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} 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 Is Empty Should Be Empty ${response['body']} Log No json schema is provided. Validation OK Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter Log Check Response includes VNF Performance Management according to filter #TODO 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 Indicator 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 Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response.headers} ${CONTENT_TYPE} Log Header is present 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} SOL003/VNFIndicator-API/environment/subscriptions.txt +5 −2 Original line number Diff line number Diff line *** Variables *** ${POS_FILTER} callbackUri=http://127.0.0.1/subscribe ${NEG_FILTER} callback=http://127.0.0.1/subscribe ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous ${callbackUri} http://172.22.1.7:9091/vnfind/subscriptions ${total_polling_time} 2 min ${polling_interval} 10 sec SOL003/VNFIndicator-API/environment/variables.txt +11 −1 Original line number Diff line number Diff line Loading @@ -13,5 +13,15 @@ ${apiRoot} / ${apiVersion} v1 ${apiName} vnfind ${VNFM_DUPLICATION} 1 ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${VNFM_ALLOWS_DUPLICATE_SUBS} 1 ${response} ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /vnfind/subscriptions ${callback_endpoint_error} /subs_404 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar No newline at end of file SOL003/VNFIndicator-API/jsons/subscriptions.json +1 −1 Original line number Diff line number Diff line { "callbackUri": "http://127.0.0.1/subscribe" "callbackUri": "http://172.22.1.7:9091/vnfind/subscribes" } No newline at end of file Loading
SOL003/VNFIndicator-API/Subscriptions.robot +78 −139 Original line number Diff line number Diff line Loading @@ -2,147 +2,86 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Resource environment/subscriptions.txt Resource VNFIndicatorsKeywords.robot Library OperatingSystem Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_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} application/json ${result}= Output response body Validate Json VnfIndicatorSubscriptions.schema.json ${result} Log Validated VnfIndicatorSubscription 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?${POS_FILTER} Integer response status 200 ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json Log Received a 200 OK as expected ${result}= Output response body Validate Json VnfIndicatorSubscriptions.schema.json ${result} Log Validated VnfIndicatorSubscriptions 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?${NEG_FILTER} Integer response status 400 Log Received a 400 Bad Request as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/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} application/json Log Trying to validate ProblemDetails ${problemDetails}= Output response body Validate Json ProblemDetails.schema.json ${problemDetails} Log Validation OK GET Subscription - Negative (Unauthorized: Wrong Token) Log Trying to perform a negative get, using wrong authorization bearer Pass Execution If ${AUTH_USAGE} == 0 Skipping test as VNFM is not supporting authentication Set Headers {"Accept": "${ACCEPT_JSON}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions Integer response status 401 Log Received 401 Unauthorized as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/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 VnfIndicatorSubscription.schema.json ${result} Log Validation of VnfIndicatorSubscription OK POST Subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM 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 VnfIndicatorSubscription.schema.json ${result} Log Validation of VnfIndicatorSubscription OK POST Subscription - NO DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM 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 has header Location PUT Subscription - (Method not implemented) 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) 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) 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 Indicators Subscriptions Get All VNF Indicators Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfIndicatorSubscriptions GET VNF Indicators Subscriptions with attribute-based filter Get VNF Indicators Subscriptions with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfIndicatorSubscriptions Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter GET VNF Indicators Subscriptions with invalid attribute-based filter Get VNF Indicators Subscriptions with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails GET VNF Indicators Subscriptions with invalid resource endpoint Get VNF Indicators Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 GET VNF Indicators Subscriptions with invalid authentication token Get VNF Indicators Subscriptions with invalid authentication token Check HTTP Response Status Code Is 401 Check HTTP Response Body Json Schema Is ProblemDetails Create new VNF indicator subscription Send Post Request for VNF Indicator Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check HTTP Response Body Matches the Subscription Check Postcondition VNF Indicator Subscription Is Set Create duplicated VNF indicator subscription with duplication handler Send Post Request for Duplicated VNF indicator Subscription Check HTTP Response Status Code Is 303 Check HTTP Response Body Is Empty Check HTTP Response Header Contains Location Check Postcondition VNF indicator Subscription Is Set Location Create duplicated VNF indicator subscription without duplication handler Send Post Request for Duplicated VNF indicator 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 indicator Subscription Is Set PUT VNF Indicator Subscriptions - Method not implemented Send Put Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405 PATCH VNF Indicator Subscriptions - Method not implemented Send Patch Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405 DELETE VNF Indicator Subscriptions - Method not implemented Send Delete Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405
SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot 0 → 100644 +230 −0 Original line number Diff line number Diff line *** Settings *** Resource environment/variables.txt Resource environment/subscriptions.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library Process *** Keywords *** Get All VNF Indicators 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} application/json # ${result}= Output response body # Validate Json VnfIndicatorSubscriptions.schema.json ${result} # Log Validated VnfIndicatorSubscription schema Get VNF Indicators Subscriptions with 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} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 # ${contentType}= Output response headers Content-Type # Should Contain ${contentType} application/json # Log Received a 200 OK as expected # ${result}= Output response body # Validate Json VnfIndicatorSubscriptions.schema.json ${result} # Log Validated VnfIndicatorSubscriptions schema Get VNF Indicators Subscriptions with invalid 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} ${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} application/json # Log Trying to validate ProblemDetails # ${problemDetails}= Output response body # Validate Json ProblemDetails.schema.json ${problemDetails} # Log Validation OK Get VNF Indicators 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} application/json # Log Trying to validate ProblemDetails # ${problemDetails}= Output response body # Validate Json ProblemDetails.schema.json ${problemDetails} # Log Validation OK Get VNF Indicators Subscriptions with invalid authentication token Log Trying to perform a negative get, using wrong authorization bearer Pass Execution If ${AUTH_USAGE} == 0 Skipping test as VNFM is not supporting authentication Set Headers {"Accept": "${ACCEPT_JSON}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 401 # Log Received 401 Unauthorized as expected # ${contentType}= Output response headers Content-Type # Should Contain ${contentType} application/json # Log Trying to validate ProblemDetails # ${problemDetails}= Output response body # Validate Json ProblemDetails.schema.json ${problemDetails} # Log Validation OK Send Post Request for VNF Indicator 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 ${VNFM_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 VnfIndicatorSubscription.schema.json ${result} # Log Validation of VnfIndicatorSubscription OK Send Post Request for Duplicated VNF indicator Subscription Log Trying to create a subscription with an already created content 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} # 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 VnfIndicatorSubscription.schema.json ${result} # Log Validation of VnfIndicatorSubscription OK Send Put Request for VNF Indicator Subscriptions 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} Send Patch Request for VNF Indicator Subscriptions 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} Send Delete Request for VNF Indicator Subscriptions 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} 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 Is Empty Should Be Empty ${response['body']} Log No json schema is provided. Validation OK Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter Log Check Response includes VNF Performance Management according to filter #TODO 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 Indicator 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 Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response.headers} ${CONTENT_TYPE} Log Header is present 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}
SOL003/VNFIndicator-API/environment/subscriptions.txt +5 −2 Original line number Diff line number Diff line *** Variables *** ${POS_FILTER} callbackUri=http://127.0.0.1/subscribe ${NEG_FILTER} callback=http://127.0.0.1/subscribe ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous ${callbackUri} http://172.22.1.7:9091/vnfind/subscriptions ${total_polling_time} 2 min ${polling_interval} 10 sec
SOL003/VNFIndicator-API/environment/variables.txt +11 −1 Original line number Diff line number Diff line Loading @@ -13,5 +13,15 @@ ${apiRoot} / ${apiVersion} v1 ${apiName} vnfind ${VNFM_DUPLICATION} 1 ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${VNFM_ALLOWS_DUPLICATE_SUBS} 1 ${response} ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /vnfind/subscriptions ${callback_endpoint_error} /subs_404 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar No newline at end of file
SOL003/VNFIndicator-API/jsons/subscriptions.json +1 −1 Original line number Diff line number Diff line { "callbackUri": "http://127.0.0.1/subscribe" "callbackUri": "http://172.22.1.7:9091/vnfind/subscribes" } No newline at end of file