Skip to content
Snippets Groups Projects
Subscriptions.robot 29.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • Resource    environment/variables.txt 
    
    Library    REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}     ssl_verify=false
    
    Library     OperatingSystem
    Library    JSONLibrary
    Library    JSONSchemaLibrary    schemas/
    
    Library    Process
    Library    MockServerLibrary
    Suite Setup       Create Sessions
    Suite Teardown    Terminate All Processes    kill=true
    
    
    *** Test Cases ***
    Create a new subscription
    
        [Documentation]    Test ID: 6.3.4.4.1
    
        ...    Test title: Create a new subscription
    
        ...    Test objective: The objective is to create a new subscription.
        ...    Pre-conditions: no subscription with the same filter and callbackUri exists
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability: none
    
    root's avatar
    root committed
        ...    Post-Conditions: Resource created successfully
    
        Post Create subscription
        Check HTTP Response Status Code Is    201
        Check HTTP Response Body Json Schema Is    FmSubscription
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Check HTTP Response Header Contain Link
        Check Postcondition resource exists
    
    Elian Kraja's avatar
    Elian Kraja committed
    # Create a new Subscription - DUPLICATION
         # [Documentation]    Test ID: 6.3.4.4.2
        # ...    Test title: Create a new Subscription - DUPLICATION
        # ...    Test objective: The objective is to create a duplicate subscription.
        # ...    Pre-conditions: subscription with the same filter and callbackUri exists
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        # ...    Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
    Elian Kraja's avatar
    Elian Kraja committed
        # ...    Config ID: Config_prod_VNFM
        # ...    Applicability: the VNFM does not allow creation of a subscription resource if another subscription resource with the same filter and callbackUri already exists
        # ...    Post-Conditions: duplicated subscription is created
        # Post Create subscription - DUPLICATION
        # Check HTTP Response Status Code Is    201
        # Check HTTP Response Body Json Schema Is    FmSubscription
        # Check HTTP Response Header Contain Link
        # Check Postcondition Duplicate Subscription exsist
    
    Elian Kraja's avatar
    Elian Kraja committed
    # Create a new Subscription - NO-DUPLICATION
        # [Documentation]    Test ID: 6.3.4.4.3
        # ...    Test title: Create a new Subscription - NO-DUPLICATION
        # ...    Test objective: The objective is to create a subscription in case of not allowed DUPLICATION.
        # ...    Pre-conditions: subscription with the same filter and callbackUri exists
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        # ...    Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
    Elian Kraja's avatar
    Elian Kraja committed
        # ...    Config ID: Config_prod_VNFM
        # ...    Applicability: the VNFM does not allow creation of a duplicate subscription resource 
        # ...    Post-Conditions: duplicated subscription is not created
        # Post Create subscription - DUPLICATION
        # Check HTTP Response Status Code Is    303
        # Check HTTP Response Header Contain Link
    
    Create a duplicated Subscription
         [Documentation]    Test ID: 6.3.4.4.2a
        ...    Test title: Create a duplicated Subscription
        ...    Test objective: The objective is to create a duplicate subscription.
    
        ...    Pre-conditions: subscription with the same filter and callbackUri exists
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
    Elian Kraja's avatar
    Elian Kraja committed
        ...    Applicability: 
        ...    Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created
        Post Create subscription
        Check Response for duplicated subscription
    
    
        [Documentation]    Test ID: 6.3.4.4.4
    
        ...    Test title: GET Subscriptions
    
        ...    Test objective: The objective is to retrieve the list of active subscriptions
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability:  none
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        ...    Post-Conditions: none
    
        Get subscriptions
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions 
    
        [Documentation]    Test ID: 6.3.4.4.5
    
        ...    Test title: GET Subscription - Filter
    
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions - filter
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions 
    
        
    GET subscriptions - Bad Request Invalid attribute-based filtering parameters
    
        [Documentation]    Test ID: 6.3.4.4.6
    
        ...    Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters
    
        ...    Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions - invalid filter
        Check HTTP Response Status Code Is    400
        Check HTTP Response Body Json Schema Is   ProblemDetails 
    
    
    GET subscriptions with "all_fields" attribute selector
    
        [Documentation]    Test ID: 6.3.4.4.7
    
        ...    Test title: GET subscriptions with "all_fields" attribute selector
        ...    Test objective: The objective is to retrieve the list of active subscriptions with attribute selector
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with all_fields attribute selector
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions 
    
    GET subscriptions with "exclude_default" attribute selector
    
        [Documentation]    Test ID: 6.3.4.4.8
    
        ...    Test title: GET subscriptions with "exclude_default" attribute selector
        ...    Test objective: The objective is to retrieve the list of active subscriptions with attribute selector
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with exclude_default attribute selector
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions
    
    GET subscriptions with "fields" attribute selector
    
        [Documentation]    Test ID: 6.3.4.4.9
    
        ...    Test title: GET subscriptions with "fields" attribute selector
        ...    Test objective: The objective is to retrieve the list of active subscriptions with attribute selector
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with fields attribute selector
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions
    
    GET subscriptions with "exclude_fields" attribute selector
    
        [Documentation]    Test ID: 6.3.4.4.10
    
        ...    Test title: GET subscriptions with "exclude_fields" attribute selector
        ...    Test objective: The objective is to retrieve the list of active subscriptions with attribute selector
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with exclude_fields attribute selector
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions    
    
    aureliano sinatra's avatar
    aureliano sinatra committed
            
    
    PUT subscriptions - Method not implemented
    
        [Documentation]    Test ID: 6.3.4.4.11
    
        ...    Test title: PUT subscriptions - Method not implemented
        ...    Test objective: The objective is to test that the method is not implemented
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        PUT subscriptions
        Check HTTP Response Status Code Is    405
    
    PATCH subscriptions - Method not implemented
    
        [Documentation]    Test ID: 6.3.4.4.12
    
        ...    Test title: PUT subscriptions - Method not implemented
        ...    Test objective: The objective is to test that the method is not implemented
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        PATCH subscriptions
        Check HTTP Response Status Code Is    405
    
    DELETE subscriptions - Method not implemented
    
        [Documentation]    Test ID: 6.3.4.4.13
    
        ...    Test title: DELETE subscriptions - Method not implemented
        ...    Test objective: The objective is to test that the method is not implemented
    
        ...    Pre-conditions: none 
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
    
        ...    Applicability:  none
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        ...    Post-Conditions: none
    
        DELETE subscriptions
        Check HTTP Response Status Code Is    405
    
        [Documentation]    Test ID: 6.3.4.4.14
    
        ...    Test title: GET Subscriptions to get Paged Response
        ...    Test objective: The objective is to retrieve the list of active subscriptions to get paged response
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        ...    Post-Conditions: none
    
        Get subscriptions
        Check HTTP Response Status Code Is    200
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Check HTTP Response Header Contain Link
    
        
    GET subscriptions - Bad Request Response too Big
    
        [Documentation]    Test ID: 6.3.4.4.15
    
        ...    Test title: GET subscriptions - Bad Request Response too Big
        ...    Test objective: The objective is to test that GET method fail retrieving list of active subscription because Response is too big, and perform the JSON schema validation of the failed operation HTTP response
    
        ...    Pre-conditions: none 
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions - invalid filter
        Check HTTP Response Status Code Is    400
        Check HTTP Response Body Json Schema Is   ProblemDetails
    
    GET Subscription with attribute-based filter "id"
    
        [Documentation]    Test ID: 6.3.4.4.16
    
        ...    Test title: GET Subscription with attribute-based filter "id"
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter "id"
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with filter "id"
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscription
        Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id"
        
    Get subscriptions with filter "filter.notificationTypes"
    
        [Documentation]    Test ID: 6.3.4.4.17
    
        ...    Test title: GET Subscription with attribute-based filter "filter.notificationTypes"
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes"
    
        ...    Pre-conditions: none 
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with filter "filter_notificationTypes"
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions 
        Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes"
        
    Get subscriptions with filter "filter.faultyResourceTypes"
    
        [Documentation]    Test ID: 6.3.4.4.18
    
        ...    Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes"
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes"
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with filter "filter_faultyResourceTypes"
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions
        Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_faultyResourceTypes"
        
    Get subscriptions with filter "filter.perceivedSeverities"
    
        [Documentation]    Test ID: 6.3.4.4.19
    
        ...    Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities"
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities"
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with filter "filter_perceivedSeverities"
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions
        Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_perceivedSeverities"
        
    Get subscriptions with filter "filter.eventTypes"
    
        [Documentation]    Test ID: 6.3.4.4.20
    
        ...    Test title: GET Subscription with attribute-based filter "filter.eventTypes"
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes"
    
        ...    Pre-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with filter "filter_eventTypes"
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions
        Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_eventTypes"
        
    Get subscriptions with filter "filter.probableCauses"
    
        [Documentation]    Test ID: 6.3.4.4.21
    
        ...    Test title: GET Subscription with attribute-based filter "filter.probableCauses"
        ...    Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses"
    
        ...    Pre-conditions: none 
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Applicability:  none
        ...    Post-Conditions: none
    
        Get subscriptions with filter "filter_probableCauses"
        Check HTTP Response Status Code Is    200
        Check HTTP Response Body Json Schema Is   FmSubscriptions
        Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses"
        
    
    POST Create a new Subscription - Unprocessable Entity
        [Documentation]    Test ID: 6.3.4.4.21
        ...    Test title: POST Create a new Subscription - Unprocessable Entity
        ...    Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed.
        ...    re-conditions: none
    
    Hammad Zafar's avatar
    Hammad Zafar committed
        ...    Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
    
        ...    Config ID: Config_prod_VNFM
        ...    Applicability: none
        ...    Post-Conditions: none
        Post Create subscription
        Check HTTP Response Status Code Is    422
        Check HTTP Response Body Json Schema Is  ProblemDetails
    
    
    *** Keywords ***
    
    Create Sessions
        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}:${callback_port}
    
    
    Post Create subscription
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Log    Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions
    
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
        ${template}=    Get File    jsons/fmSubscriptionRequest.json
    
        ${body}=        Format String   ${template}     callback_uri=${callback_uri}:${callback_port}    callback_endpoint=${callback_endpoint}
    
        Log  Creating mock request and response to handle GET operation on notification endpoint
        &{notification_request}=  Create Mock Request Matcher	GET  ${callback_endpoint}
        &{notification_response}=  Create Mock Response	status_code=204
        Log    Issue the subscription request
        Create Mock Expectation  ${notification_request}  ${notification_response}
        Post    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions    ${body}    
    	${output}=    Output    response
    	Set Global Variable    ${response}    ${output}
    	Clear Requests    ${callback_endpoint}
    		
    
    Elian Kraja's avatar
    Elian Kraja committed
    # Post Create subscription - DUPLICATION
        # Log    Trying to create a subscription with an already created content
        # Pass Execution If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0    NVFO is not permitting duplication. Skipping the test
        # Set Headers    {"Accept": "${ACCEPT}"}
        # Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
    
        # Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Elian Kraja's avatar
    Elian Kraja committed
        # ${template}=    Get File    jsons/fmSubscriptionRequest.json
        # ${body}=        Format String   ${template}     callback_uri=${callback_uri}    callback_endpoint=${callback_endpoint}
        # Post    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions    ${body}		
        # ${outputResponse}=    Output    response
    	# Set Global Variable    ${response}    ${outputResponse}			
    # Post Create subscription - NO-DUPLICATION	
        # Log    Trying to create a subscription with an already created content
        # Pass Execution If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1    VNFM permits duplication. Skipping the test
        # Set Headers    {"Accept": "${ACCEPT}"}
        # Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
    
        # Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Elian Kraja's avatar
    Elian Kraja committed
        # ${template}=    Get File    jsons/fmSubscriptionRequest.json
        # ${body}=        Format String   ${template}     callback_uri=${callback_uri}    callback_endpoint=${callback_endpoint}
        # Post    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions    ${body}
        # ${outputResponse}=    Output    response
    	# Set Global Variable    ${response}    ${outputResponse}		
    
    Get subscriptions
        Log    Get the list of active subscriptions
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
        Log    Execute Query and validate response
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Get    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions	
    
        ${outputResponse}=    Output    response
    
    	Set Global Variable    ${response}    ${outputResponse}	
    
    Get subscriptions - filter
        Log    Get the list of active subscriptions using a filter
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter}
    
        ${outputResponse}=    Output    response
    
    	Set Global Variable    ${response}    ${outputResponse}		
    
    Get subscriptions - invalid filter  
    
        Log    Get the list of active subscriptions using an invalid filter
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid}
    
        ${outputResponse}=    Output    response
    
    	Set Global Variable    ${response}    ${outputResponse}		
    
    aureliano sinatra's avatar
    aureliano sinatra committed
    Get subscriptions with all_fields attribute selector
        Log    Get the list of active subscriptions, using fields
        Set Headers    {"Accept": "${ACCEPT_JSON}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default
    
    aureliano sinatra's avatar
    aureliano sinatra committed
        ${output}=    Output    response
        Set Suite Variable    ${response}    ${output}
    Get subscriptions with exclude_default attribute selector
        Log    Get the list of active subscriptions, using fields
        Set Headers    {"Accept": "${ACCEPT_JSON}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default
    
    aureliano sinatra's avatar
    aureliano sinatra committed
        ${output}=    Output    response
        Set Suite Variable    ${response}    ${output}
    Get subscriptions with fields attribute selector
        Log    Get the list of active subscriptions, using fields
        Set Headers    {"Accept": "${ACCEPT_JSON}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields}
    
    aureliano sinatra's avatar
    aureliano sinatra committed
        ${output}=    Output    response
        Set Suite Variable    ${response}    ${output}	
    Get subscriptions with exclude_fields attribute selector
        Log    Get the list of active subscriptions, using fields
        Set Headers    {"Accept": "${ACCEPT_JSON}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields}
    
    aureliano sinatra's avatar
    aureliano sinatra committed
        ${output}=    Output    response
        Set Suite Variable    ${response}    ${output} 	
    
    PUT subscriptions
    
        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_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Put    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions       
    
        ${outputResponse}=    Output    response
    
    	Set Global Variable    ${response}    ${outputResponse}	
    
    PATCH subscriptions
    
        log    Trying to perform a PATCH. This method should not be implemented
        Set Headers  {"Accept":"${ACCEPT}"}  
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Patch    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions     
    
        ${outputResponse}=    Output    response
    
    	Set Global Variable    ${response}    ${outputResponse}		
    
    DELETE subscriptions
    
        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_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Delete    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions 	   
    
        ${outputResponse}=    Output    response
    
    	Set Global Variable    ${response}    ${outputResponse}	  
    
    
    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}
        Should Contain    ${response['headers']['Content-Type']}    application/json
        ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
        Validate Json    ${schema}    ${response['body']}
    
    root's avatar
    root committed
        Log    Json Schema Validation OK  
        
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
    Check HTTP Response Header Contain Link
    
        ${linkURL}=    Get Value From Json    ${response['headers']}    $..Link
    
        Should Not Be Empty    ${linkURL}
        
    Get subscriptions with filter "id"
        Log    Get the list of active subscriptions using a filter "id"
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id}
    
    	Set Global Variable    ${response}    ${outputResponse}
    
    	
    Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id"
        Should Be Equal As Strings    ${response['body']['id']}    ${subscription_id}
    	
    Get subscriptions with filter "filter_notificationTypes"
        Log    Get the list of active subscriptions using a filter "filter.notificationTypes"
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type}
    
    	Set Global Variable    ${response}    ${outputResponse}
    
    	
    Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes"
        :FOR   ${item}   IN  @{response['body']}
        Should Be Equal As Strings    ${item['filter']['notificationTypes']}   ${notification_type}
        END
    	
    Get subscriptions with filter "filter_faultyResourceTypes"
        Log    Get the list of active subscriptions using a filter "filter.faultyResourceTypes"
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType}
    
    	Set Global Variable    ${response}    ${outputResponse}
    
    	
    Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_faultyResourceTypes"
        :FOR   ${item}   IN  @{response['body']}
        Should Be Equal As Strings    ${item['filter']['faultyResourceTypes']}   ${faultyResourceType}
        END
    	
    Get subscriptions with filter "filter_perceivedSeverities"
        Log    Get the list of active subscriptions using a filter "filter.perceivedSeverities"
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity}
    
    	Set Global Variable    ${response}    ${outputResponse}
    
    	
    Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_perceivedSeverities"
        :FOR   ${item}   IN  @{response['body']}
        Should Be Equal As Strings    ${item['filter']['perceivedSeverities']}   ${perceivedSeverity}
        END
    	
    Get subscriptions with filter "filter_eventTypes"
        Log    Get the list of active subscriptions using a filter "filter.eventTypes"
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType}
    
    	Set Global Variable    ${response}    ${outputResponse}
    
    	
    Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_eventTypes"
        :FOR   ${item}   IN  @{response['body']}
        Should Be Equal As Strings    ${item['filter']['eventTypes']}   ${eventType}
        END
    	
    Get subscriptions with filter "filter_probableCauses"
        Log    Get the list of active subscriptions using a filter "filter.probableCauses"
        Set Headers    {"Accept": "${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        GET    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause}
    
    	Set Global Variable    ${response}    ${outputResponse}
    
    	
    Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses"
        :FOR   ${item}   IN  @{response['body']}
        Should Be Equal As Strings    ${item['filter']['probableCauses']}   ${probableCause}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
    Check Postcondition resource exists
    
        Set Headers    {"Accept":"${ACCEPT}"}
    
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
        Get    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} 
    
    Najam UI Hassan's avatar
    Najam UI Hassan committed
    Check Postcondition Duplicate Subscription exsist
    
    Elian Kraja's avatar
    Elian Kraja committed
        Should Not Be Equal As Strings    ${response['body']['callbackUri']}    ${subscriptionId} 
       
    Check Response for duplicated subscription
        Run Keyword If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1    Check HTTP Response Status Code Is    201
        Run Keyword If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1    Check HTTP Response Body Json Schema Is    FmSubscription
        Run Keyword If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0    Check HTTP Response Status Code Is    303