From 1c8f22e32e870e6b75a41223ad47eda0e08cea0c Mon Sep 17 00:00:00 2001 From: Giacomo Bernini <g.bernini@nextworks.it> Date: Wed, 14 Oct 2020 17:18:57 +0200 Subject: [PATCH] restored subscriptions tests in SOL002 VNF PM --- .../IndividualSubscription.robot | 98 ++++++ .../Subscriptions.robot | 175 +++++++++++ .../VNFPerformanceManagementKeywords.robot | 297 +++++++++++++++++- .../environment/variables.txt | 37 ++- 4 files changed, 602 insertions(+), 5 deletions(-) create mode 100644 SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot create mode 100644 SOL002/VNFPerformanceManagement-API/Subscriptions.robot diff --git a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot new file mode 100644 index 00000000..1d9d2d42 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot @@ -0,0 +1,98 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource VNFPerformanceManagementKeywords.robot + +*** Test Cases *** +GET Individual VNF Performance Subscription + [Documentation] Test ID: 6.3.3.7.1 + ... Test title: GET Individual VNF Performance Subscription + ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF Performance Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body Subscription Identifier matches the requested Subscription + +GET Individual VNF Performance Subscription with invalid resource identifier + [Documentation] Test ID: 6.3.3.7.2 + ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Performance Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual VNF Performance Subscription + [Documentation] Test ID: 6.3.3.7.3 + ... Test title: DELETE Individual VNF Performance Subscription + ... Test objective: The objective is to test the deletion of an individual VNF performance subscription + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM + Send Delete request for individual VNF Performance Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition VNF Performance Subscription is Deleted + +DELETE Individual VNF Performance Subscription with invalid resource identifier + [Documentation] Test ID: 6.3.3.7.4 + ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual VNF Performance Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual VNF Performance Subscription - Method not implemented + [Documentation] Test ID: 6.3.3.7.5 + ... Test title: POST Individual VNF Performance Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription + ... Pre-conditions: A VNF instance is instantiated + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM + Send Post request for individual VNF Performance Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscription is not Created + +PUT Individual VNF Performance Subscription - Method not implemented + [Documentation] Test ID: 6.3.3.7.6 + ... Test title: PUT Individual VNF Performance Subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance subscription is not modified by the operation + Send Put request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscription is Unmodified (Implicit) + +PATCH Individual VNF Performance Subscription - Method not implemented + [Documentation] Test ID: 6.3.3.7.7 + ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance subscription is not modified by the operation + Send Patch request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscription is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot new file mode 100644 index 00000000..c9948009 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot @@ -0,0 +1,175 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource VNFPerformanceManagementKeywords.robot +Library MockServerLibrary +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +GET all VNF Performance Subscriptions + [Documentation] Test ID: 6.3.3.6.1 + ... Test title: GET all VNF Performance Subscriptions + ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get all VNF Performance Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscriptions + +GET VNF Performance Subscriptions with attribute-based filter + [Documentation] Test ID: 6.3.3.6.2 + ... Test title: GET VNF Performance Subscriptions with attribute-based filter + ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with attribute-based 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 Subscriptions with invalid attribute-based filter + [Documentation] Test ID: 6.3.3.6.3 + ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Performance Subscriptions with invalid resource endpoint + [Documentation] Test ID: 6.3.3.6.4 + ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with invalid resource endpoint + Check HTTP Response Status Code Is 404 + +Create new VNF Performance subscription + [Documentation] Test ID: 6.3.3.6.5 + ... Test title: Create new VNF Performance subscription + ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: A VNF instance is instantiated. + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription + Send Post Request for VNF Performance Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Check Postcondition VNF Performance Subscription Is Set + + +Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions + [Tags] no-duplicated-subs + [Documentation] Test ID: 6.3.3.6.6 + ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions + ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM does not support the creation of duplicated subscriptions + ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM + Send Post Request for Duplicated VNF Performance Subscription + Check HTTP Response Status Code Is 303 + Check HTTP Response Body Is Empty + Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available + +Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions + [Tags] duplicated-subs + [Documentation] Test ID: 6.3.3.6.7 + ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions + ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports the creation of duplicated subscriptions + ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription + Send Post Request for Duplicated VNF Performance Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Check Postcondition VNF Performance Subscription Is Set + +PUT VNF Performance Subscriptions - Method not implemented + [Documentation] Test ID: 6.3.3.6.8 + ... Test title: PUT VNF Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Put Request for VNF Performance Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH VNF Performance Subscriptions - Method not implemented + [Documentation] Test ID: 6.3.3.6.9 + ... Test title: PATCH VNF Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Patch Request for VNF Performance Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE VNF Performance Subscriptions - Method not implemented + [Documentation] Test ID: 6.3.3.6.10 + ... Test title: DELETE VNF Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation + Send Delete Request for VNF Performance Subscriptions + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscriptions Exists + +GET VNF Performance Subscriptions to get Paged Response + [Documentation] Test ID: 6.3.3.6.11 + ... Test title: GET VNF Performance Subscriptions to get Paged Response + ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions to get Paged Response + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get all VNF Performance Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET VNF Performance Management Subscriptions for Bad Request Response too big + [Documentation] Test ID: 6.3.3.6.12 + ... Test title: GET VNF Performance Management Subscriptions for Bad Request Response too big + ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index 394c9728..99da3d1a 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -1,8 +1,7 @@ *** Settings *** Library String Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/individualSubscription.txt + Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem @@ -13,12 +12,263 @@ Library JSONSchemaLibrary schemas/ Library Process *** Keywords *** + +Get all VNF Performance Subscriptions + [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": "application/json"} + Set headers {"Content-Type": "application/json"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/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 PmSubscriptions.schema.json ${result} + # Log Validated PmSubscription schema + + + Get VNF Performance Subscriptions with attribute-based filters + [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}/${apiMajorVersion}/subscriptions?${filter_ok} + ${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 PmSubscriptions.schema.json ${result} + # Log Validated PmSubscription schema + + + +Get VNF Performance Subscriptions with invalid attribute-based filters + [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}/${apiMajorVersion}/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 + # ${result}= Output response body + # Validate Json ProblemDetails.schema.json ${result} + # Log Validated ProblemDetails schema + + +Get VNF Performance Subscriptions with invalid resource endpoint + [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}/${apiMajorVersion}/subscription + ${output}= Output response + Set Suite Variable ${response} ${output} + # 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 + + + +Send Post Request for VNF Performance 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}/${apiMajorVersion}/subscriptions ${body_request} + ${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 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 + + +Send Post Request for Duplicated VNF Performance 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}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + # 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 + + + +Send Put Request for VNF Performance Subscriptions + [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}/${apiMajorVersion}/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 Performance Subscriptions + [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}/${apiMajorVersion}/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 Performance Subscriptions + [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}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 405 + # Log Received 405 Method not implemented as expected + +Get Individual VNF Performance Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET individual VNF Performance Subscription with invalid resource identifier + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual VNF Performance Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual VNF Performance Subscription with invalid resource identifier + Log Trying to delete a subscription in the VNFM with invalid id + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post request for individual VNF Performance Subscription + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for individual VNF Performance Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition VNF Performance Subscription is Unmodified (Implicit) + Log Check postconidtion subscription not modified + GET individual VNF Performance Subscription + Log Check Response matches original VNF Threshold + ${subscription}= evaluate json.loads('''${response['body']}''') json + Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} + Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} + +Check Postcondition VNF Performance Subscription is not Created + Log Trying to get a new subscription + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 404 + +Check Postcondition VNF Performance Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual VNF Performance Subscription + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body Subscription Identifier matches the requested Subscription + Log Trying to check response ID + Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} + Log Subscription identifier as expected Check HTTP Response Status Code Is [Arguments] ${expected_status} Should Be Equal As Strings ${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 @@ -26,9 +276,48 @@ Check HTTP Response Body Json Schema Is 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 + 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 + Should Be Equal As Strings ${response['body'][0]['callbackUri']} ${callbackUri_Sub} + +Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Log Check Response matches subscription + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} + +Check Postcondition VNF Performance Subscription Is Set + Log Check Postcondition subscription exist + Set Headers {"Accept": "${ACCEPT_JSON}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +Check Postcondition Subscription Resource Returned in Location Header Is Available + Log Going to check postcondition + GET ${response['headers']['Location']} + 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 PmSubscription.schema.json ${result} + Log Validated PmSubscription schema + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} + Log Validated Issued subscription is same as original + +Check Postcondition VNF Performance Subscriptions Exists + Log Checking that subscriptions exists + Get all VNF Performance Subscriptions Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} @@ -59,6 +348,6 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check HTTP Response Header Contain Link +Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index c6f2f9a8..8636509c 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -27,4 +27,39 @@ ${response} http-response ${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${subscribe} /subscribe \ No newline at end of file +${subscribe} /subscribe + + + +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId +${OrigResponse}= httpresponse + +${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${erroneousThresholdId} erroneousThresholdId +${newThresholdId} newThresholdId + +${POS_FILTER} objectInstanceIds=${objectInstanceIds} +${NEG_FILTER} criteriaPmJob=erroneousAttributeName +${fields} criteria,reports +${SEPERATOR} = + +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId + + +${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${FILTER_KO} criterias=erroneousFilter + +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId + +${callbackUri_Sub} http://172.22.1.7:9091/vnfpm/subscriptions +${filter_ok} callbackUri=${callbackUri_Sub} +${filter_ko} erroneousFilter=erroneous +${total_polling_time} 2 min +${polling_interval} 10 sec + -- GitLab