From 6362252fa4569331f29ae42dee7171931c32488d Mon Sep 17 00:00:00 2001
From: Giacomo Bernini <g.bernini@nextworks.it>
Date: Fri, 5 Apr 2019 19:48:16 +0200
Subject: [PATCH] Added test descriptions for SOL002 VNF PM individual reports
 and Thresholds

---
 .../IndividualReport.robot                    | 202 ++++++++++----
 .../Thresholds.robot                          | 258 +++++++++++++-----
 .../environment/reports.txt                   |   3 +
 .../environment/thresholds.txt                |   1 +
 4 files changed, 342 insertions(+), 122 deletions(-)

diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot
index 9de659ad..d042375b 100644
--- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot
+++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot
@@ -1,10 +1,4 @@
 *** Settings ***
-Documentation     This resource represents an individual performance report that was collected by a PM job. The client can use this
-...               resource to read the performance report. The URI of this report can be obtained from a
-...               PerformanceInformationAvailableNotification (see clause 6.5.2.5) or from the representation of the "Individual PM job"
-...               resource.
-...               It is determined by means outside the scope of the present document, such as configuration or policy, how long an
-...               individual performance report is available.
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/reports.txt
@@ -12,62 +6,170 @@ Library           JSONLibrary
 Library           REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}
 
 *** Test Cases ***
-GET Report on Single PM Job
-    [Documentation]    The client can use this method for reading an individual performance report.
-    ...    This method shall follow the provisions specified in the tables 6.4.4.3.2-1 and 6.4.4.3.2-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+Get Individual Performance Report
+    [Documentation]    Test ID: 6.3.3.3.1
+    ...    Test title: Get Individual Performance Report
+    ...    Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM.
+    ...    Reference: section 6.4.4.3.2 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Get Individual Performance Report
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   PerformanceReport
+
+Get Individual Performance Report with invalid resource endpoint
+        [Documentation]    Test ID: 6.3.3.3.2
+    ...    Test title: Get Individual Performance Report
+    ...    Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM.
+    ...    Reference: section 6.4.4.3.2 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Get Individual Performance Report with invalid resource endpoint
+    Check HTTP Response Status Code Is    404
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+
+POST Individual Performance Report - Method not implemented
+    [Documentation]    Test ID: 6.3.3.3.3
+    ...    Test title: POST Individual Performance Report - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job
+    ...    Pre-conditions: A VNF instance is instantiated.
+    ...    Reference: section 6.4.4.3.1 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF performance report is not created on the VNFM
+    Send Post request for Individual Performance Report
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Individual Performance Report is not Created
+
+PUT Individual Performance Report - Method not implemented
+    [Documentation]    Test ID: 6.3.3.3.4
+    ...    Test title: PUT Individual Performance Report - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job
+    ...    Pre-conditions: A VNF instance is instantiated.
+    ...    Reference: section 6.4.4.3.3 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF performance report is not modified by the operation
+    Send Put request for Individual Performance Report
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Individual Performance Report is Unmodified (Implicit)
+
+PATCH Individual Performance Report - Method not implemented
+    [Documentation]    Test ID: 6.3.3.3.5
+    ...    Test title: PATCH Individual Performance Report - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job
+    ...    Pre-conditions: A VNF instance is instantiated.
+    ...    Reference: section 6.4.4.3.4 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF performance report is not modified by the operation
+    Send Patch request for Individual Performance Report
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Individual Performance Report is Unmodified (Implicit)
+
+DELETE Individual Performance Report - Method not implemented
+    [Documentation]    Test ID: 6.3.3.3.6
+    ...    Test title: DELETE Individual Performance Report - Method not implemented
+    ...    Test objective: The objective is to test that DELET method is not allowed to delete an existing VNF performance report within a monitoring job
+    ...    Pre-conditions: A VNF instance is instantiated.
+    ...    Reference: section 6.4.4.3.5 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF performance report is not deleted by the operation
+    Send Delete request for Individual Performance Report
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Individual Performance Report Exists
+
+*** Keywords ***
+Get Individual Performance Report
+    Log    Trying to get a performance report present in the VNFM
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId}
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate result with PerformanceReport schema
-    ${result}=    Output    response body
-    Validate Json    PerformanceReport.schema.json    ${result}
-
-GET Report on Single PM Job - Negative (Not Found)
-    [Documentation]    The client can use this method for reading an individual performance report.
-    ...    This method shall follow the provisions specified in the tables 6.4.4.3.2-1 and 6.4.4.3.2-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Get Individual Performance Report with invalid resource endpoint
+    Log    Trying to get a performance report with invalid resource endpoint
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId}
-    Integer    response status    404
-    Log    Received 404 Not Found as expected
-    Log    Trying to validate ProblemDetails
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
-
-POST Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Send Post request for Individual Performance Report
+    Log    Trying to create new performance report
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+    POST    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
 
-PUT Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+Send Put request for Individual Performance Report
+    Log    Trying to update performance report
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
+    ${origOutput}=    Output    response
+    Set Suite Variable    @{origResponse}    ${origOutput}
     PUT    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
-PATCH Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    
+Send Patch request for Individual Performance Report
+    Log    Trying to update performance report
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
+    ${origOutput}=    Output    response
+    Set Suite Variable    @{origResponse}    ${origOutput}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
 
-DELETE Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+Send Delete request for Individual Performance Report
+    Log    Trying to delete performance report   
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     DELETE    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Check Postcondition VNF Individual Performance Report Exists
+    Log    Checking that report still exists
+    Get Individual Performance Report
+
+Check Postcondition VNF Individual Performance Report is not Created
+    Log    Trying to get a new report
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    Check HTTP Response Status Code Is    404
+
+Check Postcondition VNF Individual Performance Report is Unmodified (Implicit)
+    Log    Check Postcondition VNF PM job is not modified
+    Get Individual Performance Report
+    Log    Check Response matches original VNF report
+    ${report}=    evaluate    json.loads('''${response[0]['body']}''')    json
+    Should Be Equal    ${origResponse[0]['body']['entries'][0]['objectInstanceId']}    ${report['entries'][0]['objectInstanceId']}
+
+Check HTTP Response Status Code Is
+    [Arguments]    ${expected_status}
+    ${status}=    Convert To Integer    ${expected_status}    
+    Should Be Equal    ${response[0]['status']}    ${status} 
+    Log    Status code validated
+
+Check HTTP Response Header Contains
+    [Arguments]    ${CONTENT_TYPE}
+    Should Contain    ${response[0]['headers']}    ${CONTENT_TYPE}
+    Log    Header is present
+    
+Check HTTP Response Body Json Schema Is
+    [Arguments]    ${input}
+    Should Contain    ${response[0]['headers']['Content-Type']}    application/json
+    ${schema} =    Catenate    ${input}    .schema.json
+    Validate Json    ${schema}    ${response[0]['body']}
+    Log    Json Schema Validation OK
+
diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot
index 8ace19a8..299ccd45 100644
--- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot
+++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot
@@ -1,5 +1,4 @@
 *** Settings ***
-Documentation     This resource represents thresholds. The client can use this resource to create and query thresholds.
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Library           JSONLibrary
@@ -8,98 +7,213 @@ Resource          environment/thresholds.txt
 Library           OperatingSystem
 
 *** Test Cases ***
-GET Thresholds
-    [Documentation]    The client can use this method to query information about thresholds.
-    ...    This method shall follow the provisions specified in the tables 6.4.5.3.2-1 and 6.4.5.3.2-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+GET All Performance Thresholds
+    [Documentation]    Test ID: 6.3.3.4.1
+    ...    Test title: GET all VNF Performance Thresholds
+    ...    Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM.
+    ...    Reference: section 6.4.5.3.2 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET all Performance Thresholds
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   Thresholds
+
+GET Performance Thresholds with attribute-based filter
+    [Documentation]    Test ID: 6.3.3.4.2
+    ...    Test title: GET VNF Performance Thresholds with attribute-based filter
+    ...    Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM.
+    ...    Reference: section 6.4.5.3.2 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET Performance Thresholds with attribute-based filter
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   Thresholds
+    Check HTTP Response Body Matches filter
+
+GET Performance Thresholds with invalid attribute-based filter
+    [Documentation]    Test ID: 6.3.3.4.3
+    ...    Test title: GET VNF Performance Thresholds with invalid attribute-based filter
+    ...    Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM.
+    ...    Reference: section 6.4.5.3.2 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET Performance Thresholds with invalid attribute-based filter
+    Check HTTP Response Status Code Is    400
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+
+GET Performance Thresholds with invalid resource endpoint
+    [Documentation]    Test ID: 6.3.3.4.4
+    ...    Test title: GET VNF Performance Thresholds with invalid resource endpoint
+    ...    Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM.
+    ...    Reference: section 6.4.5.3.2 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET VNF Performance Thresholds with invalid resource endpoint
+    Check HTTP Response Status Code Is    400
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+
+Create new Performance Threshold
+    [Documentation]    Test ID: 6.3.3.4.5
+    ...    Test title:  Create a new VNF Performance Threshold
+    ...    Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure
+    ...    Pre-conditions: A VNF instance is instantiated.
+    ...    Reference: section 6.4.5.3.1 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM
+    Send Post Request Create new Performance Threshold
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is   Threshold
+    Check HTTP Response Header Contains    Location
+    Check Postcondition Threshold Exists
+
+PUT Performance Thresholds - Method not implemented
+    [Documentation]    Test ID: 6.3.3.4.5
+    ...    Test title: PUT all VNF Performance Thresholds - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF.
+    ...    Reference: section 6.4.5.3.3 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PUT Request for all Performance Thresholds
+    Check HTTP Response Status Code Is    405
+
+PATCH Performance Thresholds - Method not implemented
+    [Documentation]    Test ID: 6.3.3.4.6
+    ...    Test title: PATCH all VNF Performance Thresholds - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM.
+    ...    Reference: section 6.4.5.3.4 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH Request for all Performance Thresholds
+    Check HTTP Response Status Code Is    405
+
+DELETE Performance Thresholds - Method not implemented
+    [Documentation]    Test ID: 6.3.3.4.7
+    ...    Test title: DELETE all VNF Performance Monitoring Thresholds - Method not implemented
+    ...    Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds
+    ...    Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM.
+    ...    Reference: section 6.4.5.3.5 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send DELETE Request for all Performance Thresholds
+    Check HTTP Response Status Code Is    405
+    Check Postcondition Thresholds Exist
+
+*** Keywords ***
+GET all Performance Thresholds
+    Log    Trying to get all thresholds present in the VNFM    
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/thresholds
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    application/json
-    ${result}=    Output    response body
-    Log    Trying to validate result with thresholds schema
-    Validate Json    Thresholds.schema.json    ${result}
-
-GET Thresholds - Filter
-    [Documentation]    The client can use this method to query information about thresholds.
-    ...    This method shall follow the provisions specified in the tables 6.4.5.3.2-1 and 6.4.5.3.2-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+GET Performance Thresholds with attribute-based filter
+    Log    Trying to get thresholds present in the VNFM with filter
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_OK}
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    application/json
-    ${result}=    Output    response body
-    Log    Trying to validate result with Threshold schema
-    Validate Json    Thresholds.schema.json    ${result}
-
-GET Thresholds - NEGATIVE Filter
-    [Documentation]    The client can use this method to query information about thresholds.
-    ...    This method shall follow the provisions specified in the tables 6.4.5.3.2-1 and 6.4.5.3.2-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+GET Performance Thresholds with invalid attribute-based filter
+    Log    Trying to get thresholds present in the VNFM with invalid filter
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_KO}
-    Integer    response status    400
-    ${result}=    Output    response body
-    Log    Trying to validate result with ProblemDetails schema
-    Validate Json    ProblemDetails.schema.json    ${result}
-
-GET Thresholds - Negative (Not Found)
-    [Documentation]    The client can use this method to query information about thresholds.
-    ...    This method shall follow the provisions specified in the tables 6.4.5.3.2-1 and 6.4.5.3.2-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    
+GET VNF Performance Thresholds with invalid resource endpoint
+    Log    Trying to get thresholds present in the VNFM with invalid resource endpoint
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/threshold
-    Integer    response status    404
-    Log    Received 404 Not Found as expected
-    ${problemDetails}=    Output    response body
-    Log    Trying to validate ProblemDetails
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
-
-POST Threshold Request
-    [Documentation]    The POST method can be used by the client to create a threshold.
-    ...    This method shall follow the provisions specified in the tables 6.4.5.3.1-1 and 6.4.5.3.1-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Send Post Request Create new Performance Threshold
+    Log    Creating a new THreshold
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
     ${request}=    Get File    jsons/CreateThresholdRequest.json
     POST    ${apiRoot}/${apiName}/${apiVersion}/thresholds    ${request}
-    Integer    response status    201
-    Log    Received 201 Created as expected
-    ${result}=    Output    response body
-    Log    Trying to validate result with thresholds schema
-    Validate Json    Threshold.schema.json    ${result}
-    Log    Trying to validate the Location header
-    ${headers}=    Output    response headers
-    Should Contain    ${headers}    Location
-
-PUT Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Send PUT Request for all Performance Thresholds
+    Log    PUT THresholds
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
     PUT    ${apiRoot}/${apiName}/${apiVersion}/thresholds
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
-PATCH Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    
+Send PATCH Request for all Performance Thresholds
+    Log    PUT THresholds
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/thresholds
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
 
-DELETE Reports - (Method not implemented)
-    [Documentation]    This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
-    ...    Not Allowed" response as defined in clause 4.3.5.4.
+Send DELETE Request for all Performance Thresholds
+    Log    DELETE THresholds
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
     DELETE    ${apiRoot}/${apiName}/${apiVersion}/thresholds
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Check Postcondition Thresholds Exist
+    Log    Checking that Thresholds still exists
+    GET all Performance Thresholds
+    
+Check Postcondition Threshold Exists
+    Log    Checking that Threshold exists
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/thresholds/${response[0]['body']['id']}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    Threshold
+        
+Check HTTP Response Body Matches filter
+    Log    Checking that attribute-based filter is matched
+    #todo
+    
+Check HTTP Response Status Code Is
+    [Arguments]    ${expected_status}
+    ${status}=    Convert To Integer    ${expected_status}    
+    Should Be Equal    ${response[0]['status']}    ${status} 
+    Log    Status code validated
+
+Check HTTP Response Header Contains
+    [Arguments]    ${CONTENT_TYPE}
+    Should Contain    ${response[0]['headers']}    ${CONTENT_TYPE}
+    Log    Header is present
+    
+Check HTTP Response Body Json Schema Is
+    [Arguments]    ${input}
+    Should Contain    ${response[0]['headers']['Content-Type']}    application/json
+    ${schema} =    Catenate    ${input}    .schema.json
+    Validate Json    ${schema}    ${response[0]['body']}
+    Log    Json Schema Validation OK
+
+
diff --git a/SOL002/VNFPerformanceManagement-API/environment/reports.txt b/SOL002/VNFPerformanceManagement-API/environment/reports.txt
index 7edfcc5c..590559d4 100644
--- a/SOL002/VNFPerformanceManagement-API/environment/reports.txt
+++ b/SOL002/VNFPerformanceManagement-API/environment/reports.txt
@@ -2,3 +2,6 @@
 ${pmJobId}        1f50d68b-82e8-4deb-bd40-c934d4d1ac0a
 ${reportId}       0fb4c875-e07f-46ca-a9dd-13907667a568
 ${erroneousReportId}    erroneousReportId
+${newReportId}    newReportId
+@{response}=    httpresponse
+@{OrigResponse}=    httpresponse
diff --git a/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt b/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt
index 49461a09..4dbb5520 100644
--- a/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt
+++ b/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt
@@ -1,3 +1,4 @@
 *** Variables ***
 ${FILTER_OK}      objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a
 ${FILTER_KO}      criterias=erroneousFilter
+@{response}=    httpresponse
-- 
GitLab