*** Settings ***
Documentation     Test suite for Sanity Test of Instance API
Suite Setup       Read InputFile
Test Template     Verify Instance API functionality
Library           Collections
Library           String
Library           OperatingSystem
Library           XML
Library           RequestsLibrary
Library           ../Framework/utils/utils.py
Library           ../Framework/restApi.py

*** Variables ***
${USER}           admin
${PASSWORD}       admin
${PATHFILE}       ${CURDIR}/data/Sanity_Instance.json

*** Test Cases ***    TYPE        LISTINDEX
Test Add Instance-1
                      CREATE      0

Test Get Instance-1
                      RETRIEVE    0

Test Delete Instance-1
                      DELETE      0

Test Add Instance-2
                      CREATE      1

Test Get Instance-2
                      RETRIEVE    1

Test Delete Instance-2
                      DELETE      1

*** Keywords ***
Read InputFile
    ${instanceList} =    utils.jsonToList    ${PATHFILE}    InstanceInfo
    Set Suite Variable    ${iList}    ${instanceList}

Verify Instance API functionality
    [Arguments]    ${type}    ${listIndex}
    Run Keyword If    "${type}" == "CREATE"    Test Post Instances    ${listIndex}
    Run Keyword If    "${type}" == "RETRIEVE"    Test Get Instances    ${listIndex}
    Run Keyword If    "${type}" == "DELETE"    Test Delete Instances    ${listIndex}

Test Post Instances
    [Arguments]    ${listIndex}
    ${instanceList} =    Get Variable Value    ${iList}
    ${instanceDict}=    utils.listToDict    ${instanceList}    ${listIndex}
    ${api_result}=    restApi.ApiPost    CORE_SANITY_INSTANCES    ${instanceDict}
    Should Be True    ${api_result}

Test Get Instances
    [Arguments]    ${listIndex}
    ${json_result}=    restApi.ApiGet    CORE_INSTANCES
    Log    ${json_result}
    ${instanceList}=    Get Variable Value    ${iList}
    ${inputDict}=    utils.listToDict    ${instanceList}    ${listIndex}
    ${instanceName}=    utils.getFieldValueFromDict    ${inputDict}    name
    ${getJsonDict}=    utils.getDictFromListOfDict    ${json_result}    name    ${instanceName}
    ${test_result}=    utils.compare_dict    ${inputDict}    ${getJsonDict}
    Should Be True    ${json_result}

Test Delete Instances
    [Arguments]    ${listIndex}
    ${json_getresult}=    restApi.ApiGet    CORE_INSTANCES
    ${instanceList}=    Get Variable Value    ${iList}
    ${instanceDict}=    utils.listToDict    ${iList}    ${listIndex}
    ${instanceName}=    utils.getFieldValueFromDict    ${instanceDict}    name
    Log    ${instanceName}
    ${getInstanceDict}=    utils.getDictFromListofDict    ${json_getresult}    name    ${instanceName}
    Log    ${getInstanceDict}
    ${instanceID}=    utils.getFieldValueFromDict    ${getInstanceDict}    id
    Log    ${instanceID}
    ${test_result}=    restApi.ApiDelete    CORE_INSTANCES    ${instanceID}
    Should be True    ${test_result}
