Subscriber API Framework and Robot testcase files

Change-Id: Ie46904ce417ee43d1fc4b2a7c188bba74e0ef030
diff --git a/src/test/cord-api/Tests/SubscriberTest.txt b/src/test/cord-api/Tests/SubscriberTest.txt
new file mode 100644
index 0000000..ea06113
--- /dev/null
+++ b/src/test/cord-api/Tests/SubscriberTest.txt
@@ -0,0 +1,106 @@
+*** Settings ***
+Documentation     Test suite for Subscriber verification
+Suite Setup       Read InputFile
+Test Template     Verify Subscriber functionality
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../Framework/utils/utils.py
+Library           ../Framework/restApi.py
+
+*** Variables ***
+${USER}           admin
+${PASSWORD}       admin
+${PATHFILE}       ${CURDIR}/data/Subscriber.json
+${PATHFILE2}      ${CURDIR}/data/putSubscriber.json
+
+*** Test Cases ***    TYPE        LISTINDEX
+Test Subscriber-1     CREATE      0
+
+Test Get_Subscriber-1
+                      RETRIEVE    0
+
+Test Edit Subscriber-1
+                      PUT         0
+
+Test Delete Subscriber Data-1
+                      DELETE      0
+
+Test Subscriber-2     CREATE      1
+
+Test Get_Subscriber-2
+                      RETRIEVE    1
+
+Test Edit Subscriber Data-2
+                      PUT         1
+
+Test Delete Subscriber-2
+                      DELETE      1
+
+Test Subscriber-3     CREATE      2
+
+Test Get_Subcriber-3
+                      RETRIEVE    2
+
+Test Edit Subscriber-3
+                      PUT         2
+
+Test Delete Subscriber-3
+                      DELETE      2
+
+*** Keywords ***
+Read InputFile
+    ${subscriberList} =    utils.jsonToList    ${PATHFILE}    SubscriberInfo
+    Set Suite Variable    ${slist}    ${subscriberList}
+    ${putSubscriberList}=    utils.jsonToList    ${PATHFILE2}    SubscriberInfo
+    Set Suite Variable    ${putList}    ${putSubscriberList}
+
+Verify Subscriber functionality
+    [Arguments]    ${type}    ${listIndex}
+    Run Keyword If    "${type}" == "CREATE"    Test Post Subscriber API    ${listIndex}
+    Run Keyword If    "${type}" == "RETRIEVE"    Test Get Subscriber API    ${listIndex}
+    Run Keyword If    "${type}" == "DELETE"    Test Delete Subscriber API    ${listIndex}
+    Run Keyword If    "${type}" == "PUT"    Test Edit Subscriber API    ${listIndex}
+
+Test Post Subscriber API
+    [Arguments]    ${listIndex}
+    ${subscriberList} =    Get Variable Value    ${slist}
+    ${subscriberDict}=    utils.listToDict    ${subscriberList}    ${listIndex}
+    ${api_result}=    restApi.ApiPost    TENANT_SUBSCRIBER    ${subscriberDict}
+    Should Be True    ${api_result}
+
+Test Get Subscriber API
+    [Arguments]    ${listIndex}
+    ${json_result}=    restApi.ApiGet    TENANT_SUBSCRIBER
+    Log    ${json_result}
+    ${subscriberList}=    Get Variable Value    ${slist}
+    ${subscriberDict}=    utils.listToDict    ${subscriberList}    ${listIndex}
+    ${AccountNum}=    restApi.getAccountNum    ${subscriberDict}
+    ${getJsonDict}=    restApi.getJsonDictOfAcctNum    ${json_result}    ${AccountNum}
+    ${test_result}=    utils.compare_dict    ${subscriberDict}    ${getJsonDict}
+    Should Be True    ${test_result}
+
+Test Edit Subscriber API
+    [Arguments]    ${listIndex}
+    ${get_result}=    restApi.ApiGet    TENANT_SUBSCRIBER
+    ${putSubscriberList}=    Get Variable Value    ${putList}
+    ${putSubscriberDict}=    utils.listToDict    ${putSubscriberList}    ${listIndex}
+    ${AcctNum}=    restApi.getAccountNum    ${putSubscriberDict}
+    ${subscriberID}=    restApi.getSubscriberId    ${get_result}    ${AcctNum}
+    ${api_result}=    restApi.ApiPut    TENANT_SUBSCRIBER    ${putSubscriberDict}    ${subscriberID}
+    Should Be True    ${api_result}
+    ${getResultAfterPut}=    restApi.ApiGet    TENANT_SUBSCRIBER    ${subscriberID}
+    ${test_result}=    utils.compare_dict    ${putSubscriberDict}    ${getResultAfterPut}
+    Should Be True    ${test_result}
+
+Test Delete Subscriber API
+    [Arguments]    ${listIndex}
+    ${json_result}=    restApi.ApiGet    TENANT_SUBSCRIBER
+    ${subscriberList}=    Get Variable Value    ${slist}
+    ${subscriberDict}=    utils.listToDict    ${subscriberList}    ${listIndex}
+    ${AcctNum}=    restApi.getAccountNum    ${subscriberDict}
+    ${subscriberId}=    restApi.getSubscriberId    ${json_result}    ${AcctNum}
+    ${test_result}=    restApi.ApiDelete    TENANT_SUBSCRIBER    ${subscriberId}
+    Should Be True    ${test_result}
diff --git a/src/test/cord-api/Tests/data/Subscriber.json b/src/test/cord-api/Tests/data/Subscriber.json
index db9685f..8605026 100644
--- a/src/test/cord-api/Tests/data/Subscriber.json
+++ b/src/test/cord-api/Tests/data/Subscriber.json
@@ -1,2 +1,44 @@
-# Test data
-
+{
+    "SubscriberInfo" : [
+    {
+        "humanReadableName": "cordSubscriber-2",
+        "id": 2,
+        "features": {
+            "cdn": true,
+            "uplink_speed": 1000000000,
+            "downlink_speed": 1000000000,
+            "uverse": true,
+            "status": "enabled"
+        },
+        "identity": {
+            "account_num": "20",
+            "name": "My House"
+        }
+    },
+    {
+        "humanReadableName": "cordSubscriber-3",
+        "id": 3,
+        "features": {
+            "cdn": false,
+            "uplink_speed": 500000000,
+            "downlink_speed": 500000000,
+            "uverse": false,
+            "status": "enabled"
+        },
+        "identity": {
+            "account_num": "21",
+            "name": "My House"
+        }
+    },
+    {
+        "features": {
+            "cdn": true,
+            "uplink_speed": 500000000
+        },
+        "identity": {
+            "account_num": "22",
+            "name": "My House"
+        }
+    }
+  ]
+}
diff --git a/src/test/cord-api/Tests/data/putSubscriber.json b/src/test/cord-api/Tests/data/putSubscriber.json
new file mode 100644
index 0000000..d73e7a2
--- /dev/null
+++ b/src/test/cord-api/Tests/data/putSubscriber.json
@@ -0,0 +1,34 @@
+{
+    "SubscriberInfo" : [
+    {
+        "features": {
+            "uplink_speed": 2000000000,
+            "downlink_speed": 2000000000
+        },
+        "identity": {
+            "account_num": "20",
+            "name": "My House - edited"
+        }
+    },
+    {
+        "features": {
+            "cdn": true,
+            "downlink_speed": 100000000,
+            "status": "enabled"
+        },
+        "identity": {
+            "account_num": "21",
+            "name": "My House2 - Edited"
+        }
+    },
+    {
+        "features": {
+            "cdn": false
+        },
+        "identity": {
+            "account_num": "22",
+            "name": "My House3 - Edited"
+        }
+    }
+  ]
+}