From e52d714b6b79d7859233432a71187bcea60e7716 Mon Sep 17 00:00:00 2001
From: zafar <zafar@etsi.org>
Date: Tue, 1 Dec 2020 18:47:10 +0500
Subject: [PATCH] New Resource IndividualGrant added in SOL011

---
 .../Grants.robot                              |   8 +-
 .../IndividualGrant.robot                     | 122 ++++++++++++++++++
 .../environment/variables.txt                 |   2 +-
 .../schemas/Grant.schema.json                 |  51 ++++++++
 .../schemas/Grants.schema.json                |  53 --------
 5 files changed, 178 insertions(+), 58 deletions(-)
 create mode 100644 SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot
 create mode 100644 SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json
 delete mode 100644 SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json

diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot
index 65cd3d44..172edd6d 100644
--- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot
+++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot
@@ -38,7 +38,7 @@ GET Grants - Method not implemented
     ...    Test title: GET Grants - Method not implemented
     ...    Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting 
     ...    Pre-conditions: none
-    ...    Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1
+    ...    Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1
     ...    Config ID: Config_prod_NFVO
     ...    Applicability: none
     ...    Post-Conditions:   none
@@ -50,7 +50,7 @@ PUT Grants - Method not implemented
     ...    Test title: PUT Grants - Method not implemented
     ...    Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting 
     ...    Pre-conditions: none
-    ...    Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1
+    ...    Reference: Clause 7.5.3.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1
     ...    Config ID: Config_prod_NFVO
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -62,7 +62,7 @@ PATCH Grants - Method not implemented
     ...    Test title: PATCH Grants - Method not implemented
     ...    Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting  
     ...    Pre-conditions: none
-    ...    Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1
+    ...    Reference: Clause 7.5.3.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1
     ...    Config ID: Config_prod_NFVO
     ...    Applicability: none
     ...    Post-Conditions: none 
@@ -74,7 +74,7 @@ DELETE Grants - Method not implemented
     ...    Test title: DELETE Grants - Method not implemented
     ...    Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting  
     ...    Pre-conditions: none
-    ...    Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1
+    ...    Reference: Clause 7.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1
     ...    Config ID: Config_prod_NFVO
     ...    Applicability: none
     ...    Post-Conditions:  resources are not deleted
diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot
new file mode 100644
index 00000000..af8da812
--- /dev/null
+++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot
@@ -0,0 +1,122 @@
+*** Settings ***
+Resource   environment/variables.txt 
+Library    OperatingSystem
+Library    JSONLibrary
+Library    JSONSchemaLibrary    schemas/
+Library    REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}    ssl_verify=false
+Documentation    This resource represents an individual grant. The client can use this resource to read the grant.
+...    It is determined by means outside the scope of the present document, such as configuration or policy,
+...    how long an individual grant is available.
+
+*** Test Cases ***
+POST Individual Grant - Method not implemented
+    [Documentation]    Test ID: 9.3.3.2.1
+    ...    Test title: POST Individual Grant - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed for Life cycle operation granting  
+    ...    Pre-conditions: none
+    ...    Reference: Clause 7.5.4.3.1 - ETSI GS NFV-SOL 011 [1] v3.3.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Post individual Grant
+    Check HTTP Response Status Code Is    405
+    
+GET an individual grant - Successful
+    [Documentation]    Test ID: 9.3.3.2.2
+    ...    Test title: GET an individual grant - Successful
+    ...    Test objective: The objective is to retrieve a grant for a particular NS Lifecycle Operation.
+    ...    Pre-conditions: The  grant information is available to the NFVO
+    ...    Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [1] v3.3.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Get individual grant
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    Grant
+    
+PUT an individual grant - Method not implemented
+    [Documentation]    Test ID: 9.3.3.2.3
+    ...    Test title: PUT an individual grant - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to for Life cycle operation granting  
+    ...    Pre-conditions: none
+    ...    Reference: Clause 7.5.4.3.3 - ETSI GS NFV-SOL 011 [1] v3.3.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PUT individual Grant
+    Check HTTP Response Status Code Is    405
+
+PATCH an individual grant - Method not implemented
+    [Documentation]    Test ID: 9.3.3.2.4
+    ...    Test title: PATCH an individual grant - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to for Life cycle operation granting  
+    ...    Pre-conditions: none
+    ...    Reference: Clause 7.5.4.3.4 - ETSI GS NFV-SOL 011 [1] v3.3.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Patch individual Grant
+    Check HTTP Response Status Code Is    405
+    
+DELETE an individual grant - Method not implemented
+    [Documentation]    Test ID: 9.3.3.2.5
+    ...    Test title: DELETE an individual grant - Method not implemented
+    ...    Test objective: The objective is to test that DELETE method is not allowed to for Life cycle operation granting  
+    ...    Pre-conditions: none
+    ...    Reference: Clause 7.5.4.3.5 - ETSI GS NFV-SOL 011 [1] v3.3.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Delete individual Grant
+    Check HTTP Response Status Code Is    405
+
+*** Keywords ***    
+Get individual grant
+    log    Trying to read an individual grant
+    Set Headers    {"Accept":"${ACCEPT}"}  
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId}
+    ${body}=    Output    response
+    Set Suite Variable    ${response}    ${body}
+
+Post individual Grant
+    log    Trying to create an individual grant
+    Set Headers    {"Accept":"${ACCEPT}"}  
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId}
+    ${body}=    Output    response
+    Set Suite Variable    ${response}    ${body}
+
+Put individual Grant
+    Log    Trying to update an individual grant. This method should not be implemented.
+    Set Headers  {"Accept":"${ACCEPT}"} 
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId}
+    ${body}=    Output    response
+    Set Suite Variable    ${response}    ${body}
+    
+Patch individual Grant
+    Log    Trying to update an individual grant. This method should not be implemented.
+    Set Headers  {"Accept":"${ACCEPT}"} 
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    Patch    ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId}
+    ${body}=    Output    response
+    Set Suite Variable    ${response}    ${body}
+    
+Delete individual Grant
+    Log    Trying to delete an individual grant. This method should not be implemented.
+    Set Headers  {"Accept":"${ACCEPT}"} 
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId}
+    ${body}=    Output    response
+    Set Suite Variable    ${response}    ${body}
+        
+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}
+    ${schema} =    Catenate    ${input}    .schema.json
+    Validate Json    ${schema}    ${response['body']}
diff --git a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt
index cfb44672..1895ddcb 100644
--- a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt
+++ b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt
@@ -14,7 +14,7 @@ ${apiVersion}     v1
 
 ${SYNC_MODE}    1
 
-
+${grantId}
 
 
 ${response}
diff --git a/SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json b/SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json
new file mode 100644
index 00000000..021c90e6
--- /dev/null
+++ b/SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json
@@ -0,0 +1,51 @@
+{
+  "description": "This type represents a grant. It shall comply with the provisions defined in table 7.6.2.3-1.",
+  "type": "object",
+  "required": [
+    "id",
+    "nsInstanceId",
+    "nsLcmOpOccId",
+    "_links"
+  ],
+  "properties": {
+    "id": {
+      "description": "Identifier of the grant.",
+      "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
+    },
+    "nsInstanceId": {
+      "description": "Identifier of the NS instance which this grant request relates to.",
+      "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
+    },
+    "nsLcmOpOccId": {
+      "description": "Identifier of the NS lifecycle management operation occurrence associated to the GrantRequest.",
+      "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
+    },
+    "additionalParams": {
+      "description": "Additional parameters passed by NFVO-N, specific to the NS and the lifecycle management operation.",
+      "$ref": "../components/SOL011_schemas.yaml#/components/schemas/KeyValuePairs"
+    },
+    "_links": {
+      "description": "Links to resources related to this resource.",
+      "type": "object",
+      "required": [
+        "self",
+        "nsLcmOpOcc",
+        "nsInstance"
+      ],
+      "properties": {
+        "self": {
+          "description": "URI of this resource",
+          "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link"
+        },
+        "nsLcmOpOcc": {
+          "description": "Related NS lifecycle management operation occurrence",
+          "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link"
+        },
+        "nsInstance": {
+          "description": "Related NS instance.",
+          "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json b/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json
deleted file mode 100644
index 05e5dfe3..00000000
--- a/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "Grant": {
-    "description": "This type represents a grant. It shall comply with the provisions defined in table 7.6.2.3-1.",
-    "type": "object",
-    "required": [
-      "id",
-      "nsInstanceId",
-      "nsLcmOpOccId",
-      "_links"
-    ],
-    "properties": {
-      "id": {
-        "description": "Identifier of the grant.",
-        "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
-      },
-      "nsInstanceId": {
-        "description": "Identifier of the NS instance which this grant request relates to.",
-        "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
-      },
-      "nsLcmOpOccId": {
-        "description": "Identifier of the NS lifecycle management operation occurrence associated to the GrantRequest.",
-        "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
-      },
-      "additionalParams": {
-        "description": "Additional parameters passed by NFVO-N, specific to the NS and the lifecycle management operation.",
-        "$ref": "../components/SOL011_schemas.yaml#/components/schemas/KeyValuePairs"
-      },
-      "_links": {
-        "description": "Links to resources related to this resource.",
-        "type": "object",
-        "required": [
-          "self",
-          "nsLcmOpOcc",
-          "nsInstance"
-        ],
-        "properties": {
-          "self": {
-            "description": "URI of this resource",
-            "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link"
-          },
-          "nsLcmOpOcc": {
-            "description": "Related NS lifecycle management operation occurrence",
-            "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link"
-          },
-          "nsInstance": {
-            "description": "Related NS instance.",
-            "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link"
-          }
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
-- 
GitLab