*** Settings ***
Documentation     Test successful ping from end-end
Suite Setup       Read InputFile
#Suite Teardown    Teardown
Library           Collections
Library           String
Library           OperatingSystem
Library           XML
Library           RequestsLibrary
Library           ../../Framework/utils/utils.py
Resource           ../../Framework/utils/utils.robot
Library           ../../Framework/restApi.py
Resource           ../../Framework/Subscriber.robot
Resource           ../../Framework/ATTWorkFlowDriver.robot
Resource           ../../Framework/ONU.robot
Resource           ../../Framework/DHCP.robot
Variables           ../../Properties/RestApiProperties.py

*** Variables ***
${PATHFILE}       ${CURDIR}/data/ATTWhiteList.json
Set Global Variable    ${onu_device}

*** Test Cases ***    TYPE                         LISTINDEX
Validate ONU States
    [Documentation]    Validate status field in ONU List
    ${operational_status}    ${admin_status}    ONU Status Check    ${onu_device}
    Should Be Equal    ${operational_status}    ACTIVE
    Should Be Equal    ${admin_status}    ENABLED

Validate states in ATT WorkFlowDriver Service Instances
    [Documentation]    Validates necessary states for entries in workflow driver service instance list
    Log    ${onu_device}
    ${status}   ${authentication_status}   Service Instance Status Check    ${onu_device}
    Should Be Equal    ${status}    valid 
    Should Be Equal    ${authentication_status}    AWAITING

Validate Subscriber State
    [Documentation]    Validate subscriber status in the rcordsubscriber list
    ${status}    Subscriber Status Check    ${onu_device}
    Should Be Equal    ${status}    AWAITING-AUTH 

#Send Subscriber Authentication
#    [Documentation]


Validate states in ATT WorkFlowDriver instances after subscriber authentication
    [Documentation]    Validate proper states on the service instances after authentication
    ${status}    ${authentication_status}    Service Instance Status Check    ${onu_device}
    Should Be Equal    ${status}    valid
    Should Be Equal    ${authentication_status}    APPROVED

Re-Validate Subscriber State
    [Documentation]    Validate subscriber status in the rcordsubscriber list
    ${status}=    Subscriber Status Check    ${onu_device}
    Should Be Equal    ${status}    ENABLED

*** Keywords ***
Read InputFile
    ${AttWhiteListList}=    utils.jsonToList    ${PATHFILE}   AttWhiteListInfo 
    Set Suite Variable    ${slist}    ${AttWhiteListList}
    ${AttWhiteListList} =    Get Variable Value    ${slist}
    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    0
    ${onu_device}=   Get From Dictionary    ${AttWhiteListDict}    serial_number
    Log    ${onu_device}
    Set Global Variable    ${onu_device}

Teardown
    [Documentation]    Delete and clean up xos objects
    Clean Up Objects   ${VOLT_SUBSCRIBER} 
    Clean Up Objects   ${VOLT_DEVICE} 
    Clean Up Objects   ${ATT_WHITELIST} 
