Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
NFV - Network Functions Virtualisation
api-tests
Commits
df8684ca
Commit
df8684ca
authored
Apr 19, 2019
by
Elian Kraja
Browse files
Subscriptions on VNF Performance Management with notification handler
parent
78f31d48
Changes
6
Hide whitespace changes
Inline
Side-by-side
SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot
0 → 100644
View file @
df8684ca
*** Setting ***
Resource
environment/variables.txt
Library
MockServerLibrary
Library
Process
Library
OperatingSystem
Library
BuiltIn
Library
Collections
Library
String
*** Keywords ***
Check Notification Endpoint
&{req}
=
Create Mock Request Matcher
GET
${callback_endpoint}
&{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
${callback_endpoint}
Post Performance Information Available Notification
${json}
=
Get File
schemas/PerformanceInformationAvailableNotification.schema.json
${BODY}
=
evaluate
json.loads('''
${json}
''')
json
Log
Creating mock request and response to handle Performance Information Available Notification
&{req}
=
Create Mock Request Matcher
POST
${callback_endpoint}
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}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
Post Performance Information Available Notification Negative 404
${json}
=
Get File
schemas/ProblemDetails.schema.json
${BODY}
=
evaluate
json.loads('''
${json}
''')
json
Log
Creating mock request and response to handle Performance Information Available Notification to handle 404 error
&{req}
=
Create Mock Request Matcher
POST
${callback_endpoint_error}
body_type="JSON_SCHEMA"
body=
${BODY}
&{rsp}
=
Create Mock Response
headers="Content-Type: application/json"
status_code=404
Create Mock Expectation
${req}
${rsp}
Sleep
${sleep_interval}
Log
Verifying results
Verify Mock Expectation
${req}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
Post Threshold Crossed Notification
${json}
=
Get File
schema/ThresholdCrossedNotification.schema.json
${BODY}
=
evaluate
json.loads('''
${json}
''')
json
Log
Creating mock request and response to handle Threshold Crossed Notification
&{req}
=
Create Mock Request Matcher
POST
${callback_endpoint}
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}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
Post Threshold Crossed Notification Negative 404
${json}
=
Get File
schemas/ProblemDetails.schema.json
${BODY}
=
evaluate
json.loads('''
${json}
''')
json
Log
Creating mock request and response to handleThreshold Crossed Notification to handle 404 error
&{req}
=
Create Mock Request Matcher
POST
${callback_endpoint_error}
body_type="JSON_SCHEMA"
body=
${BODY}
&{rsp}
=
Create Mock Response
headers="Content-Type: application/json"
status_code=404
Create Mock Expectation
${req}
${rsp}
Sleep
${sleep_interval}
Log
Verifying results
Verify Mock Expectation
${req}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
PUT Performance Notification
Log
PUT Method not implemented
&{req}
=
Create Mock Request Matcher
PUT
${callback_endpoint}
&{rsp}
=
Create Mock Response
status_code=405
Create Mock Expectation
${req}
${rsp}
Sleep
${sleep_interval}
Log
Verifying results
Verify Mock Expectation
${req}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
PATCH Performance Notification
Log
PATCH Method not implemented
&{req}
=
Create Mock Request Matcher
PATCH
${callback_endpoint}
&{rsp}
=
Create Mock Response
status_code=405
Create Mock Expectation
${req}
${rsp}
Sleep
${sleep_interval}
Log
Verifying results
Verify Mock Expectation
${req}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
DELETE Performance Notification
Log
PATCH Method not implemented
&{req}
=
Create Mock Request Matcher
DELETE
${callback_endpoint}
&{rsp}
=
Create Mock Response
status_code=405
Create Mock Expectation
${req}
${rsp}
Sleep
${sleep_interval}
Log
Verifying results
Verify Mock Expectation
${req}
Log
Cleaning the endpoint
Clear Requests
${callback_endpoint}
Create Sessions
Pass Execution If
${VNFM_CHECKS_NOTIF_ENDPOINT}
=
= 0
VNFM is not checking notification endpoint.
Start Process
java
-jar
${MOCK_SERVER_JAR}
-serverPort
${callback_port}
alias=mockInstance
Wait For Process
handle=mockInstance
timeout=5s
on_timeout=continue
Create Mock Session
${callback_uri}
\ No newline at end of file
SOL003/VNFPerformanceManagement-API/Subscriptions.robot
View file @
df8684ca
...
...
@@ -6,174 +6,72 @@ Resource environment/variables.txt # Generic Parameters
Library
REST
${VNFM_SCHEMA}
://
${VNFM_HOST}
:
${VNFM_PORT}
Library
OperatingSystem
Library
JSONLibrary
Resource
VNFPerformanceManagementKeywords.robot
Resource
environment/subscriptions.txt
Library
MockServerLibrary
Library
Process
Suite Setup
Create Sessions
Suite Teardown
Terminate All Processes
kill=true
*** Test Cases ***
GET Subscription
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
Integer
response status
200
Log
Received a 200 OK as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Validate Json
PmSubscriptions.schema.json
${result}
Log
Validated PmSubscription schema
Get VNF Performance Management Subscriptions
Check HTTP Response Status Code Is
200
Check HTTP Response Body Json Schema Is
PmSubscriptions
GET Subscription - Filter
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions?
${filter_ok}
Integer
response status
200
Log
Received a 200 OK as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Validate Json
PmSubscriptions.schema.json
${result}
Log
Validated PmSubscription schema
GET Subscription - Negative Filter (Erroneous filter)
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions?
${filter_ko}
Integer
response status
400
Log
Received a 400 Bad Request as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Validate Json
ProblemDetails.schema.json
${result}
Log
Validated ProblemDetails schema
GET VNF Performance Management Subscription with attribute-based filter
Get VNF Performance Management Subscriptions with filters
Check HTTP Response Status Code Is
200
Check HTTP Response Body Json Schema Is
PmSubscriptions
Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
GET Subscription - Negative (Not Found)
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscription
Integer
response status
404
Log
Received a 404 Not found as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Validate Json
ProblemDetails.schema.json
${result}
Log
Validated ProblemDetails schema
POST Subscription
[
Documentation
]
The POST method creates a new subscription.
...
This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters,
...
request and response data structures, and response codes.
...
Creation of two subscription resources with the same callbackURI and the same filter can result in performance
...
degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases.
...
Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the
...
same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide
...
to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing
...
the existing subscription resource with the same filter and callbackUri).
Set headers
{"Content-Type": "
${CONTENT_TYPE_JSON}
"}
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
${body_request}
=
Get File
jsons/subscriptions.json
POST
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${body_request}
Integer
response status
201
Log
Received a 201 Created as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Validate Json
PmSubscription.schema.json
${result}
Log
Validated PmSubscription schema
Log
Trying to validate the Location header
${headers}
=
Output
response headers
Should Contain
${headers}
Location
GET VNF Performance Management Subscription with invalid attribute-based filter
Get VNF Performance Management Subscriptions with invalid filters
Check HTTP Response Status Code Is
400
Check HTTP Response Body Json Schema Is
ProblemDetails
POST Subscription - DUPLICATION
[
Documentation
]
The POST method creates a new subscription.
...
This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters,
...
request and response data structures, and response codes.
...
Creation of two subscription resources with the same callbackURI and the same filter can result in performance
...
degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases.
...
Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the
...
same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide
...
to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing
...
the existing subscription resource with the same filter and callbackUri).
Pass Execution If
${VNFM_DUPLICATION}
=
= 1
VNFM is permitting duplication. Skipping the test
Set headers
{"Content-Type": "
${CONTENT_TYPE_JSON}
"}
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
${body_request}
=
Get File
jsons/subscriptions.json
POST
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${body_request}
Integer
response status
303
Log
Received a 303 See other as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Should Be Empty
${result}
Log
Body is empty
Log
Trying to validate the Location header
${headers}
=
Output
response headers
Should Contain
${headers}
Location
POST Subscription - NO DUPLICATION
[
Documentation
]
The POST method creates a new subscription.
...
This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters,
...
request and response data structures, and response codes.
...
Creation of two subscription resources with the same callbackURI and the same filter can result in performance
...
degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases.
...
Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the
...
same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide
...
to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing
...
the existing subscription resource with the same filter and callbackUri).
Pass Execution If
${VNFM_DUPLICATION}
=
= 0
VNFM is not permitting duplication. Skipping the test
Set headers
{"Content-Type": "
${CONTENT_TYPE_JSON}
"}
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
${body_request}
=
Get File
jsons/subscriptions.json
POST
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${body_request}
Integer
response status
201
Log
Received a 201 Created as expected
${contentType}
=
Output
response headers Content-Type
Should Contain
${contentType}
application/json
${result}
=
Output
response body
Validate Json
PmSubscription.schema.json
${result}
Log
Validated PmSubscription schema
Log
Trying to validate the Location header
${headers}
=
Output
response headers
Should Contain
${headers}
Location
GET VNF Performance Management Subscription with invalid resource endpoint
Get VNF Performance Management Subscriptions with invalid resource endpoint
Check HTTP Response Status Code Is
404
Create new VNF Performance Management subscription
Send Post Request for VNF Performance Management Subscription
Check HTTP Response Status Code Is
201
Check HTTP Response Body Json Schema Is
PmSubscription
Check HTTP Response Body Matches the Subscription
Check Postcondition VNF Performance Management Subscription Is Set
PUT Subscription - (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.
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
PUT
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
Integer
response status
405
Log
Received 405 Method not implemented as expected
PATCH Subscription - (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.
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
PATCH
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
Integer
response status
405
Log
Received 405 Method not implemented as expected
Create duplicated VNF Performance Management subscription with duplication handler
Send Post Request for Duplicated VNF Performance Management Subscription
Check HTTP Response Status Code Is
303
Check HTTP Response Body Json Schema Is Empty
Check HTTP Response Header Contains
Location
DELETE Subscription - (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.
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
DELETE
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
Integer
response status
405
Log
Received 405 Method not implemented as expected
Create duplicated VNF Performance Management subscription without duplication handler
Send Post Request for Duplicated VNF Performance Management Subscription
Check HTTP Response Status Code Is
201
Check HTTP Response Body Json Schema Is
PmSubscription
Check HTTP Response Body Matches the Subscription
Check Postcondition VNF Performance Management Subscription Is Set
PUT VNF Performance Management Subscriptions - Method not implemented
Send Put Request for VNF Performance Management Subscriptions
Check HTTP Response Status Code Is
405
PATCH VNF Performance Management Subscriptions - Method not implemented
Send Patch Request for VNF Performance Management Subscriptions
Check HTTP Response Status Code Is
405
DELETE VNF Performance Management Subscriptions - Method not implemented
Send Delete Request for VNF Performance Management Subscriptions
Check HTTP Response Status Code Is
405
SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
0 → 100644
View file @
df8684ca
*** Settings ***
Resource
environment/variables.txt
Resource
environment/subscriptions.txt
Resource
PerformanceManagementNotification.robot
Library
REST
${VNFM_SCHEMA}
://
${VNFM_HOST}
:
${VNFM_PORT}
ssl_verify=false
Library
OperatingSystem
Library
BuiltIn
Library
JSONLibrary
Library
Collections
Library
JSONSchemaLibrary
schemas/
*** Keywords ***
Get VNF Performance Management Subscriptions
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "application/json"}
Set headers
{"Content-Type": "application/json"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 200
# Log Received a 200 OK as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} application/json
# ${result}= Output response body
# Validate Json PmSubscriptions.schema.json ${result}
# Log Validated PmSubscription schema
Get VNF Performance Management Subscriptions with filters
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions?
${filter_ok}
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 200
# Log Received a 200 OK as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} application/json
# ${result}= Output response body
# Validate Json PmSubscriptions.schema.json ${result}
# Log Validated PmSubscription schema
Get VNF Performance Management Subscriptions with invalid filters
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions?
${filter_ko}
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 400
# Log Received a 400 Bad Request as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} application/json
# ${result}= Output response body
# Validate Json ProblemDetails.schema.json ${result}
# Log Validated ProblemDetails schema
Get VNF Performance Management Subscriptions with invalid resource endpoint
[
Documentation
]
The client can use this method to query the list of active subscriptions to Performance management notifications
...
subscribed by the client.
...
This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters,
...
request and response data structures, and response codes.
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscription
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 404
# Log Received a 404 Not found as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} application/json
# ${result}= Output response body
# Validate Json ProblemDetails.schema.json ${result}
# Log Validated ProblemDetails schema
Send Post Request for VNF Performance Management Subscription
[
Documentation
]
The POST method creates a new subscription.
...
This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters,
...
request and response data structures, and response codes.
...
Creation of two subscription resources with the same callbackURI and the same filter can result in performance
...
degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases.
...
Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the
...
same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide
...
to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing
...
the existing subscription resource with the same filter and callbackUri).
Set headers
{"Content-Type": "
${CONTENT_TYPE_JSON}
"}
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
${body_request}
=
Get File
jsons/subscriptions.json
POST
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${body_request}
${output}
=
Output
response
Set Suite Variable
${response}
${output}
Run Keyword If
${VNFM_CHECKS_NOTIF_ENDPOINT}
=
= 1
...
Check Notification Endpoint
# Integer response status 201
# Log Received a 201 Created as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} application/json
# ${result}= Output response body
# Validate Json PmSubscription.schema.json ${result}
# Log Validated PmSubscription schema
# Log Trying to validate the Location header
# ${headers}= Output response headers
# Should Contain ${headers} Location
Send Post Request for Duplicated VNF Performance Management Subscription
[
Documentation
]
The POST method creates a new subscription.
...
This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters,
...
request and response data structures, and response codes.
...
Creation of two subscription resources with the same callbackURI and the same filter can result in performance
...
degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases.
...
Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the
...
same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide
...
to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing
...
the existing subscription resource with the same filter and callbackUri).
Set headers
{"Content-Type": "
${CONTENT_TYPE_JSON}
"}
Set headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
${body_request}
=
Get File
jsons/subscriptions.json
POST
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${body_request}
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 303
# Log Received a 303 See other as expected
# ${contentType}= Output response headers Content-Type
# Should Contain ${contentType} application/json
# ${result}= Output response body
# Should Be Empty ${result}
# Log Body is empty
# Log Trying to validate the Location header
# ${headers}= Output response headers
# Should Contain ${headers} Location
Send Put Request for VNF Performance Management Subscriptions
[
Documentation
]
This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
...
Not Allowed" response as defined in clause 4.3.5.4.
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
PUT
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 405
# Log Received 405 Method not implemented as expected
Send Patch Request for VNF Performance Management Subscriptions
[
Documentation
]
This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
...
Not Allowed" response as defined in clause 4.3.5.4.
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
PATCH
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 405
# Log Received 405 Method not implemented as expected
Send Delete Request for VNF Performance Management Subscriptions
[
Documentation
]
This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method
...
Not Allowed" response as defined in clause 4.3.5.4.
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization":
${AUTHORIZATION}
"}
DELETE
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions
${output}
=
Output
response
Set Suite Variable
${response}
${output}
# Integer response status 405
# Log Received 405 Method not implemented as expected
Check HTTP Response Status Code Is
[
Arguments
]
${expected_status}
Should Be Equal
${response['status']}
${expected_status}
Log
Status code validated
Check HTTP Response Body Json Schema Is
[
Arguments
]
${input}
Should Contain
${response['headers']['Content-Type']}
application/json
${schema}
=
Catenate
${input}
.schema.json
Validate Json
${schema}
${response['body']}
Log
Json Schema Validation OK
Check HTTP Response Body Json Schema Is Empty
Should Be Empty
${response['body']}
Log
No json schema is provided. Validation OK
Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
Log
Check Response includes VNF Performance Management according to filter
Should Be Equal As Strings
${response['body']['callbackUri']}
${callbackUri}
Check HTTP Response Body Matches the Subscription
Log
Check Response matches subscription
${body}
=
Get File
jsons/subscriptions.json
${subscription}
=
evaluate
json.loads('''
${body}
''')
json
Should Be Equal
${response['body']['callbackUri']}
${subscription['callbackUri']}
Check Postcondition VNF Performance Management Subscription Is Set
Log
Check Postcondition subscription exist
Log
Trying to get the subscription
Set Headers
{"Accept": "
${ACCEPT_JSON}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"Authorization": "
${AUTHORIZATION}
"}
GET
${apiRoot}
/
${apiName}
/
${apiVersion}
/subscriptions/
${response['body']['id']}
${output}
=
Output
response