From d633b0293f85bd181e0fdb9a55d8504f0ee5df25 Mon Sep 17 00:00:00 2001
From: Abbas Ahmad <abbas.ahmad@eglobalmark.com>
Date: Fri, 21 Jun 2019 16:20:29 +0200
Subject: [PATCH] Reference corrections + Individual Alarms Sol3 Fault
 management

---
 SOL003/VNFFaultManagement-API/Alarms.robot    |   4 +-
 .../FaultManagement-APIKeyword.robot          |  46 +++--
 .../IndividualAlarm.robot                     | 175 ++++++++----------
 3 files changed, 110 insertions(+), 115 deletions(-)

diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot
index 4e1431a4..86f90b19 100644
--- a/SOL003/VNFFaultManagement-API/Alarms.robot
+++ b/SOL003/VNFFaultManagement-API/Alarms.robot
@@ -39,7 +39,7 @@ Get information about multiple alarms with filters
     ...    Test title: Get information about multiple alarms with filters 
     ...    Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters 
     ...    Pre-conditions: none 
-    ...    Reference: section 7.4.2 - SOL003 v2.4.1
+    ...    Reference: section 7.4.2.3.2 - SOL003 v2.4.1
     ...    Config ID: Config_prod_VNFM
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -52,7 +52,7 @@ Get information about multiple alarms Bad Request Invalid attribute-based filter
     ...    Test title:  The objective is to try to retrieve information about the alarm list and perform a JSON schema and content validation of the returned problem details data structure, and verify that the retrieved information matches the issued attribute-based filters 
     ...    Test objective: The objective is to retrieve information about the alarm list
     ...    Pre-conditions: 
-    ...    Reference: section 7.4.2 - SOL003 v2.4.1
+    ...    Reference: section 7.4.2.3.2 - SOL003 v2.4.1
     ...    Config ID: Config_prod_VNFM
     ...    Applicability: 
     ...    Post-Conditions: 
diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot
index 916f92c9..d481867a 100644
--- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot
+++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot
@@ -8,11 +8,22 @@ Library    OperatingSystem
 
 Library    Process
 
+*** Variables ***
+${original_etag}    1234
+
 *** Keywords ***
 Check Postcondition VNF fault management alarms Exists
-    Log    Checking that subscriptions exists
+    Log    Checking that alarms exists
     GET Fault Management Alarms
-    
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    Alarms
+
+Check Postcondition VNF fault management individual alarm Exists
+    Log    Checking that individual alarm exists
+    GET Fault Management Individual Alarm
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    alarm  
+      
 Check Individual Subscription existance
     Set Headers    {"Accept":"${ACCEPT}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
@@ -101,7 +112,7 @@ GET Fault Management Alarms With Invalid Filters
 	${outputResponse}=    Output    response
 	Set Global Variable    @{response}    ${outputResponse} 
 	
-Do POST Individual Alarm
+Send POST request for fault management Individual Alarm
     log    Trying to perform a PUT. This method should not be implemented
     Set Headers  {"Accept":"${ACCEPT}"}  
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
@@ -109,7 +120,7 @@ Do POST Individual Alarm
     ${outputResponse}=    Output    response 
     Set Global Variable    @{response}    ${outputResponse}
     
-Do DELETE Individual Alarm
+DELETE Fault Management Individual Alarm
     log    Trying to perform a DELETE. This method should not be implemented
     Set Headers  {"Accept":"${ACCEPT}"}  
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
@@ -117,7 +128,7 @@ Do DELETE Individual Alarm
     ${outputResponse}=    Output    response
     Set Global Variable    @{response}    ${outputResponse}
     
-Do PUT Individual Alarm
+PUT Fault Management Individual Alarm
     log    Trying to perform a PUT. This method should not be implemented
     Set Headers  {"Accept":"${ACCEPT}"}  
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
@@ -125,17 +136,19 @@ Do PUT Individual Alarm
     ${outputResponse}=    Output    response
     Set Global Variable    @{response}    ${outputResponse}
 
-Do GET Individual Alarm
-    Log    Query NFVO The GET method queries information about an alarm.
+GET Fault Management Individual Alarm
+    Log    Query VNF The GET method queries information about an alarm.
     Set Headers  {"Accept":"${ACCEPT}"}  
     Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    Log    Execute Query 
+    Log    Execute Query and validate response
     Get    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}
+    ${etag}    Output    response headers ETag
+    Set Suite Variable    &{original_etag}    ${etag}
     ${outputResponse}=    Output    response
     Set Global Variable    @{response}    ${outputResponse}
     
-Do GET Invalid Individual Alarm
+GET Fault Management Individual Alarm with invalid id
     Log    Query NFVO The GET method queries information about an invalid alarm. Should return does not exist
     Set Headers  {"Accept":"${ACCEPT}"}  
     Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
@@ -145,17 +158,28 @@ Do GET Invalid Individual Alarm
     ${outputResponse}=    Output    response
     Set Global Variable    @{response}    ${outputResponse}
    
-Do PATCH Individual Alarm
+PATCH Fault Management Individual Alarm
+    log    Trying to perform a PATCH. This method modifies an individual alarm resource
+    Set Headers  {"Accept":"${ACCEPT}"} 
+    Set Headers  {"Content-Type": "${CONTENT_TYPE_PATCH}"} 
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    ${body}=    Get File    jsons/alarmModifications.json
+    Patch    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}    ${body}
+    ${outputResponse}=    Output    response
+    Set Global Variable    @{response}    ${outputResponse}
+    
+PATCH Fault Management Individual Alarm - precondition failed
     log    Trying to perform a PATCH. This method modifies an individual alarm resource
     Set Headers  {"Accept":"${ACCEPT}"} 
     Set Headers  {"Content-Type": "${CONTENT_TYPE_PATCH}"} 
+    Set Headers    {"If-Match": "${original_etag[0]}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/alarmModifications.json
     Patch    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}    ${body}
     ${outputResponse}=    Output    response
     Set Global Variable    @{response}    ${outputResponse}
    
-Do PATCH Individual Alarm Conflict
+PATCH Fault Management Individual Alarm Conflict
     log    Trying to perform a PATCH. This method modifies an individual alarm resource
     Set Headers  {"Accept":"${ACCEPT}"} 
     Set Headers  {"Content-Type": "${CONTENT_TYPE_PATCH}"} 
diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot
index 3b8be8e7..841549df 100644
--- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot
+++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot
@@ -1,6 +1,7 @@
 *** Settings ***
 # Suite setup     Expect spec    SOL003-VNFLifecycleManagement-API.yaml
 Resource    environment/variables.txt 
+Resource    FaultManagement-APIKeyword.robot
 Library    REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} 
 Library    OperatingSystem
 Library    JSONLibrary
@@ -8,127 +9,97 @@ Library    JSONSchemaLibrary    schemas/
 Library    DependencyLibrary
 
 
-*** Variables ***
-${original_etag}    1234
 
 *** Test Cases ***
 POST Alarm - Method not implemented
-    log    Trying to perform a POST. This method should not be implemented
-    Set Headers  {"Accept":"${ACCEPT}"}  
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}
-    Log    Validate Status code
-    Output    response
-    Integer    response status    405
+     [Documentation]    Test ID: 7.3.5.2.1
+    ...    Test title: POST Alarm - Method not implemented
+    ...    Test objective: The objective is to test that Post method is not allowed to create Fault management individual alarm on VNF 
+    ...    Pre-conditions: none
+    ...    Reference: section 7.4.3.3.1 - SOL003 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none  
+    Send POST request for fault management Individual Alarm
+    Check HTTP Response Status Code Is    405   
 
-Get information about an alarm
-    [Documentation]    Test ID: 7.4.3.1
-    ...    Test title: Get information about an alarm
-    ...    Test objective: The objective is to read an individual alarm.
+Get information about an fault management individual alarm
+    [Documentation]    Test ID: 7.3.5.2.2
+    ...    Test title: Get information about an fault management individual alarm
+    ...    Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure
     ...    Pre-conditions: The related alarm exists
     ...    Reference: section 7.4.3 - SOL003 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}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    Log    Execute Query and validate response
-    Get    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}
-    ${etag}    Output    response headers ETag
-    Set Suite Variable    &{original_etag}    ${etag}
-    Log    Validate Status code
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE}
-    ${result}=    Output    response body
-    Validate Json    alarm.schema.json    ${result}
-    Log    Validation OK
+    ...    Applicability: none
+    ...    Post-Conditions:  none 
+    GET Fault Management Individual Alarm
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    alarm
 
 PUT Alarm - Method not implemented
-    log    Trying to perform a PUT. This method should not be implemented
-    Set Headers  {"Accept":"${ACCEPT}"}  
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    Put    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}
-    Log    Validate Status code
-    Integer    response status    405
+    [Documentation]    Test ID: 7.3.5.2.3
+    ...    Test title: PUT Alarm - Method not implemented
+    ...    Test objective: he objective is to test that PUT method is not allowed to for Fault management individual alarm on VNF 
+    ...    Pre-conditions: The related alarm exists
+    ...    Reference: section 7.4.3.3.3 - SOL003 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions:  none 
+    PUT Fault Management Individual Alarm
+    Check HTTP Response Status Code Is    405
 
-PATCH Alarm
-    [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
+PATCH Fault Management Individual Alarm
+    [Documentation]    Test ID: 7.4.5.2.4
+    ...    Test title: PATCH Fault Management Individual Alarm
+    ...    Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure
     ...    Pre-conditions: The related alarm exists
-    ...    Reference: section 7.4.3 - SOL003 v2.4.1
+    ...    Reference: section 7.4.3.3.4 - SOL003 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}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    ${body}=    Get File    jsons/alarmModifications.json
-    Patch    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}    ${body}
-    Log    Validate Status code
-    ${Etag_modified}=    Output    response headers ETag
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE}
-    ${result}=    Output    response body
-    Validate Json    AlarmModification.schema.json    ${result}
-    Log    Validation OK
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Check Postcondition VNF fault management individual alarm Exists
+    PATCH Fault Management Individual Alarm
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  alarmModification
 
-PATCH Alarm - Precondition failed
-    [Documentation]    Test ID: 7.4.3.2-1
+Modify an individual alarm resource - Precondition failed
+    [Documentation]    Test ID: 7.4.5.2.5
     ...    Test title: Modify an individual alarm resource - Precondition failed
-    ...    Test objective: The objective is to Modify an individual alarm resource
+    ...    Test objective: The objective is to test that we cannot Modify an individual alarm resource if the alarm is already in the state that is requested to be set
     ...    Pre-conditions: The related alarm exists
-    ...    Reference: section 7.4.3 - SOL003 v2.4.1
+    ...    Reference: section 7.4.3.3.4 - SOL003 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}"} 
-    Set Headers  {"Content-Type": "${CONTENT_TYPE_PATCH}"} 
-    Set Headers    {"If-Match": "${original_etag[0]}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    ${body}=    Get File    jsons/alarmModifications.json
-    Patch    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}    ${body}
-    Log    Validate Status code
-    Integer    response status    412
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Check Postcondition VNF fault management individual alarm Exists  
+    PATCH Fault Management Individual Alarm - precondition failed
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is  ProblemDetails
 
-
-PATCH Alarm - Conflict
-    [Documentation]    Test ID: 7.4.3.2-1
+Modify an individual alarm resource - Conflict
+    [Documentation]    Test ID: 7.4.5.2.6
     ...    Test title: Modify an individual alarm resource - Conflict
-    ...    Test objective: The objective is to Modify an individual alarm resource
+    ...    Test objective: The objective is to test that we cannot Modify an individual alarm resource if the resource was modified by another entity
     ...    Pre-conditions: The related alarm exists
-    ...    Reference: section 7.4.3 - SOL003 v2.4.1
+    ...    Reference: section 7.4.3.3.4 - SOL003 v2.4.1
     ...    Config ID: Config_prod_VNFM
-    ...    Applicability: 
-    ...    Post-Conditions: The alarm resource is not modified
-    log    Trying to perform a PATCH. This method modifies an individual alarm resource
-    Set Headers  {"Accept":"${ACCEPT}"} 
-    Set Headers  {"Content-Type": "${CONTENT_TYPE_PATCH}"} 
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    ${body}=    Get File    jsons/alarmModifications.json
-    Patch    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}    ${body}
-    Log    Validate Status code
-    Integer    response status    409
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
-
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Depends On Test    PATCH Fault Management Individual Alarm
+    Check Postcondition VNF fault management individual alarm Exists
+    PATCH Fault Management Individual Alarm Conflict
+    Check HTTP Response Status Code Is    412
+    Check HTTP Response Body Json Schema Is     ProblemDetails
 
 DELETE Alarm - Method not implemented
-    log    Trying to perform a DELETE. This method should not be implemented
-    Set Headers  {"Accept":"${ACCEPT}"}  
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}
-    Log    Validate Status code
-    Integer    response status    405   
+     [Documentation]    Test ID: 7.3.5.2.7
+    ...    Test title: DELETE Alarm - Method not implemented
+    ...    Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on VNF 
+    ...    Pre-conditions: nona
+    ...    Reference: section 7.4.3.3.5 - SOL003 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions:  The individual alarm still exists 
+    DELETE Fault Management Individual Alarm
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF fault management individual alarm Exists
\ No newline at end of file
-- 
GitLab