diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index ee2984671150ab486828276021a2c3d1b96b9f34..c660a74a606277874381bd5da3f9942106a46097 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -20,7 +20,15 @@ POST Configuration - Method not implemented Log Validate Status code Integer response status 405 -Get information about a configuration +Get information about a configuration + [Documentation] Test ID: 9.4.2.1 + ... Test title: Get information about a configuration + ... Test objective: The objective is to read configuration information about a VNF instance and/or its VNFC instances + ... Pre-conditions: + ... Reference: section 9.4.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Query VNF The GET method queries information about a configuration. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -46,6 +54,14 @@ PUT Config - Method not implemented Integer response status 405 PATCH Config + [Documentation] Test ID: 9.4.2.2 + ... Test title: Set or modify a configuration resource + ... Test objective: The objective is to set or modify a configuration resource + ... Pre-conditions: A VNF instance and its VNFC instances exist + ... Reference: section 9.4.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Configuration of the VNF instance and/or its VNFC instances has been set log Trying to perform a PATCH. This method modifies the configuration Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -63,10 +79,14 @@ PATCH Config Log Validation OK PATCH Config - Precondition failed - [Documentation] Precondition Failed - ... Precondition Failed A precondition given in an HTTP request header is not fulfilled. - ... Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. - ... The response body should contain a ProblemDetails structure, in which the �detail� attribute should convey more information about the error. + [Documentation] Test ID: 9.4.2.2-1 + ... Test title: Set or modify a configuration resource - Precondition failed + ... Test objective: The objective is to set or modify a configuration resource, but a precondition given in an HTTP request header is not fulfilled + ... Pre-conditions: A VNF instance and its VNFC instances exist, ETag modified in the meanwhile + ... Reference: section 9.4.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Depends On Test PATCH Alarm # If the previous test scceeded, it means that Etag has been modified log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index 7da097d1d715195fde47d2561f9aef4984a428ae..33fa0f43c5d4dec174b73d15716240aa3ed3d718 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -16,7 +16,15 @@ POST Alarms - Method not implemented Log Validate Status code Integer response status 405 -Get information about multiple alarms +Get information about multiple alarms + [Documentation] Test ID: 7.4.2.1 + ... Test title: Get information about multiple alarms + ... Test objective: The objective is to retrieve information about the alarm list + ... Pre-conditions: + ... Reference: section 7.4.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Query VNF The GET method queries information about multiple alarms. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -32,6 +40,14 @@ Get information about multiple alarms Log Validation OK Get information about multiple alarms with filters + [Documentation] Test ID: 7.4.2.2 + ... Test title: Get information about multiple alarms - with filters + ... Test objective: The objective is to retrieve information about the alarm list + ... Pre-conditions: + ... Reference: section 7.4.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Query VNF The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -47,6 +63,14 @@ Get information about multiple alarms with filters Log Validation OK Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 7.4.2.2-1 + ... Test title: Get information about multiple alarms - with Invalid attribute-based filtering parameters + ... Test objective: The objective is to retrieve information about the alarm list + ... Pre-conditions: + ... Reference: section 7.4.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Query VNF The GET method queries information about multiple alarm instances. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index 6b8e85783079256ef00ad27f68417502f564c46f..4ca642eb9cf017368286ddd047b858ee7fdd57d1 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -6,7 +6,14 @@ Suite Setup Check resource existance *** Test Cases *** Escalate the perceived severity - [Documentation] escalate the perceived severity of an alarm with the VNFM + [Documentation] Test ID: 7.4.4.1 + ... Test title: Escalate the perceived severity + ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource. + ... Pre-conditions: The resource representing the individual alarm has been created + ... Reference: section 7.4.4 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log escalate the perceived severity of an alarm with the VNFM Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index acb9494327a445842fe72a29c3954c9ad516c83c..c38f6622efce273efd041ae50cf3189dd454d193 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -21,7 +21,15 @@ POST Alarm - Method not implemented Log Validate Status code Integer response status 405 -Get information about a configuration +Get information about a configuration + [Documentation] Test ID: 7.4.3.1 + ... Test title: Get information about an alarm + ... Test objective: The objective is to read an individual alarm. + ... Pre-conditions: The related alarm exists + ... Reference: section 7.4.3 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Query VNF The GET method queries information about an alarm. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -47,7 +55,14 @@ PUT Alarm - Method not implemented Integer response status 405 PATCH Alarm - [Documentation] This method modifies an individual alarm resource + [Documentation] Test ID: 7.4.3.2 + ... Test title: Modify an individual alarm resource + ... Test objective: The objective is to Modify an individual alarm resource + ... Pre-conditions: The related alarm exists + ... Reference: section 7.4.3 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} @@ -65,10 +80,14 @@ PATCH Alarm Log Validation OK PATCH Alarm - Conflict - [Documentation] Conflict - ... The operation cannot be executed currently, due to a conflict with the state of the �Individual alarm� resource. - ... Typically, this is due to the fact that the alarm is already in the state that is requested to be set (such as trying to acknowledge an already-acknowledged alarm). - ... The response body shall contain a ProblemDetails structure, in which the �detail� attribute should convey more information about the error. + [Documentation] Test ID: 7.4.3.2-1 + ... Test title: Modify an individual alarm resource - Conflict + ... Test objective: The objective is to Modify an individual alarm resource + ... Pre-conditions: The related alarm exists + ... Reference: section 7.4.3 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: The alarm resource is not modified Depends On Test PATCH Alarm # If the previous test scceeded, it means that the alarm is in ackownledged state log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} @@ -84,10 +103,14 @@ PATCH Alarm - Conflict Log Validation OK PATCH Alarm - Precondition failed - [Documentation] Precondition Failed - ... A precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, - ... indicating that the resource was modified by another entity. The response body should contain a ProblemDetails structure, - ... in which the �detail� attribute should convey more information about the error. + [Documentation] Test ID: 7.4.3.2-1 + ... Test title: Modify an individual alarm resource - Precondition failed + ... Test objective: The objective is to Modify an individual alarm resource + ... Pre-conditions: The related alarm exists + ... Reference: section 7.4.3 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: The alarm resource is not modified Depends On Test PATCH Alarm # If the previous test scceeded, it means that Etag has been modified log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index db380227f11a5f32e7aac91faf1c9821a54c6cad..a6afd61e16d1fd3980faa4f597f042e9ff541db9 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -19,6 +19,14 @@ Post Individual Subscription - Method not implemented Integer response status 405 Get Information about an individual subscription + [Documentation] Test ID: 7.4.6.1 + ... Test title: Retrieve the alarm subscriptions + ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client + ... Pre-conditions: The subscription with the given id exists + ... Reference: section 7.4.6 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index fcbed86adc5a594450608d6ff36b9a70e696aca2..8d35da41b62fa23eac5292d055e91dfb68886de1 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -7,25 +7,37 @@ Library Process Library OperatingSystem Library REST ${CONSUMER_SCHEMA}://${CONSUMER_HOST}:${notification_port} -*** Variables *** -${sleep_interval} 20s - *** Test Cases *** Deliver a notification - Alarm + [Documentation] Test ID: 7.4.5.1 + ... Test title: Deliver a notification - Alarm + ... Test objective: The objective is to notify a VNF alarm or that the alarm list has been rebuilt. + ... Pre-conditions: The VNF has subscribed to the VNFM alarm + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log The POST method delivers a notification - Information of a VNF alarm. ${json}= Get File schemas/alarmNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle alarmNotification - &{req}= Create Mock Request Matcher POST ${notification_ep} body_type="JSON_SCHEMA" body=${BODY} + &{req}= Create Mock Request Matcher POST ${notification_ep} 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} + Wait Until Keyword Succeeds ${sleep_interval} Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${notification_ep} Deliver a notification - Alarm Clearance + [Documentation] Test ID: 7.4.5.2 + ... Test title: Deliver a notification - Alarm Clearance + ... Test objective: The objective is to notify a VNF alarm or that the alarm list has been rebuilt. + ... Pre-conditions: The VNF has subscribed to the VNFM alarm + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log The POST method delivers a notification - Information of a VNF alarm. ${json}= Get File schemas/alarmClearedNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json @@ -33,34 +45,48 @@ Deliver a notification - Alarm Clearance &{req}= Create Mock Request Matcher POST ${notification_ep} 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} + Wait Until Keyword Succeeds ${sleep_interval} Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${notification_ep} Deliver a notification - Alarm List Rebuilt + [Documentation] Test ID: 7.4.5.3 + ... Test title: Deliver a notification - Alarm List Rebuilt + ... Test objective: The objective is to notify a VNF alarm or that the alarm list has been rebuilt. + ... Pre-conditions: The VNF has subscribed to the VNFM alarm + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log The POST method delivers a notification - Information of a VNF alarm. ${json}= Get File schemas/alarmListRebuiltNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json Log Creating mock request and response to handle alarmNotification - &{req}= Create Mock Request Matcher POST ${notification_ep} body_type="JSON_SCHEMA" body=${BODY} + &{req}= Create Mock Request Matcher POST ${notification_ep} 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} + Wait Until Keyword Succeeds ${sleep_interval} Verify Mock Expectation ${req} Log Cleaning the endpoint Clear Requests ${notification_ep} Test a notification end point + [Documentation] Test ID: 7.4.5.4 + ... Test title: Test a notification end point + ... Test objective: The objective is to allow the server to test the notification endpoint that is provided by the client, e.g. during subscription + ... Pre-conditions: + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log The GET method allows the server to test the notification endpoint - &{req}= Create Mock Request Matcher GET ${notification_ep} - &{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 ${notification_ep} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${notification_ep} + Log Validate Status code + Integer response status 204 + Log Validation OK PUT notification - Method not implemented log Trying to perform a PUT. This method should not be implemented @@ -87,4 +113,4 @@ DELETE subscriptions - Method not implemented Create Sessions Start Process java -jar ../../bin/mockserver-netty-5.3.0-jar-with-dependencies.jar -serverPort ${notification_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue - Create Mock Session ${CONSUMER_SCHEMA}://${CONSUMER_HOST}:${notification_port} #The API producer is set to NFVO according to SOL003-7.3.4 \ No newline at end of file + Create Mock Session ${CONSUMER_SCHEMA}://${CONSUMER_HOST}:${notification_port} #The API producer is set to NFVO according to SOL002-7.3.4 \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 7671246a01fa4815d55ea1c47960e0215c9fa0d4..a2e86ca3eabc3b6881565101f5d2352e71b1784b 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -8,6 +8,14 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** Create a new subscription + [Documentation] Test ID: 7.4.5.1 + ... Test title: Create a new alarm subscription + ... Test objective: The objective is to create a new subscription. + ... Pre-conditions: no subscription with the same filter and callbackUri exists + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -26,6 +34,14 @@ Create a new subscription Log Validation OK Create a new Subscription - DUPLICATION + [Documentation] Test ID: 7.4.5.2 + ... Test title: Create a new alarm subscription - DUPLICATION + ... Test objective: The objective is to create a new subscription. + ... Pre-conditions: subscription with the same filter and callbackUri exists + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: the VNFM allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists + ... Post-Conditions: Log Trying to create a subscription with an already created content Pass Execution If ${NVFM_DUPLICATION} == 0 NVFO is not permitting duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} @@ -43,6 +59,14 @@ Create a new Subscription - DUPLICATION Log Validation OK Create a new Subscription - NO-DUPLICATION + [Documentation] Test ID: 7.4.5.3 + ... Test title: Create a new alarm subscription - NO DUPLICATION + ... Test objective: The objective is to create a new subscription. + ... Pre-conditions: subscription with the same filter and callbackUri exists + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: the VNFM decides to not create a duplicate subscription resource + ... Post-Conditions: Log Trying to create a subscription with an already created content Pass Execution If ${NVFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} @@ -57,6 +81,14 @@ Create a new Subscription - NO-DUPLICATION Log Validation OK GET Subscriptions + [Documentation] Test ID: 7.4.5.4 + ... Test title: Retrieve a list of alarm subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions + ... Pre-conditions: + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -71,6 +103,14 @@ GET Subscriptions Log Validation OK GET Subscription - Filter + [Documentation] Test ID: 7.4.5.5 + ... Test title: Retrieve a list of alarm subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions with filter + ... Pre-conditions: + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -83,6 +123,14 @@ GET Subscription - Filter Log Validation OK GET subscriptions - Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 7.4.5.5-1 + ... Test title: Retrieve a list of alarm subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters + ... Pre-conditions: + ... Reference: section 7.4.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index 7bba5b601516a377d930d3edb92a0c381f72787d..1202276c2febf2a9dfac6dd3da4aa6320cb59ee1 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -39,4 +39,5 @@ ${notification_port} 9091 ${AlarmNotification} {} ${AlarmClearedNotification} {} ${AlarmListRebuiltNotification} {} -${PerceivedSeverity} CRITICAL \ No newline at end of file +${PerceivedSeverity} CRITICAL +${sleep_interval} 20s \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot index a985d6393562294d046c8f2b799390fa9f16b291..45e735fd0e8a69e12cf69b5fa6e87c424794d424 100644 --- a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot @@ -19,7 +19,7 @@ Post Individual Subscription - Method not implemented Integer response status 405 Get Information about an individual subscription - [Documentation] Test ID: 7.4.4.5 + [Documentation] Test ID: 7.4.5.1 ... Test title: Retrieve the alarm subscriptions ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client ... Pre-conditions: The subscription with the given id exists diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index be9b0956548577822f7e7f1b2e83cfa62dd5d718..2c0471c184d1efb717e216281d3037855fb1649e 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -8,45 +8,54 @@ Library JSONSchemaLibrary schemas/ Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. +*** Variables *** +${response} {} + *** Test Cases *** -Create a new Grant - Synchronous mode +Request a new Grant - Synchronous mode + [Documentation] Test ID: 9.4.2.1 + ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode + ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation + ... Pre-conditions: + ... Reference: section 9.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The NFVO can decide immediately what to respond to a grant request + ... Post-Conditions: The grant information is available to the VNFM. Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File json/grantRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} - Integer response status 201 - Log Status code validated - ${headers}= Output response headers - Should Contain ${headers} Location - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} ${CONTENT_TYPE} - ${result}= Output response body - ${json}= evaluate json.loads('''${result}''') json - Validate Json grant.schema.json ${json} + Send Request Grant Request + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is grant.schema.json Log Validation OK -Create a new Grant - Asynchronous mode +Request a new Grant - Asynchronous mode + [Documentation] Test ID: 9.4.2.2 + ... Test title: Requests a grant for a particular VNF lifecycle operation - Asynchronous mode + ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation + ... Pre-conditions: + ... Reference: section 9.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The NFVO can not decide immediately what to respond to a grant request + ... Post-Conditions: The grant information is available to the VNFM. Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File json/grantRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} - Output response - Integer response status 202 - Log Status code validated - ${headers}= Output response headers - Should Contain ${headers} Location - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} ${CONTENT_TYPE} + Send Request Grant Request + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is grant.schema.json + Wait Until Keyword Succeeds 2 min 10 sec Get an individual grant - Successful Log Validation OK -Create a new Grant - Forbidden - # TODO: How to set up the pre-condition for this test? +Request a new Grant - Forbidden + [Documentation] Test ID: 9.4.2.3 + ... Test title: Requests a grant for a particular VNF lifecycle operation - Forbidden + ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation + ... Pre-conditions: The grant should not be accorded + ... Reference: section 9.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants Log The grant request should be rejected Set Headers {"Accept": "${ACCEPT}"} @@ -56,7 +65,7 @@ Create a new Grant - Forbidden Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} Integer response status 403 Log Status code validated - ${problemDetails}= Output response body + ${problemDetails}= Output response body ${json}= evaluate json.loads('''${problemDetails}''') json Validate Json ProblemDetails.schema.json ${json} Log Validation OK @@ -93,4 +102,41 @@ DELETE Grants - Method not implemented Delete ${apiRoot}/${apiName}/${apiVersion}/grants Log Validate Status code Integer response status 405 + + +*** Keywords *** +Send Request Grant Request + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File json/grantRequest.json + ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal ${response.status_code} ${expected_status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response.headers} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${schema} + ${json}= evaluate json.loads('''${response.body}''') json + Validate Json ${schema} ${json} + Log Json Schema Validation OK + +Get an individual grant - Successful + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${response.headers.Location} + Log Validate Status code + Integer response status 200 + ${result}= Output response body + ${json}= evaluate json.loads('''${result}''') json + Validate Json grant.schema.json ${json} + Log Validation OK \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index fd2e9a0b361fe21354b31eb07acc4a7276f65b91..5e1cce6b25f855d8928330f4300edf12bafa8dd9 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -20,7 +20,14 @@ Post Individual Grant - Method not implemented Integer response status 405 Get an individual grant - Successful - # TODO: How to set up the precondition? + [Documentation] Test ID: 9.4.3.1 + ... Test title: Requests a grant for a particular VNF lifecycle operation - Successful + ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation + ... Pre-conditions: The related grant information is available to the VNFM + ... Reference: section 9.4.3 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -35,7 +42,14 @@ Get an individual grant - Successful Log Validation OK Get an individual grant - Process ongoing - # TODO: How to set up the precondition? + [Documentation] Test ID: 9.4.3.2 + ... Test title: Requests a grant for a particular VNF lifecycle operation - Process ongoing + ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation + ... Pre-conditions: The process of creating the grant is ongoing, no grant is available yet. + ... Reference: section 9.4.3 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -44,7 +58,14 @@ Get an individual grant - Process ongoing Integer response status 202 Get an individual grant - grant rejected - # TODO: How to set up the precondition? + [Documentation] Test ID: 9.4.3.3 + ... Test title: Requests a grant for a particular VNF lifecycle operation - grant rejected + ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation + ... Pre-conditions: The related grant is rejected + ... Reference: section 9.4.3 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot index 65976372e45b2e194bdf41d057ff7ced97ba9e9d..6e1ea344c256acbe80769e94e40727a1077fc87f 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot @@ -19,6 +19,14 @@ Post Individual Subscription - Method not implemented Integer response status 405 Get Information about an individual subscription + [Documentation] Test ID: 11.4.3.1 + ... Test title: Retrieve the resource quota subscriptions + ... Test objective: The objective is to read an individual subscription for resource quota subscribed by the client + ... Pre-conditions: The subscription with the given id exists + ... Reference: section 11.4.3 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index bfec540c0d915f38c355f51ee0c84df972e9dd91..57870aefdf3d324fb5af5e69fa6a6a5f85ae84ad 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -10,6 +10,14 @@ ${sleep_interval} 20s *** Test Cases *** Deliver a notification - Vr Quota Availibility + [Documentation] Test ID: 11.4.4.1 + ... Test title: Deliver a notification - Vr Quota Availibility + ... Test objective: The objective is to notify related to the availability of the virtualised resources quota. + ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource + ... Reference: section 11.4.4 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: log The POST method delivers a notification from the server to the client. ${json}= Get File schemas/VrQuotaAvailNotification.schema.json ${BODY}= evaluate json.loads('''${json}''') json diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index b5b22e67b226349aeb963a0596f3bf54095b71e5..ee3e1cdebd387c860d8a4a31b2d29c6caf5af802 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -9,6 +9,14 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** Create a new subscription + [Documentation] Test ID: 11.4.2.1 + ... Test title: Create a new subscription related to the availability of the virtualised resources quotas + ... Test objective: The objective is to create a new subscription. + ... Pre-conditions: no subscription with the same filter and callbackUri exists + ... Reference: section 11.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -27,6 +35,14 @@ Create a new subscription Log Validation OK Create a new Subscription - DUPLICATION + [Documentation] Test ID: 11.4.2.2 + ... Test title: Create a new resource quota subscription - DUPLICATION + ... Test objective: The objective is to create a new subscription. + ... Pre-conditions: subscription with the same filter and callbackUri exists + ... Reference: section 7.4.4 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: the VNFM allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists + ... Post-Conditions: Log Trying to create a subscription with an already created content Pass Execution If ${NFVO_DUPLICATION} == 0 NVFO is not permitting duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} @@ -44,6 +60,14 @@ Create a new Subscription - DUPLICATION Log Validation OK Create a new Subscription - NO-DUPLICATION + [Documentation] Test ID: 11.4.2.3 + ... Test title: Create a new resource quota subscription - NO DUPLICATION + ... Test objective: The objective is to create a new subscription. + ... Pre-conditions: subscription with the same filter and callbackUri exists + ... Reference: section 11.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: the VNFM decides to not create a duplicate subscription resource + ... Post-Conditions: Log Trying to create a subscription with an already created content Pass Execution If ${NFVO_DUPLICATION} == 1 VNFM permits duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} @@ -58,6 +82,14 @@ Create a new Subscription - NO-DUPLICATION Log Validation OK GET Subscriptions + [Documentation] Test ID: 11.4.2.4 + ... Test title: Retrieve a list of resource quota subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions + ... Pre-conditions: + ... Reference: section 11.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -72,6 +104,14 @@ GET Subscriptions Log Validation OK GET Subscription - Filter + [Documentation] Test ID: 11.4.2.5 + ... Test title: Retrieve a list of resource quota subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions with filter + ... Pre-conditions: + ... Reference: section 11.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -84,6 +124,14 @@ GET Subscription - Filter Log Validation OK GET subscriptions - Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 11.4.2.5-1 + ... Test title: Retrieve a list of resource quota subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters + ... Pre-conditions: + ... Reference: section 11.4.2 - SOL003 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}