[SEBA-280] More test cases for ATT workflow

Change-Id: I1e0d7a87de08b6fa95fbd606f2f6f24864f1a0f7
diff --git a/src/test/cord-api/Framework/Subscriber.robot b/src/test/cord-api/Framework/Subscriber.robot
index f4d296f..78c8135 100644
--- a/src/test/cord-api/Framework/Subscriber.robot
+++ b/src/test/cord-api/Framework/Subscriber.robot
@@ -59,12 +59,9 @@
     Should Be True    ${api_result}
 
 Send EAPOL Message
-    [Arguments]    ${auth_pass}    ${iface}    ${conf_file}    ${ip}    ${user}    ${pass}=${None}    ${container_name}=${None}
+    [Arguments]    ${iface}    ${conf_file}    ${ip}    ${user}    ${pass}=${None}    ${container_name}=${None}
     [Documentation]    Executes a particular auth request on the RG via wpa_supplicant client. Requested packet should exist on src.
     Login And Run Command On Remote System    sudo rm -f /tmp/wpa.log; sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file} -f /tmp/wpa.log    ${ip}    ${user}    ${pass}    ${container_name}
-    Run Keyword If    '${auth_pass}' == 'True'    Wait Until Keyword Succeeds    30s    2s    Check Remote File Contents    True    /tmp/wpa.log    authentication completed successfully    ${ip}    ${user}    ${pass}    ${container_name}
-    Run Keyword If    '${auth_pass}' == 'False'    Sleep    10s
-    Run Keyword If    '${auth_pass}' == 'False'    Check Remote File Contents    False    /tmp/wpa.log    authentication completed successfully    ${ip}    ${user}    ${pass}    ${container_name}
 
 Start DHCP Server on Remote Host
     [Arguments]    ${interface}    ${ip}    ${user}    ${pass}=${None}    ${container_name}=${None}
diff --git a/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot b/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot
index 48b2fe6..e34646f 100644
--- a/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot
+++ b/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot
@@ -14,10 +14,10 @@
 
 *** Settings ***
 Documentation     Test various end-to-end scenarios with ATT workflow
-Suite Setup       Setup
-Suite Teardown    Teardown
-Test Setup        Create Models
-Test Teardown     Clean Test Environment
+Suite Setup       Setup Suite
+Suite Teardown    Teardown Suite
+Test Setup        Setup Test
+Test Teardown     Teardown Test
 Library           Collections
 Library           String
 Library           OperatingSystem
@@ -46,78 +46,250 @@
 ${VOLTHA_POD_NUM}           8
 
 *** Test Cases ***
-ONU in Correct Location + Successful Auth Request
+ONU in Correct Location
     [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
-    ...    Discovery of ONU Device after whitelist has been configured
-    ...    Sending of a successful 802.1x auth request
-    ...    Configuration of the destination servers interface and start dhcpd
-    ...    Configuration of source server interface and execute dhclient on interface
-    ...    Validate successful pings from src to dst
+    ...    Configure whitelist with correct ONU location
+    ...    Validate successful authentication/DHCP/E2E ping
     [Setup]    None
     Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
     Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
     Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
-    Send EAPOL Message    True    ${src_iface}    wpa_supplicant.conf    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
+    Validate Authentication    True    wpa_supplicant.conf
     Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
     Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
     Validate DHCP and Ping    True    True
 
-ONU in Correct Location + Skip Auth
+ONU in Correct Location -> Remove ONU from Whitelist -> Add ONU to Whitelist
     [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
-    ...    Discovery of ONU Device after whitelist has been configured
-    ...    Configuration of the destination servers interface and start dhcpd
-    ...    Configuration of source server interface and execute dhclient on interface
-    ...    Validate failed DHCP and pings from src to dst
+    ...    Configure whitelist with correct ONU location
+    ...    Validate successful authentication/DHCP/E2E ping
+    ...    Remove ONU from whitelist
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Add ONU to whitelist
+    ...    Validate successful authentication/DHCP/E2E ping
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+    Clean Up Linux
+    Remove Whitelist
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    False    wpa_supplicant.conf
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Create Whitelist
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+
+ONU in Correct Location -> ONU in Wrong Location -> ONU in Correct Location
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Configure whitelist with correct ONU location
+    ...    Validate successful authentication/DHCP/E2E ping
+    ...    Update whitelist with wrong ONU location
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Update whitelist with correct ONU location
+    ...    Validate successful authentication/DHCP/E2E ping
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+    Clean Up Linux
+    Update Whitelist with Wrong Location
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    False    wpa_supplicant.conf
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Update Whitelist with Correct Location
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+
+ONU in Correct Location -> Remove Subscriber -> Create Subscriber
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Configure whitelist with correct ONU location
+    ...    Validate successful authentication/DHCP/E2E ping
+    ...    Remove subscriber model
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Recreate subscriber model
+    ...    Validate successful authentication/DHCP/E2E ping
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+    Clean Up Linux
+    Remove Subscriber
+    Validate Authentication    False    wpa_supplicant.conf
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Create Subscriber
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+
+ONU in Correct Location (Skip Subscriber Provisioning) -> Provision Subscriber
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Configure whitelist with correct ONU location and skip provisioning subscriber
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Provision subscriber
+    ...    Validate successful authentication/DHCP/E2E ping
+    [Setup]    None
+    Create Whitelist
+    Create VOLT
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Validate Authentication    False    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Create Subscriber
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+
+ONU in Correct Location (Skip Authentication)
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Configure whitelist with correct ONU location and skip RG authentication
+    ...    Validate failed authentication/DHCP/E2E ping
     Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
     Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
     Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
     Validate DHCP and Ping    False    False
 
-ONU not in Whitelist + Failed Auth Request
+ONU not in Whitelist
     [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
-    ...    Discovery of ONU Device that is not in the whitelist
-    ...    Sending a 802.1x auth request
-    ...    Configuration of the destination servers interface and start dhcpd
-    ...    Configuration of source server interface and execute dhclient on interface
-    ...    Validate failed DHCP and pings from src to dst
+    ...    Skip whitelist configuration for ONU
+    ...    Validate failed authentication/DHCP/E2E ping
     [Setup]    None
-    ${SubscriberList} =    Get Variable Value    ${slist}
-    ${SubscriberDict}=    utils.listToDict    ${SubscriberList}    0
-    Wait Until Keyword Succeeds    120s    15s    CORD Post    ${VOLT_SUBSCRIBER}    ${SubscriberDict}
-    ${VoltDeviceList} =    Get Variable Value    ${vlist}
-    ${VoltDeviceDict}=    utils.listToDict    ${VoltDeviceList}    0
-    CORD Post    ${VOLT_DEVICE}    ${VoltDeviceDict}
+    Create Subscriber
+    Create VOLT
     Wait Until Keyword Succeeds    300s    15s    Validate ONU States    UNKNOWN    DISABLED
     Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
     Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
-    Send EAPOL Message    False    ${src_iface}    wpa_supplicant.conf    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
+    Validate Authentication    False    wpa_supplicant.conf
     Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
     Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
     Validate DHCP and Ping    False    False
 
+ONU not in Whitelist (Skip Subscriber Provisioning) -> Add ONU to Whitelist -> Provision Subscriber
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Skip whitelist configuration for ONU and subscriber provisioning
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Configure whitelist with correct ONU location
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Provision subscriber
+    ...    Validate successful authentication/DHCP/E2E ping
+    [Setup]    None
+    Create VOLT
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    UNKNOWN    DISABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Validate Authentication    False    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Create Whitelist
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Validate Authentication    False    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Create Subscriber
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+
+ONU in Wrong Location
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Configure whitelist with wrong ONU location
+    ...    Validate failed authentication/DHCP/E2E ping
+    Update Whitelist with Wrong Location
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    UNKNOWN    DISABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    False    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate DHCP and Ping    False    False
+
+ONU with Wrong Location (Skip Subscriber Provisioning) -> ONU with Correct Location -> Provision Subscriber
+    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
+    ...    Configure whitelist with wrong ONU location and skip subscriber provisioning
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Configure whitelist with correct ONU location
+    ...    Validate failed authentication/DHCP/E2E ping
+    ...    Provision subscriber
+    ...    Validate successful authentication/DHCP/E2E ping
+    [Setup]    None
+    [Tags]    Debug
+    Create VOLT
+    Create Whitelist
+    Update Whitelist with Wrong Location
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    UNKNOWN    DISABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Validate Authentication    False    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    DISABLED    AWAITING
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Update Whitelist with Correct Location
+    Wait Until Keyword Succeeds    300s    15s    Validate ONU States    ACTIVE    ENABLED
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Validate Authentication    False    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    AWAITING
+    Validate DHCP and Ping    False    False
+    Clean Up Linux
+    Create Subscriber
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    awaiting-auth
+    Validate Authentication    True    wpa_supplicant.conf
+    Wait Until Keyword Succeeds    60s    2s    Validate ATT Workflow Driver SI    ENABLED    APPROVED
+    Wait Until Keyword Succeeds    60s    2s    Validate Subscriber Status    enabled
+    Validate DHCP and Ping    True    True
+
 *** Keywords ***
-Setup
+Setup Suite
     ${auth} =    Create List    ${XOS_USER}    ${XOS_PASSWD}
     ${HEADERS}    Create Dictionary    Content-Type=application/json
     Create Session    ${server_ip}    http://${server_ip}:${server_port}    auth=${AUTH}    headers=${HEADERS}
     ${att_workflow_service_id}=    Get Service Owner Id    ${ATT_SERVICE}
     ${volt_service_id}=    Get Service Owner Id    ${VOLT_SERVICE}
     ${AttWhiteListList}=    utils.jsonToList    ${WHITELIST_PATHFILE}   AttWhiteListInfo
-    Set Suite Variable    ${alist}    ${AttWhiteListList}
-    ${AttWhiteListList} =    Get Variable Value    ${alist}
+    Set Suite Variable    ${AttWhiteListList}
     ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    0
     ${AttWhiteListDict}=    utils.setFieldValueInDict    ${AttWhiteListDict}    owner_id    ${att_workflow_service_id}
     ${onu_device}=   Get From Dictionary    ${AttWhiteListDict}    serial_number
-    Log    ${onu_device}
     Set Global Variable    ${onu_device}
+    ${onu_location}=   Get From Dictionary    ${AttWhiteListDict}    pon_port_id
+    Set Global Variable    ${onu_location}
     ${SubscriberList}=    utils.jsonToList    ${SUBSCRIBER_PATHFILE}   SubscriberInfo
-    Set Global Variable    ${slist}    ${SubscriberList}
-    ${SubscriberList} =    Get Variable Value    ${slist}
+    Set Global Variable    ${SubscriberList}
     ${SubscriberDict}=    utils.listToDict    ${SubscriberList}    0
     ${s_tag}=    utils.getFieldValueFromDict    ${SubscriberDict}   s_tag
     ${c_tag}=    utils.getFieldValueFromDict    ${SubscriberDict}   c_tag
     ${VoltDeviceList}=    utils.jsonToList    ${VOLT_DEVICE_PATHFILE}   VOLTDeviceInfo
-    Set Global Variable    ${vlist}    ${VoltDeviceList}
+    Set Global Variable    ${VoltDeviceList}
     Set Suite Variable    ${s_tag}
     Set Suite Variable    ${c_tag}
     Set Global Variable    ${export_kubeconfig}    export KUBECONFIG=${KUBERNETES_CONF}
@@ -151,34 +323,45 @@
     Set Suite Variable    ${olt_user}
     Set Suite Variable    ${olt_pass}
 
-Teardown
+Teardown Suite
     [Documentation]    Performs any additional cleanup required
     Log    Suite Teardown cleanup
     Delete All Sessions
 
-Create Models
+Setup Test
     [Documentation]    Re-create Subscriber, whitelist, and olt-device models to test
     Log    Re-creating objects
-    #create attwhitelist
-    ${AttWhiteListList}=    Get Variable Value    ${alist}
+    Create Whitelist
+    Create Subscriber
+    Create VOLT
+
+Create Whitelist
     ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    0
     CORD Post    ${ATT_WHITELIST}    ${AttWhiteListDict}
-    #create subscriber
-    ${SubscriberList}=    Get Variable Value    ${slist}
+
+Create Subscriber
     ${SubscriberDict}=    utils.listToDict    ${SubscriberList}    0
     Wait Until Keyword Succeeds    120s    15s    CORD Post    ${VOLT_SUBSCRIBER}    ${SubscriberDict}
-    #create olt device
-    ${VoltDeviceList}=    Get Variable Value    ${vlist}
+
+Create VOLT
     ${VoltDeviceDict}=    utils.listToDict    ${VoltDeviceList}    0
     CORD Post    ${VOLT_DEVICE}    ${VoltDeviceDict}
 
-Clean Test Environment
+Teardown Test
     [Documentation]    Delete xos objects, kills processes and cleans up interfaces on src+dst servers
+    Clean Up Linux
+    Clean Up XOS
+
+Clean Up Linux
+    [Documentation]    Kill processes and clean up interfaces on src+dst servers
     Run Keyword And Ignore Error    Kill Linux Process    [w]pa_supplicant    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
     Run Keyword And Ignore Error    Kill Linux Process    [d]hclient    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
     Run Keyword If    '${dst_ip}' != '${None}'    Run Keyword And Ignore Error    Kill Linux Process    [d]hcpd    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_container_name}
     Delete IP Addresses from Interface on Remote Host    ${src_iface}    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
     Run Keyword If    '${dst_ip}' != '${None}'    Delete Interface on Remote Host    ${dst_dp_iface}.${s_tag}    ${dst_ip}    ${dst_user}    ${dst_pass}    ${dst_container_name}
+
+Clean Up XOS
+    [Documentation]    Clean up all XOS objects and reinstall voltha after OLT reboots
     Wait Until Keyword Succeeds    60s    2s    Clean Up Objects    ${VOLT_SUBSCRIBER}
     Wait Until Keyword Succeeds    60s    2s    Clean Up Objects    ${VOLT_DEVICE}
     Wait Until Keyword Succeeds    60s    2s    Clean Up Objects    ${ATT_WHITELIST}
@@ -187,6 +370,18 @@
     Wait Until Keyword Succeeds    120s    10s    Openolt is Up    ${olt_ip}    ${olt_user}    ${olt_pass}
     Wait Until Keyword Succeeds    300s    10s    Reinstall Voltha
 
+Remove Whitelist
+    ${whitelist_id}=    Retrieve Whitelist Entry    ${onu_device}
+    CORD Delete    ${ATT_WHITELIST}    ${whitelist_id}
+
+Update Whitelist with Wrong Location
+    ${whitelist_id}=    Retrieve Whitelist Entry    ${onu_device}
+    CORD Put    ${ATT_WHITELIST}    {"pon_port_id": 55 }    ${whitelist_id}
+
+Update Whitelist with Correct Location
+    ${whitelist_id}=    Retrieve Whitelist Entry    ${onu_device}
+    CORD Put    ${ATT_WHITELIST}    {"pon_port_id": ${onu_location} }    ${whitelist_id}
+
 Validate ONU States
     [Arguments]    ${expected_op_status}    ${expected_admin_status}
     ${operational_status}    ${admin_status}    ONU Status Check    ${onu_device}
@@ -204,6 +399,14 @@
     ${status}    Subscriber Status Check    ${onu_device}
     Should Be Equal    ${status}    ${exepected_status}
 
+Validate Authentication
+    [Arguments]    ${auth_pass}    ${conf_file}
+    [Documentation]    Executes a particular auth request on the RG and verifies if it succeeds. auth_pass determines if authentication should pass
+    Send EAPOL Message    ${src_iface}    ${conf_file}    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
+    Run Keyword If    '${auth_pass}' == 'True'    Wait Until Keyword Succeeds    30s    2s    Check Remote File Contents    True    /tmp/wpa.log    authentication completed successfully    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
+    Run Keyword If    '${auth_pass}' == 'False'    Sleep    10s
+    Run Keyword If    '${auth_pass}' == 'False'    Check Remote File Contents    False    /tmp/wpa.log    authentication completed successfully    ${src_ip}    ${src_user}    ${src_pass}    ${src_container_name}
+
 Validate DHCP and Ping
     [Arguments]    ${dhcp_should_pass}    ${ping_should_pass}
     Run Keyword If    '${dst_ip}' != '${None}'    Run Keywords