Adding CNF LCM test cases
[integration/csit.git] / tests / so / integration-cnfm-testing / cnf_lcm_tests.robot
diff --git a/tests/so/integration-cnfm-testing/cnf_lcm_tests.robot b/tests/so/integration-cnfm-testing/cnf_lcm_tests.robot
new file mode 100644 (file)
index 0000000..8583886
--- /dev/null
@@ -0,0 +1,148 @@
+*** Settings ***
+Library     Collections
+Library     RequestsLibrary
+Library     OperatingSystem
+Library     json
+
+Documentation    Test cases for CNF lifecycle management operations
+...              Note, relies on:
+...                -package being onboarded in cnf_package_onboarding_tests
+
+*** Variables ***
+${SLEEP_INTERVAL_SEC}=                     10
+${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}=        60     # Represents the maximum number of attempts that will be made before a timeout. It sleeps for SLEEP_INTERVAL_SEC seconds before retry.
+${BASIC_AUTH}=                             Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
+${SERVICE_INSTANTIATION_TEMPLATE}=         ${CURDIR}${/}data${/}serviceInstantiationRequest.json
+${CNF_RESOURCE_INSTANTIATION_TEMPLATE}=    ${CURDIR}${/}data${/}cnfResourceInstantiationRequest.json
+${CNF_RESOURCE_DELETE_TEMPLATE}=           ${CURDIR}${/}data${/}cnfResourceDeleteRequest.json
+${SERVICE_DELETE_TEMPLATE}=                ${CURDIR}${/}data${/}serviceDeleteRequest.json
+
+*** Test Cases ***
+Invoke Service Instantiation
+    Create Session   api_handler_session  http://${REPO_IP}:8080
+    ${data}=    Get Binary File     ${SERVICE_INSTANTIATION_TEMPLATE}
+    &{headers}=  Create Dictionary    Authorization=${BASIC_AUTH}    Content-Type=application/json    Accept=application/json
+    ${service_instantiation_request}=    Post On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances    data=${data}    headers=${headers}
+    Log to Console      \nStatus code received: ${service_instantiation_request.status_code}
+    Log to Console      Content received: ${service_instantiation_request.content}
+    Should Be Equal As Strings    '${service_instantiation_request.status_code}'    '202'
+
+    ${service_instantiation_json_response}=    Evaluate     json.loads(r"""${service_instantiation_request.content}""", strict=False)    json
+    ${request_ID}=          Set Variable         ${service_instantiation_json_response}[requestReferences][requestId]
+    ${service_instance_Id}=     Set Variable       ${service_instantiation_json_response}[requestReferences][instanceId]
+    Set Global Variable       ${service_instance_Id}
+    ${actual_request_state}=    Set Variable    ""
+
+    FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
+       ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
+       Log to Console      Orchestration status code received: ${orchestration_status_request.status_code}
+       Log to Console      Orchestration Content received: ${orchestration_status_request.content}
+       ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""", strict=False)    json
+       ${actual_request_state}=     Set Variable       ${orchestration_json_response}[request][requestStatus][requestState]
+       Log To Console    Received actual repsonse status:${actual_request_state}
+       Run Keyword If   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
+       Log to Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
+       Sleep   ${SLEEP_INTERVAL_SEC}s
+    END
+
+    Log To Console     Final repsonse status received: ${actual_request_state}
+    Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
+
+Invoke CNF Instantiation
+    Run Keyword If      "${service_instance_Id}"!="${EMPTY}"      Log to Console    Service Instance ID :${service_instance_Id} received
+    ...                ELSE      Fail           Log to Console  Invalid Service Instance ID :${service_instance_Id} recieved
+
+    ${data}=    Get Binary File     ${CNF_RESOURCE_INSTANTIATION_TEMPLATE}
+    ${cnf_instantiate_request_json}=    Evaluate    json.loads(r'''${data}''', strict=False)    json
+    Set To Dictionary    ${cnf_instantiate_request_json}[requestDetails][relatedInstanceList][0][relatedInstance]        instanceId=${service_instance_Id}
+    ${cnf_instantiate_request_string}=    Evaluate    json.dumps(${cnf_instantiate_request_json})    json
+
+    Create Session   api_handler_session  http://${REPO_IP}:8080
+    &{headers}=  Create Dictionary    Authorization=${BASIC_AUTH}    Content-Type=application/json    Accept=application/json
+    ${cnf_instantiate_request}=    Post On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/cnfs   data=${cnf_instantiate_request_string}    headers=${headers}
+    Log to Console      \nStatus code received: ${cnf_instantiate_request.status_code}
+    Log to Console      Content received: ${cnf_instantiate_request.content}
+    Should Be Equal As Strings    '${cnf_instantiate_request.status_code}'    '202'
+
+    ${cnf_instantiate_json_response}=    Evaluate     json.loads(r"""${cnf_instantiate_request.content}""")    json
+    ${request_ID}=          Set Variable         ${cnf_instantiate_json_response}[requestReferences][requestId]
+    ${actual_request_state}=    Set Variable    ""
+    ${cnf_instance_Id}=     Set Variable       ${cnf_instantiate_json_response}[requestReferences][instanceId]
+    SET GLOBAL VARIABLE       ${cnf_instance_Id}
+
+    FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
+       ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
+       Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
+       Log To Console      ${orchestration_status_request.content}
+       ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""", strict=False)    json
+       ${actual_request_state}=     Set Variable       ${orchestration_json_response}[request][requestStatus][requestState]
+       Run Keyword If   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
+       Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
+       SLEEP   ${SLEEP_INTERVAL_SEC}s
+    END
+
+    ${service_instance_Id}=     Set Variable       ${orchestration_json_response}[request][instanceReferences][serviceInstanceId]
+    Log To Console     Final repsonse status received: ${actual_request_state}
+    Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
+
+Invoke CNF Delete
+    Run Keyword If      "${cnf_instance_Id}" != "${EMPTY}"      Log to Console    CNF Instance ID :${cnf_instance_Id} received
+    ...                ELSE      Fail           Log to Console  Invalid CNF Instance ID :${cnf_instance_Id} recieved
+    Run Keyword If      "${service_instance_Id}" != "${EMPTY}"      Log to Console    CNF Instance ID :${service_instance_Id} received
+    ...                ELSE      Fail           Log to Console  Invalid CNF Instance ID :${service_instance_Id} recieved
+
+    Create Session   api_handler_session  http://${REPO_IP}:8080
+    ${data}=    Get Binary File     ${CNF_RESOURCE_DELETE_TEMPLATE}
+    &{headers}=  Create Dictionary    Authorization=${BASIC_AUTH}    Content-Type=application/json    Accept=application/json
+    ${cnf_delete_request}=    Delete On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/cnfs/${cnf_instance_Id}     data=${data}     headers=${headers}
+    Log to Console      \nStatus code received: ${cnf_delete_request.status_code}
+    Log to Console      Content received: ${cnf_delete_request.content}
+    Should Be Equal As Strings    '${cnf_delete_request.status_code}'    '202'
+
+    ${cnf_delete_json_response}=    Evaluate     json.loads(r"""${cnf_delete_request.content}""")    json
+    ${request_ID}=          Set Variable         ${cnf_delete_json_response}[requestReferences][requestId]
+    ${actual_request_state}=    Set Variable    ""
+
+    FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
+       ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
+       Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
+       Log To Console      ${orchestration_status_request.content}
+       ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""")    json
+       ${actual_request_state}=     Set Variable       ${orchestration_json_response}[request][requestStatus][requestState]
+       RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
+       Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
+       SLEEP   ${SLEEP_INTERVAL_SEC}s
+    END
+
+    Log To Console     Final repsonse status received: ${actual_request_state}
+    Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
+
+Delete Service Instance
+    Run Keyword If      "${service_instance_Id}" != "${EMPTY}"      Log to Console    CNF Instance ID :${service_instance_Id} received
+    ...                ELSE      Fail           Log to Console  Invalid Service Instance ID :${service_instance_Id} recieved
+
+    Create Session   api_handler_session  http://${REPO_IP}:8080
+    ${data}=    Get Binary File     ${SERVICE_DELETE_TEMPLATE}
+    &{headers}=  Create Dictionary    Authorization=${BASIC_AUTH}    Content-Type=application/json    Accept=application/json
+    ${service_delete_request}=    Delete On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}     data=${data}     headers=${headers}
+    ${service_delete_json_response}=    Evaluate     json.loads(r"""${service_delete_request.content}""")    json
+    Log to Console      \nStatus code received: ${service_delete_request.status_code}
+    Log to Console      Content received: ${service_delete_request.content}
+    Should Be Equal As Strings    '${service_delete_request.status_code}'    '202'
+
+    ${request_ID}=          Set Variable         ${service_delete_json_response}[requestReferences][requestId]
+    ${actual_request_state}=    Set Variable    ""
+
+    FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
+       ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
+       Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
+       Log To Console      ${orchestration_status_request.content}
+       ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""")    json
+       ${actual_request_state}=     Set Variable       ${orchestration_json_response}[request][requestStatus][requestState]
+       RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
+       Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
+       SLEEP   ${SLEEP_INTERVAL_SEC}s
+    END
+
+    Log To Console     Final repsonse status received: ${actual_request_state}
+    Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
\ No newline at end of file