*** Settings ***
Resource    ../../common.robot
Library     Collections
Library     RequestsLibrary
Library     OperatingSystem
Library     json
Library     HttpLibrary.HTTP

*** Variables ***
@{return_ok_list}=         200  201  202  204
${vnflcm_port}            8801
${subscriptions_url}         /api/vnflcm/v1/subscriptions

#json files
${vnf_subscription_json}    ${SCRIPTS}/../tests/vfc/gvnfm-vnflcm/jsoninput/vnf_subscription.json

#global variables
${subscriptionId}

*** Test Cases ***
Create new VNF Package subscription
    Log    Create new VNF Package subscription
    [Documentation]    The objective is to test the creation of a new VNF package subscription
    ${json_value}=     json_from_file      ${vnf_subscription_json}
    ${json_string}=     string_from_json   ${json_value}
    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session    web_session    http://${VNFLCM_IP}:${vnflcm_port}    headers=${headers}
    Set Request Body    ${json_string}
    ${resp}=    Post Request    web_session     ${subscriptions_url}    ${json_string}
    ${responese_code}=     Convert To String      ${resp.status_code}
    List Should Contain Value    ${return_ok_list}   ${responese_code}
    ${response_json}    json.loads    ${resp.content}
    ${callback_uri}=    Convert To String      ${response_json['callbackUri']}
    Should Be Equal    ${callback_uri}    http://127.0.0.1:${vnflcm_port}/api/vnflcm/v1/callback_sample
    ${subscriptionId}=    Convert To String      ${response_json['id']}
    Set Global Variable     ${subscriptionId}

Create duplicated VNF Package subscription
    Log    Create duplicated VNF Package subscription
    [Documentation]    The objective is to test the attempt of a creation of a duplicated VNF package subscription
    ${json_value}=     json_from_file      ${vnf_subscription_json}
    ${json_string}=     string_from_json   ${json_value}
    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session    web_session    http://${VNFLCM_IP}:${vnflcm_port}    headers=${headers}
    Set Request Body    ${json_string}
    ${resp}=    Post Request    web_session     ${subscriptions_url}    ${json_string}
    Should Be Equal As Strings    502    ${resp.status_code}

GET All VNF Package Subscriptions
    Log    GET All VNF Package Subscriptions
    [Documentation]    The objective is to test the retrieval of all VNF package subscriptions
    ${headers}            Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session        web_session          http://${VNFLCM_IP}:${vnflcm_port}      headers=${headers}
    ${resp}=              Get Request          web_session     ${subscriptions_url}
    Should Be Equal As Strings    200    ${resp.status_code}

PUT VNF Package Subscriptions - Method not implemented
    Log    PUT VNF Package Subscriptions - Method not implemented
    [Documentation]    The objective is to test that PUT method is not allowed to modify VNF package subscriptions
    ${headers}            Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session        web_session          http://${VNFLCM_IP}:${vnflcm_port}      headers=${headers}
    ${resp}=              Put Request          web_session     ${subscriptions_url}
    Should Be Equal As Strings    405    ${resp.status_code}

PATCH VNF Package Subscriptions - Method not implemented
    Log    PATCH VNF Package Subscriptions - Method not implemented
    [Documentation]    The objective is to test that PATCH method is not allowed to update VNF package subscriptions
    ${headers}            Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session        web_session          http://${VNFLCM_IP}:${vnflcm_port}      headers=${headers}
    ${resp}=              Patch Request          web_session     ${subscriptions_url}
    Should Be Equal As Strings    405    ${resp.status_code}

DELETE VNF Package Subscriptions - Method not implemented
    Log    DELETE VNF Package Subscriptions - Method not implemented
    [Documentation]    The objective is to test that DELETE method is not allowed to delete VNF package subscriptions
    ${headers}            Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session        web_session          http://${VNFLCM_IP}:${vnflcm_port}      headers=${headers}
    ${resp}=              Delete Request          web_session     ${subscriptions_url}
    Should Be Equal As Strings    405    ${resp.status_code}

DELETE VNF Package Subscription
    Log   DELETE VNF Package Subscription
    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
    Create Session    web_session    http://${VNFLCM_IP}:${vnflcm_port}    headers=${headers}
    ${resp}=    Delete Request    web_session     ${subscriptions_url}/${subscriptionId}
    ${responese_code}=     Convert To String      ${resp.status_code}
    List Should Contain Value    ${return_ok_list}   ${responese_code}
