Loading SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot 0 → 100644 +115 −0 Original line number Diff line number Diff line *** Setting *** Resource environment/variables.txt Library MockServerLibrary Library Process Library OperatingSystem Library BuiltIn Library Collections Library String *** Keywords *** Check Notification Endpoint &{req}= Create Mock Request Matcher GET ${callback_endpoint} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Verify Mock Expectation ${req} Clear Requests ${callback_endpoint} Post Performance Information Available Notification ${json}= Get File schemas/PerformanceInformationAvailableNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle Performance Information Available Notification &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Post Performance Information Available Notification Negative 404 ${json}= Get File schemas/ProblemDetails.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle Performance Information Available Notification to handle 404 error &{req}= Create Mock Request Matcher POST ${callback_endpoint_error} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=404 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Post Threshold Crossed Notification ${json}= Get File schema/ThresholdCrossedNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle Threshold Crossed Notification &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Post Threshold Crossed Notification Negative 404 ${json}= Get File schemas/ProblemDetails.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handleThreshold Crossed Notification to handle 404 error &{req}= Create Mock Request Matcher POST ${callback_endpoint_error} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=404 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} PUT Performance Notification Log PUT Method not implemented &{req}= Create Mock Request Matcher PUT ${callback_endpoint} &{rsp}= Create Mock Response status_code=405 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} PATCH Performance Notification Log PATCH Method not implemented &{req}= Create Mock Request Matcher PATCH ${callback_endpoint} &{rsp}= Create Mock Response status_code=405 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} DELETE Performance Notification Log PATCH Method not implemented &{req}= Create Mock Request Matcher DELETE ${callback_endpoint} &{rsp}= Create Mock Response status_code=405 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Create Sessions Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 VNFM is not checking 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} No newline at end of file SOL003/VNFPerformanceManagement-API/Subscriptions.robot +55 −157 Original line number Diff line number Diff line Loading @@ -6,174 +6,72 @@ Resource environment/variables.txt # Generic Parameters Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} Library OperatingSystem Library JSONLibrary Resource VNFPerformanceManagementKeywords.robot Resource environment/subscriptions.txt Library MockServerLibrary Library Process Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true *** Test Cases *** GET Subscription [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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 PmSubscriptions.schema.json ${result} Log Validated PmSubscription schema GET Subscription - Filter [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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} application/json ${result}= Output response body Validate Json PmSubscriptions.schema.json ${result} Log Validated PmSubscription schema GET Subscription - Negative Filter (Erroneous filter) [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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} application/json ${result}= Output response body Validate Json ProblemDetails.schema.json ${result} Log Validated ProblemDetails schema GET Subscription - Negative (Not Found) [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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 a 404 Not found as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Validate Json ProblemDetails.schema.json ${result} Log Validated ProblemDetails schema POST Subscription [Documentation] The POST method creates a new subscription. ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, ... request and response data structures, and response codes. ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} Integer response status 201 Log Received a 201 Created as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Validate Json PmSubscription.schema.json ${result} Log Validated PmSubscription schema Log Trying to validate the Location header ${headers}= Output response headers Should Contain ${headers} Location POST Subscription - DUPLICATION [Documentation] The POST method creates a new subscription. ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, ... request and response data structures, and response codes. ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing ... the existing subscription resource with the same filter and callbackUri). Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM is permitting duplication. Skipping the test Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} Integer response status 303 Log Received a 303 See other as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Should Be Empty ${result} Log Body is empty Log Trying to validate the Location header ${headers}= Output response headers Should Contain ${headers} Location POST Subscription - NO DUPLICATION [Documentation] The POST method creates a new subscription. ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, ... request and response data structures, and response codes. ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing ... the existing subscription resource with the same filter and callbackUri). Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} Integer response status 201 Log Received a 201 Created as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Validate Json PmSubscription.schema.json ${result} Log Validated PmSubscription schema Log Trying to validate the Location header ${headers}= Output response headers Should Contain ${headers} Location PUT Subscription - (Method not implemented) [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. 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) [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. 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) [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. 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 VNF Performance Management Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmSubscriptions GET VNF Performance Management Subscription with attribute-based filter Get VNF Performance Management Subscriptions with filters Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmSubscriptions Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter GET VNF Performance Management Subscription with invalid attribute-based filter Get VNF Performance Management Subscriptions with invalid filters Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails GET VNF Performance Management Subscription with invalid resource endpoint Get VNF Performance Management Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 Create new VNF Performance Management subscription Send Post Request for VNF Performance Management 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 Performance Management Subscription Is Set Create duplicated VNF Performance Management subscription with duplication handler Send Post Request for Duplicated VNF Performance Management Subscription Check HTTP Response Status Code Is 303 Check HTTP Response Body Json Schema Is Empty Check HTTP Response Header Contains Location Create duplicated VNF Performance Management subscription without duplication handler Send Post Request for Duplicated VNF Performance Management 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 Performance Management Subscription Is Set PUT VNF Performance Management Subscriptions - Method not implemented Send Put Request for VNF Performance Management Subscriptions Check HTTP Response Status Code Is 405 PATCH VNF Performance Management Subscriptions - Method not implemented Send Patch Request for VNF Performance Management Subscriptions Check HTTP Response Status Code Is 405 DELETE VNF Performance Management Subscriptions - Method not implemented Send Delete Request for VNF Performance Management Subscriptions Check HTTP Response Status Code Is 405 SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot 0 → 100644 +232 −0 File added.Preview size limit exceeded, changes collapsed. Show changes SOL003/VNFPerformanceManagement-API/environment/subscriptions.txt +2 −1 Original line number Diff line number Diff line *** Variables *** ${filter_ok} callbackUri=http://localhost/subscriptions ${callbackUri} http://172.22.1.7:9091/vnfpm/subscriptions ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous SOL003/VNFPerformanceManagement-API/environment/variables.txt +14 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https ${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken Loading @@ -10,10 +11,22 @@ ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${FIELD_USAGE} 1 ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${VNFM_DUPLICATION} 1 ${VNFM_ALLOWS_DUPLICATE_SUBS} 1 ${apiRoot} / ${apiVersion} v1 ${apiName} vnfpm ${response} ${callback_port} 9091 ${callback_uri} http://localhost:${callback_port} ${callback_endpoint} /vnfpm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar No newline at end of file Loading
SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot 0 → 100644 +115 −0 Original line number Diff line number Diff line *** Setting *** Resource environment/variables.txt Library MockServerLibrary Library Process Library OperatingSystem Library BuiltIn Library Collections Library String *** Keywords *** Check Notification Endpoint &{req}= Create Mock Request Matcher GET ${callback_endpoint} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Verify Mock Expectation ${req} Clear Requests ${callback_endpoint} Post Performance Information Available Notification ${json}= Get File schemas/PerformanceInformationAvailableNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle Performance Information Available Notification &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Post Performance Information Available Notification Negative 404 ${json}= Get File schemas/ProblemDetails.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle Performance Information Available Notification to handle 404 error &{req}= Create Mock Request Matcher POST ${callback_endpoint_error} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=404 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Post Threshold Crossed Notification ${json}= Get File schema/ThresholdCrossedNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle Threshold Crossed Notification &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Post Threshold Crossed Notification Negative 404 ${json}= Get File schemas/ProblemDetails.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handleThreshold Crossed Notification to handle 404 error &{req}= Create Mock Request Matcher POST ${callback_endpoint_error} body_type="JSON_SCHEMA" body=${BODY} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=404 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} PUT Performance Notification Log PUT Method not implemented &{req}= Create Mock Request Matcher PUT ${callback_endpoint} &{rsp}= Create Mock Response status_code=405 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} PATCH Performance Notification Log PATCH Method not implemented &{req}= Create Mock Request Matcher PATCH ${callback_endpoint} &{rsp}= Create Mock Response status_code=405 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} DELETE Performance Notification Log PATCH Method not implemented &{req}= Create Mock Request Matcher DELETE ${callback_endpoint} &{rsp}= Create Mock Response status_code=405 Create Mock Expectation ${req} ${rsp} Sleep ${sleep_interval} Log Verifying results Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${callback_endpoint} Create Sessions Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 VNFM is not checking 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} No newline at end of file
SOL003/VNFPerformanceManagement-API/Subscriptions.robot +55 −157 Original line number Diff line number Diff line Loading @@ -6,174 +6,72 @@ Resource environment/variables.txt # Generic Parameters Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} Library OperatingSystem Library JSONLibrary Resource VNFPerformanceManagementKeywords.robot Resource environment/subscriptions.txt Library MockServerLibrary Library Process Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true *** Test Cases *** GET Subscription [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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 PmSubscriptions.schema.json ${result} Log Validated PmSubscription schema GET Subscription - Filter [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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} application/json ${result}= Output response body Validate Json PmSubscriptions.schema.json ${result} Log Validated PmSubscription schema GET Subscription - Negative Filter (Erroneous filter) [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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} application/json ${result}= Output response body Validate Json ProblemDetails.schema.json ${result} Log Validated ProblemDetails schema GET Subscription - Negative (Not Found) [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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 a 404 Not found as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Validate Json ProblemDetails.schema.json ${result} Log Validated ProblemDetails schema POST Subscription [Documentation] The POST method creates a new subscription. ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, ... request and response data structures, and response codes. ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} Integer response status 201 Log Received a 201 Created as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Validate Json PmSubscription.schema.json ${result} Log Validated PmSubscription schema Log Trying to validate the Location header ${headers}= Output response headers Should Contain ${headers} Location POST Subscription - DUPLICATION [Documentation] The POST method creates a new subscription. ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, ... request and response data structures, and response codes. ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing ... the existing subscription resource with the same filter and callbackUri). Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM is permitting duplication. Skipping the test Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} Integer response status 303 Log Received a 303 See other as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Should Be Empty ${result} Log Body is empty Log Trying to validate the Location header ${headers}= Output response headers Should Contain ${headers} Location POST Subscription - NO DUPLICATION [Documentation] The POST method creates a new subscription. ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, ... request and response data structures, and response codes. ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing ... the existing subscription resource with the same filter and callbackUri). Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} Integer response status 201 Log Received a 201 Created as expected ${contentType}= Output response headers Content-Type Should Contain ${contentType} application/json ${result}= Output response body Validate Json PmSubscription.schema.json ${result} Log Validated PmSubscription schema Log Trying to validate the Location header ${headers}= Output response headers Should Contain ${headers} Location PUT Subscription - (Method not implemented) [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. 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) [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. 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) [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. 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 VNF Performance Management Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmSubscriptions GET VNF Performance Management Subscription with attribute-based filter Get VNF Performance Management Subscriptions with filters Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmSubscriptions Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter GET VNF Performance Management Subscription with invalid attribute-based filter Get VNF Performance Management Subscriptions with invalid filters Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails GET VNF Performance Management Subscription with invalid resource endpoint Get VNF Performance Management Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 Create new VNF Performance Management subscription Send Post Request for VNF Performance Management 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 Performance Management Subscription Is Set Create duplicated VNF Performance Management subscription with duplication handler Send Post Request for Duplicated VNF Performance Management Subscription Check HTTP Response Status Code Is 303 Check HTTP Response Body Json Schema Is Empty Check HTTP Response Header Contains Location Create duplicated VNF Performance Management subscription without duplication handler Send Post Request for Duplicated VNF Performance Management 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 Performance Management Subscription Is Set PUT VNF Performance Management Subscriptions - Method not implemented Send Put Request for VNF Performance Management Subscriptions Check HTTP Response Status Code Is 405 PATCH VNF Performance Management Subscriptions - Method not implemented Send Patch Request for VNF Performance Management Subscriptions Check HTTP Response Status Code Is 405 DELETE VNF Performance Management Subscriptions - Method not implemented Send Delete Request for VNF Performance Management Subscriptions Check HTTP Response Status Code Is 405
SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot 0 → 100644 +232 −0 File added.Preview size limit exceeded, changes collapsed. Show changes
SOL003/VNFPerformanceManagement-API/environment/subscriptions.txt +2 −1 Original line number Diff line number Diff line *** Variables *** ${filter_ok} callbackUri=http://localhost/subscriptions ${callbackUri} http://172.22.1.7:9091/vnfpm/subscriptions ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous
SOL003/VNFPerformanceManagement-API/environment/variables.txt +14 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https ${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken Loading @@ -10,10 +11,22 @@ ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${FIELD_USAGE} 1 ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${VNFM_DUPLICATION} 1 ${VNFM_ALLOWS_DUPLICATE_SUBS} 1 ${apiRoot} / ${apiVersion} v1 ${apiName} vnfpm ${response} ${callback_port} 9091 ${callback_uri} http://localhost:${callback_port} ${callback_endpoint} /vnfpm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar No newline at end of file