SEBA-527 initial xos-core/testservicesync tests

Change-Id: I6ad7ca7f4c354e0fef912059013a5d9bb141833c
diff --git a/src/test/cord-api/Tests/xos-test-service/test-service.robot b/src/test/cord-api/Tests/xos-test-service/test-service.robot
new file mode 100644
index 0000000..013ead4
--- /dev/null
+++ b/src/test/cord-api/Tests/xos-test-service/test-service.robot
@@ -0,0 +1,75 @@
+# XOS Core Test
+#
+# This test will validate the xos-core's sync steps and model policies using the TestService
+#
+
+*** Settings ***
+Documentation     Test migration of a Service in the core
+Library           RequestsLibrary
+Library           HttpLibrary.HTTP
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           DateTime
+Library           ../../Framework/utils/utils.py
+Resource          ../../Framework/utils/utils.robot
+Library           ../../Framework/restApi.py
+Variables         ../../Properties/RestApiProperties.py
+Suite Setup       Setup
+Suite Teardown    Teardown
+
+*** Variables ***
+${testservice_api}             /xosapi/v1/testservice/testserviceservices
+${testservice_si}              /xosapi/v1/testservice/testserviceserviceinstances
+${testservice_duplicate_si}    /xosapi/v1/testservice/testserviceduplicateserviceinstances
+
+*** Test Cases ***
+Create Test Model with No Duplicate
+    [Documentation]    Create a testservice service instance with no duplicate
+    [Tags]    create
+    ${model_name}=    Generate Random Value    string
+    ${data}=    Create Dictionary    name=${model_name}    create_duplicate=${false}
+    ${resp}=    CORD Post    ${testservice_si}     ${data}
+    ${json_content}=    To Json    ${resp.content}
+    ${test_serviceinstance_id}=    Get From Dictionary    ${json_content}    id
+    Set Suite Variable    ${test_serviceinstance_id}
+    Set Suite Variable    ${model_name}
+    Repeat Keyword    10s    Validate Duplicate Model    false
+
+Update Model with Duplicate
+    [Tags]    update
+    CORD Put    ${testservice_si}     {'create_duplicate': ${true}}    ${test_serviceinstance_id}
+    Wait Until Keyword Succeeds    60s    2s    Validate Duplicate Model    true
+
+Revert Model
+    [Tags]    revert    notready
+    CORD Put    ${testservice_si}     {'create_duplicate': ${false}}    ${test_serviceinstance_id}
+    Wait Until Keyword Succeeds    60s    2s    Validate Duplicate Model    false
+
+*** Keywords ***
+Setup
+    ${auth} =    Create List    ${XOS_USER}    ${XOS_PASSWD}
+    ${HEADERS}    Create Dictionary    Content-Type=application/json    allow_modify_feedback=True
+    Create Session    ${server_ip}    http://${server_ip}:${server_port}    auth=${AUTH}    headers=${HEADERS}
+    # create test-service
+    ${data}=    Create Dictionary    name=xos-core-test-service-test
+    ${resp}=    CORD Post    ${testservice_api}    ${data}
+
+Teardown
+    [Documentation]    Delete all https sessions
+    Clean Up Objects    ${testservice_si}
+    Clean Up Objects    ${testservice_duplicate_si}
+    Clean Up Objects    ${testservice_api}
+    Delete All Sessions
+
+Validate Duplicate Model
+    [Documentation]    Checks if 'testserviceduplicateserviceinstances' was created or not
+    [Arguments]    ${exists}=false
+    ${resp}=    Wait Until Keyword Succeeds    60s    2s    CORD Get    ${testservice_duplicate_si}
+    ${jsondata}=    To Json    ${resp.content}
+    Run Keyword If    '${exists}' == 'false'    Should Be Empty    ${jsondata['items']}    ELSE    Verify Exists    ${jsondata}
+
+Verify Exists
+    [Arguments]    ${data}
+    ${dict}=    Get From List    ${data['items']}    0
+    Should Be Equal As Strings    ${dict['name']}    ${model_name}