*** Settings ***
Documentation     Test suite for Sanity Test of Node API
Suite Setup       Read InputFile
Test Template     Verify Node functionality
Library           Collections
Library           String
Library           OperatingSystem
Library           XML
Library           RequestsLibrary
Library           CORDRobot
Library           ImportResource  resources=CORDRobot

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

*** Test Cases ***      TYPE        LISTINDEX
Test Post Node-1        CREATE      0

#Test Get Node-1         RETRIEVE    0

Test Delete Node-1      DELETE      0

Test Post Node-2        CREATE      1

#Test Get Node-2         RETRIEVE    1

Test Delete Node-2      DELETE      1

*** Keywords ***
Read InputFile
    ${nodeList}=    CORDRobot.jsonToList    ${PATHFILE}    NodeInfo
    Set Suite Variable    ${nlist}    ${nodeList}

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

Test Post Node API
    [Arguments]    ${listIndex}
    ${nodeList}=    Get Variable Value    ${nlist}
    ${nodeDict}=    CORDRobot.listToDict    ${nodeList}    ${listIndex}
    ${api_result}=    CORDRobot.ApiPost    CORE_SANITY_NODES    ${nodeDict}
    Should Be True    ${api_result}

Test Get Node API
    [Arguments]    ${listIndex}
    ${json_result}=    CORDRobot.ApiGet   CORE_NODES
    Log    ${json_result}
    ${nodeList}=    Get Variable Value    ${nlist}
    ${nodeDict}=    CORDRobot.listToDict    ${nodeList}    ${listIndex}
    ${name}=    CORDRobot.getFieldValueFromDict    ${nodeDict}   name
    ${getJsonDict}=    CORDRobot.getDictFromListOfDict    ${json_result}    name    ${name}
    ${test_result}=    CORDRobot.compare_dict    ${nodeDict}    ${getJsonDict}
    Should Be True    ${test_result}

Test Delete Node API
    [Arguments]    ${listIndex}
    ${json_result}=    CORDRobot.ApiGet    CORE_NODES
    ${nodeList}=    Get Variable Value    ${nlist}
    ${nodeDict}=    CORDRobot.listToDict    ${nodeList}    ${listIndex}
    ${name}=    CORDRobot.getFieldValueFromDict    ${nodeDict}    name
    Log    ${name}
    ${nodeDict}=    CORDRobot.getDictFromListofDict    ${json_result}    name  ${name}
    Log    ${nodeDict}
    ${nodeId}=    CORDRobot.getFieldValueFromDict    ${nodeDict}    id
    Log    ${nodeId}
    ${test_result}=    CORDRobot.ApiDelete    CORE_NODES    ${nodeId}
    Should Be True    ${test_result}
