*** 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 ***
${WHITELIST_PATHFILE}     ${CURDIR}/data/ATTWhiteList.json
${SUBSCRIBER_PATHFILE}    ${CURDIR}/data/ATTSubscriber.json
${src_ip}         X.X.X.X
${src_gateway}    X.X.X.X
${src_user}       user
${src_pass}       pass
${src_iface}      eth0
${dst_ip}         X.X.X.X
${dst_user}       user
${dst_pass}       pass
${dst_gateway}    X.X.X.X
${dst_host_ip}    X.X.X.X

*** Test Cases ***
Validate ONU States
    [Documentation]    Validate status field in ONU List
    Wait Until Keyword Succeeds    60s    2s    Validate ONU States    ACTIVE    ENABLED

Validate states in ATT WorkFlowDriver Service Instances
    [Documentation]    Validates necessary states for entries in workflow driver service instance list
    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    valid    AWAITING

Validate Subscriber State
    [Documentation]    Validate subscriber status in the rcordsubscriber list
    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    AWAITING-AUTH

Send Subscriber Authentication
    [Documentation]    Sends a successful 802.1x EAPOL message from the subscriber
    Send EAPOL Message    ${src_ip}    ${src_user}    ${src_pass}    ${src_iface}    wpa_supplicant.conf

Validate states in ATT WorkFlowDriver instances after subscriber authentication
    [Documentation]    Validate proper states on the service instances after authentication
    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    valid    APPROVED

Re-Validate Subscriber State
    [Documentation]    Validate subscriber status in the rcordsubscriber list
    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    ENABLED

Execute Dhclient on RG
    [Documentation]    Run dhclient on the dataplane interface on the RG
    Send Dhclient Request    ${src_ip}    ${src_user}    ${src_pass}    ${src_iface}

Test E2E Connectivity
    [Documentation]    Test pings after subscriber has been authenticated + enabled
    Wait Until Keyword Succeeds    60s    2s    Test Ping    PASS    ${src_ip}    ${src_user}    ${src_pass}    ${dst_host_ip}

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

Teardown
    [Documentation]    Delete xos objects and kill process on src host
    Kill Linux Process    ${src_ip}    ${src_user}    ${src_pass}    [w]pa_supplicant
    Kill Linux Process    ${src_ip}    ${src_user}    ${src_pass}    [d]hclient
    Clean Up Objects   ${VOLT_SUBSCRIBER}
    Clean Up Objects   ${VOLT_DEVICE}
    Clean Up Objects   ${ATT_WHITELIST}

Validate ONU States
    [Arguments]    ${expected_op_status}    ${expected_admin_status}
    ${operational_status}    ${admin_status}    ONU Status Check    ${onu_device}
    Should Be Equal    ${operational_status}    ${expected_op_status}
    Should Be Equal    ${admin_status}    ${expected_admin_status}

Validate ATT Workflow Driver SI
    [Arguments]    ${expected_status}    ${expected_auth_status}
    ${status}   ${authentication_status}   Service Instance Status Check    ${onu_device}
    Should Be Equal    ${status}    ${expected_status}
    Should Be Equal    ${authentication_status}    ${expected_auth_status}

Validate Subscriber Status
    [Arguments]    ${exepected_status}
    ${status}    Subscriber Status Check    ${onu_device}
    Should Be Equal    ${status}    ${exepected_status}
