[SEBA-184] [WIP] White List tests

Change-Id: Iab364d56583c36de91e1a7e64731ef94b4b2a003
diff --git a/src/test/cord-api/Properties/RestApiProperties.py b/src/test/cord-api/Properties/RestApiProperties.py
index 072c1ec..1199b8d 100644
--- a/src/test/cord-api/Properties/RestApiProperties.py
+++ b/src/test/cord-api/Properties/RestApiProperties.py
@@ -71,3 +71,4 @@
 BNG_MAP = '/xosapi/v1/fabric-crossconnect/bngportmappings'
 ATT_SERVICE = '/xosapi/v1/att-workflow-driver/attworkflowdriverservices'
 ATT_WHITELIST = '/xosapi/v1/att-workflow-driver/attworkflowdriverwhitelistentries'
+ATT_SERVICEINSTANTCES = '/xosapi/v1/att-workflow-driver/attworkflowdriverserviceinstances'
diff --git a/src/test/cord-api/Tests/AttWhiteList-disableTests.txt b/src/test/cord-api/Tests/AttWhiteList-disableTests.txt
new file mode 100644
index 0000000..c53097c
--- /dev/null
+++ b/src/test/cord-api/Tests/AttWhiteList-disableTests.txt
@@ -0,0 +1,93 @@
+*** Settings ***
+Documentation     Test to Configure White List
+Suite Setup       Read InputFile
+Test Template     Configuring White List
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../Framework/utils/utils.py
+Library           ../Framework/restApi.py
+
+*** Variables ***
+${PATHFILE}       ${CURDIR}/data/AttWhiteList.json
+
+*** Test Cases ***    TYPE                         LISTINDEX
+Test Service Instance States
+                      STATUS_CHECK                 0
+Test ONU States
+                      ONU_STATUS                 0
+
+*** Keywords ***
+Read InputFile
+    ${AttWhiteListList}=    utils.jsonToList    ${PATHFILE}   AttWhiteListInfo 
+    Set Suite Variable    ${slist}    ${AttWhiteListList}
+    Set Global Variable    ${AttWorkFlowDriver_Id}    ${EMPTY}
+    Set Global Variable    ${AttWhiteList_Id}    ${EMPTY}
+    Set Global Variable    ${onu_device}    ${EMPTY}
+    Set Global Variable    ${AttServiceInstance_Id}    ${EMPTY}
+    Set Global Variable    ${authentication_status}    ${EMPTY}
+
+Configuring White List
+    [Arguments]    ${type}    ${listIndex}
+    Run Keyword If    "${type}" == "CREATE"    Post White List    ${listIndex}
+    Run Keyword If    "${type}" == "RETRIEVE"    Get White List    ${listIndex}
+    Run Keyword If    "${type}" == "STATUS_CHECK"    Service Instance Status Check    ${listIndex}
+    Run Keyword If    "${type}" == "ONU_STATUS"    ONU Status Check    ${listIndex}
+
+Post White List
+    [Arguments]    ${listIndex}
+    ${AttWhiteListList} =    Get Variable Value    ${slist}
+    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    ${listIndex}
+    ${onu_device}=   Get From Dictionary    ${AttWhiteListDict}    serial_number
+    Log    ${onu_device}
+    # Retrieve ATT Service Driver Id
+    ${api_getResult}=    restApi.ApiGet    ATT_SERVICE
+    ${AttWorkFlowDriverList}=    Get From Dictionary    ${api_getResult}    items
+    ${AttWorkFlowDriverDict}=    utils.getDictFromListOfDict    ${AttWorkFlowDriverList}    leaf_model_name    AttWorkflowDriverService
+    ${AttWorkFlowDriver_Id}=    Get From Dictionary    ${AttWorkFlowDriverDict}    id
+    ${AttWhiteListDict}=    utils.setFieldValueInDict    ${AttWhiteListDict}    owner_id    ${AttWorkFlowDriver_Id}
+    Log    ${AttWhiteListDict}
+    ${api_result_status}    ${api_result_json}=    restApi.ApiPostReturnJson    ATT_WHITELIST    ${AttWhiteListDict}
+    Should Be True    ${api_result_status}
+    ${AttWhiteList_Id}=    Get From Dictionary    ${api_result_json}    id
+    Set Global Variable    ${AttWhiteList_Id}
+    Set Global Variable    ${onu_device}
+
+Get White List
+    [Arguments]    ${listIndex}
+    Log    ${AttWhiteList_Id}
+    ${json_result}=    restApi.ApiChameleonGet    ATT_WHITELIST    ${AttWhiteList_Id}
+    Log    ${json_result}
+    ${AttWhiteListList} =    Get Variable Value    ${slist}
+    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    ${listIndex}
+    Log    ${AttWhiteListDict}
+    ${test_result}=    utils.compare_dict    ${AttWhiteListDict}    ${json_result}
+    Should Be True    ${test_result}
+
+Service Instance Status Check
+    [Arguments]    ${listIndex}
+    Set Global Variable    ${AttServiceInstance_Id}    ${EMPTY}
+    Log    ${AttServiceInstance_Id}
+    ${json_result}=    restApi.ApiGet    ATT_SERVICEINSTANCES
+    Log    ${json_result}
+    ${json_result_list}=    Get From dictionary    ${json_result}    items
+    ${getJsonDict}=    utils.getDictFromListOfDict    ${json_result_list}    serial_number    ${onu_device}
+    ${status}=  Get From Dictionary    ${getJsonDict}   valid 
+    ${authentication_status}=  Get From Dictionary    ${getJsonDict}   authentication_state
+    ${AttServiceInstance_Id}=    Get From Dictionary    ${getJsonDict}   id
+    Set Global Variable    ${AttServiceInstance_Id}
+    #Should Be Equal    ${status}   valid 
+    Should Be Equal    ${authentication_status}    AWAITING
+
+ONU Status Check
+    [Arguments]    ${listIndex}
+    ${json_result}=    restApi.ApiGet    ONU_DEVICE
+    Log    ${json_result}
+    ${json_result_list}=    Get From dictionary    ${json_result}    items
+    ${getJsonDict}=    utils.getDictFromListOfDict    ${json_result_list}    serial_number    ${onu_device}
+    ${operational_status}=  Get From Dictionary    ${getJsonDict}   oper_status
+    ${admin_status}=  Get From Dictionary    ${getJsonDict}   admin_state
+    Should Be Equal    ${operational_status}   DISABLED
+    Should Be Equal    ${admin_status}    DISABLED
diff --git a/src/test/cord-api/Tests/AttWhiteList-enableTests.txt b/src/test/cord-api/Tests/AttWhiteList-enableTests.txt
new file mode 100644
index 0000000..872b350
--- /dev/null
+++ b/src/test/cord-api/Tests/AttWhiteList-enableTests.txt
@@ -0,0 +1,97 @@
+*** Settings ***
+Documentation     Test to Configure White List
+Suite Setup       Read InputFile
+Test Template     Configuring White List
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../Framework/utils/utils.py
+Library           ../Framework/restApi.py
+
+*** Variables ***
+${PATHFILE}       ${CURDIR}/data/AttWhiteList.json
+
+*** Test Cases ***    TYPE                         LISTINDEX
+Test Create ONUWhiteList-1
+                      CREATE                       0
+Test Get ONUWhiteList-1
+                      RETRIEVE                     0
+Test Service Instance States
+                      STATUS_CHECK                 0
+Test ONU States
+                      ONU_STATUS                 0
+
+*** Keywords ***
+Read InputFile
+    ${AttWhiteListList}=    utils.jsonToList    ${PATHFILE}   AttWhiteListInfo 
+    Set Suite Variable    ${slist}    ${AttWhiteListList}
+    Set Global Variable    ${AttWorkFlowDriver_Id}    ${EMPTY}
+    Set Global Variable    ${AttWhiteList_Id}    ${EMPTY}
+    Set Global Variable    ${onu_device}    ALPHe3d1cfa7
+    Set Global Variable    ${AttServiceInstance_Id}    ${EMPTY}
+    Set Global Variable    ${authentication_status}    ${EMPTY}
+
+Configuring White List
+    [Arguments]    ${type}    ${listIndex}
+    Run Keyword If    "${type}" == "CREATE"    Post White List    ${listIndex}
+    Run Keyword If    "${type}" == "RETRIEVE"    Get White List    ${listIndex}
+    Run Keyword If    "${type}" == "STATUS_CHECK"    Service Instance Status Check    ${listIndex}
+    Run Keyword If    "${type}" == "ONU_STATUS"    ONU Status Check    ${listIndex}
+
+Post White List
+    [Arguments]    ${listIndex}
+    ${AttWhiteListList} =    Get Variable Value    ${slist}
+    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    ${listIndex}
+    ${onu_device}=   Get From Dictionary    ${AttWhiteListDict}    serial_number
+    Log    ${onu_device}
+    # Retrieve ATT Service Driver Id
+    ${api_getResult}=    restApi.ApiGet    ATT_SERVICE
+    ${AttWorkFlowDriverList}=    Get From Dictionary    ${api_getResult}    items
+    ${AttWorkFlowDriverDict}=    utils.getDictFromListOfDict    ${AttWorkFlowDriverList}    leaf_model_name    AttWorkflowDriverService
+    ${AttWorkFlowDriver_Id}=    Get From Dictionary    ${AttWorkFlowDriverDict}    id
+    ${AttWhiteListDict}=    utils.setFieldValueInDict    ${AttWhiteListDict}    owner_id    ${AttWorkFlowDriver_Id}
+    Log    ${AttWhiteListDict}
+    ${api_result_status}    ${api_result_json}=    restApi.ApiPostReturnJson    ATT_WHITELIST    ${AttWhiteListDict}
+    Should Be True    ${api_result_status}
+    ${AttWhiteList_Id}=    Get From Dictionary    ${api_result_json}    id
+    Set Global Variable    ${AttWhiteList_Id}
+    Set Global Variable    ${onu_device}
+
+Get White List
+    [Arguments]    ${listIndex}
+    Log    ${AttWhiteList_Id}
+    ${json_result}=    restApi.ApiChameleonGet    ATT_WHITELIST    ${AttWhiteList_Id}
+    Log    ${json_result}
+    ${AttWhiteListList} =    Get Variable Value    ${slist}
+    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    ${listIndex}
+    Log    ${AttWhiteListDict}
+    ${test_result}=    utils.compare_dict    ${AttWhiteListDict}    ${json_result}
+    Should Be True    ${test_result}
+
+Service Instance Status Check
+    [Arguments]    ${listIndex}
+    Set Global Variable    ${AttServiceInstance_Id}    ${EMPTY}
+    Log    ${AttServiceInstance_Id}
+    ${json_result}=    restApi.ApiGet    ATT_SERVICEINSTANTCES
+    Log    ${json_result}
+    ${json_result_list}=    Get From dictionary    ${json_result}    items
+    ${getJsonDict}=    utils.getDictFromListOfDict    ${json_result_list}    serial_number    ${onu_device}
+    ${status}=  Get From Dictionary    ${getJsonDict}   valid 
+    ${authentication_status}=  Get From Dictionary    ${getJsonDict}   authentication_state
+    ${AttServiceInstance_Id}=    Get From Dictionary    ${getJsonDict}   id
+    Set Global Variable    ${AttServiceInstance_Id}
+    Should Be Equal    ${status}   valid 
+    Should Be Equal    ${authentication_status}    AWAITING
+
+ONU Status Check
+    [Arguments]    ${listIndex}
+    ${json_result}=    restApi.ApiGet    ONU_DEVICE
+    Log    ${json_result}
+    ${json_result_list}=    Get From dictionary    ${json_result}    items
+    ${getJsonDict}=    utils.getDictFromListOfDict    ${json_result_list}    serial_number    ${onu_device}
+    ${operational_status}=  Get From Dictionary    ${getJsonDict}   oper_status
+    ${admin_status}=  Get From Dictionary    ${getJsonDict}   admin_state
+    Should Be Equal    ${operational_status}   ACTIVE
+    Should Be Equal    ${admin_status}    ENABLED
diff --git a/src/test/cord-api/Tests/AttWhiteList.txt b/src/test/cord-api/Tests/AttWhiteList.txt
new file mode 100644
index 0000000..19f305e
--- /dev/null
+++ b/src/test/cord-api/Tests/AttWhiteList.txt
@@ -0,0 +1,59 @@
+*** Settings ***
+Documentation     Test to Configure White List
+Suite Setup       Read InputFile
+Test Template     Configuring White List
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../Framework/utils/utils.py
+Library           ../Framework/restApi.py
+
+*** Variables ***
+${PATHFILE}       ${CURDIR}/data/AttWhiteList.json
+
+*** Test Cases ***    TYPE                         LISTINDEX
+Test Create ONUWhiteList-1
+                      CREATE                       0
+Test Get ONUWhiteList-1
+                      RETRIEVE                     0
+
+*** Keywords ***
+Read InputFile
+    ${AttWhiteListList}=    utils.jsonToList    ${PATHFILE}   AttWhiteListInfo 
+    Set Suite Variable    ${slist}    ${AttWhiteListList}
+    Set Global Variable    ${AttWorkFlowDriver_Id}    ${EMPTY}
+    Set Global Variable    ${AttWhiteList_Id}    ${EMPTY}
+
+Configuring White List
+    [Arguments]    ${type}    ${listIndex}
+    Run Keyword If    "${type}" == "CREATE"    Post White List    ${listIndex}
+    Run Keyword If    "${type}" == "RETRIEVE"    Get White List    ${listIndex}
+
+Post White List
+    [Arguments]    ${listIndex}
+    ${AttWhiteListList} =    Get Variable Value    ${slist}
+    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    ${listIndex}
+    # Retrieve ATT Service Driver Id
+    ${api_getResult}=    restApi.ApiGet    ATT_SERVICE
+    ${AttWorkFlowDriverList}=    Get From Dictionary    ${api_getResult}    items
+    ${AttWorkFlowDriverDict}=    utils.getDictFromListOfDict    ${AttWorkFlowDriverList}    leaf_model_name    AttWorkflowDriverService
+    ${AttWorkFlowDriver_Id}=    Get From Dictionary    ${AttWorkFlowDriverDict}    id
+    ${AttWhiteListDict}=    utils.setFieldValueInDict    ${AttWhiteListDict}    owner_id    ${AttWorkFlowDriver_Id}
+    Log    ${AttWhiteListDict}
+    ${api_result_status}    ${api_result_json}=    restApi.ApiPostReturnJson    ATT_WHITELIST    ${AttWhiteListDict}
+    Should Be True    ${api_result_status}
+    ${AttWhiteList_Id}=    Get From Dictionary    ${api_result_json}    id
+    Set Global Variable    ${AttWhiteList_Id}
+
+Get White List
+    [Arguments]    ${listIndex}
+    Log    ${AttWhiteList_Id}
+    ${json_result}=    restApi.ApiChameleonGet    ATT_WHITELIST    ${AttWhiteList_Id}
+    Log    ${json_result}
+    ${AttWhiteListList} =    Get Variable Value    ${slist}
+    ${AttWhiteListDict}=    utils.listToDict    ${AttWhiteListList}    ${listIndex}
+    Log    ${AttWhiteListDict}
+    ${test_result}=    utils.compare_dict    ${AttWhiteListDict}    ${json_result}
+    Should Be True    ${test_result}
diff --git a/src/test/cord-api/Tests/data/AttWhiteList.json b/src/test/cord-api/Tests/data/AttWhiteList.json
index 224e700..2e41d40 100644
--- a/src/test/cord-api/Tests/data/AttWhiteList.json
+++ b/src/test/cord-api/Tests/data/AttWhiteList.json
@@ -1,27 +1,27 @@
 {
-    "AttWhiteList" : [
+    "AttWhiteListInfo" : [
     {
             "serial_number": "ALPHe3d1cfa7",
             "device_id" : "of:000000000ac004da",
-            "pon_port_id" : "536870912",
+            "pon_port_id" : 536870912,
             "owner_id" : "1"
     },
     {
             "serial_number": "ALPHe3d1cea3",
             "device_id" : "of:000000000ac004da",
-            "pon_port_id" : "536870912",
+            "pon_port_id" : 536870912,
             "owner_id" : "1"
     },
     {
             "serial_number": "ALPHe3d1cf84",
             "device_id" : "of:000000000ac004da",
-            "pon_port_id" : "536870912",
+            "pon_port_id" : 536870912,
             "owner_id" : "1"
     },
     {
             "serial_number": "ALPHe3d1cee9",
             "device_id" : "of:000000000ac004da",
-            "pon_port_id" : "536870912",
+            "pon_port_id" : 536870912,
             "owner_id" : "1"
     }
 
diff --git a/src/test/cord-api/Tests/data/AttWorkFlowDriver.json b/src/test/cord-api/Tests/data/AttWorkFlowDriver.json
index 22572b7..86d0e4e 100644
--- a/src/test/cord-api/Tests/data/AttWorkFlowDriver.json
+++ b/src/test/cord-api/Tests/data/AttWorkFlowDriver.json
@@ -1,5 +1,5 @@
 {
-    "AttWorkFlowDriver" : [
+    "AttWorkFlowDriverInfo" : [
     {
             "name": "att-workflow-driver"
     }
diff --git a/src/test/cord-api/Tests/data/Att_RealOLTDevice.json b/src/test/cord-api/Tests/data/Att_RealOLTDevice.json
new file mode 100644
index 0000000..f61f5bb
--- /dev/null
+++ b/src/test/cord-api/Tests/data/Att_RealOLTDevice.json
@@ -0,0 +1,16 @@
+{
+    "VOLTDeviceInfo" : [
+    {
+            "device_type": "openolt",
+            "host": "10.192.4.218",
+            "port": 9191,
+            "switch_datapath_id": "of:0000cc37ab5b6da8",
+            "dp_id": "of:0000cc37ab5b6da8",
+            "switch_port": "7",
+            "outer_tpid": "0x8100",
+            "name": "olt-1",
+            "uplink": "128",
+            "volt_service_id": 2
+    }
+  ]
+}
diff --git a/src/test/cord-api/Tests/data/Subscriber_Att.json b/src/test/cord-api/Tests/data/Subscriber_Att.json
new file mode 100644
index 0000000..b2c1580
--- /dev/null
+++ b/src/test/cord-api/Tests/data/Subscriber_Att.json
@@ -0,0 +1,12 @@
+{
+    "SubscriberInfo" : [
+     {
+            "name": "My House-305",
+            "c_tag": 999,
+            "onu_device": "ALPHe3d1cfa7",
+            "nas_port_id": "PON 1/1/03/1:1.1.1",
+            "circuit_id": "foo",
+            "status": "pre-provisioned"
+     }
+  ]
+}