Adding CSIT test for SMS

Adding CSIT tests for Secret Management
Service under AAF. This tests the CRUD
operations for SecretDomain and Secret

Issue-ID: AAF-189
Change-Id: I3dd070fc30d8504593b933d7b623e6a187399444
Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
diff --git a/test/csit/plans/aaf/sms-test-plan/setup.sh b/test/csit/plans/aaf/sms-test-plan/setup.sh
new file mode 100755
index 0000000..5d1973a
--- /dev/null
+++ b/test/csit/plans/aaf/sms-test-plan/setup.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+#
+# Copyright 2018 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Not sure why this is needed.
+source ${SCRIPTS}/common_functions.sh
+
+CONFIG_FILE=$(pwd)/config/smsconfig.json
+
+mkdir -p $(pwd)/config
+
+cat << EOF > $CONFIG_FILE
+{
+    "cafile": "auth/selfsignedca.pem",
+    "servercert": "auth/server.cert",
+    "serverkey":  "auth/server.key",
+
+    "vaultaddress":     "http://$HOSTNAME:8200",
+    "vaulttoken":       "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
+    "disable_tls": true
+}
+EOF
+
+docker login -u docker -p docker nexus3.onap.org:10001
+docker pull nexus3.onap.org:10001/onap/aaf/sms
+docker pull docker.io/vault:0.9.5
+#
+# Running vault in dev server mode here for CSIT
+# In HELM it runs in production mode
+#
+docker run -e "VAULT_DEV_ROOT_TOKEN_ID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" \
+           -e SKIP_SETCAP=true \
+           --name vault -d -p 8200:8200 vault:0.9.5
+docker run --workdir /sms -v "$(pwd)"/config/smsconfig.json:/sms/smsconfig.json \
+           --name sms -d -p 10443:10443 nexus3.onap.org:10001/onap/aaf/sms
+
+echo "###### WAITING FOR ALL CONTAINERS TO COME UP"
+sleep 10
+
+#
+# add here all ROBOT_VARIABLES settings
+#
+echo "# sms robot variables settings";
+ROBOT_VARIABLES="-v SMS_HOSTNAME:http://localhost -v SMS_PORT:10443"
+
+echo ${ROBOT_VARIABLES}
diff --git a/test/csit/plans/aaf/sms-test-plan/teardown.sh b/test/csit/plans/aaf/sms-test-plan/teardown.sh
new file mode 100644
index 0000000..72f134f
--- /dev/null
+++ b/test/csit/plans/aaf/sms-test-plan/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2018 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+rm -rf config
+docker stop sms vault
+docker rm sms vault
+docker rmi nexus3.onap.org:10001/onap/aaf/sms
+docker rmi docker.io/vault:0.9.5
diff --git a/test/csit/plans/aaf/sms-test-plan/testplan.txt b/test/csit/plans/aaf/sms-test-plan/testplan.txt
new file mode 100644
index 0000000..c2b3b7b
--- /dev/null
+++ b/test/csit/plans/aaf/sms-test-plan/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+aaf/aaf-sms-suite
\ No newline at end of file
diff --git a/test/csit/tests/aaf/aaf-sms-suite/__init__.robot b/test/csit/tests/aaf/aaf-sms-suite/__init__.robot
new file mode 100644
index 0000000..d1da7f3
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    Integration - Suite 1
\ No newline at end of file
diff --git a/test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot b/test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot
new file mode 100644
index 0000000..1302abc
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot
@@ -0,0 +1,94 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       json
+
+*** Variables ***
+${MESSAGE}    {"ping": "ok"}
+
+#global variables
+${generatedAID}
+
+*** Test Cases ***
+SMS Check SMS API Docker Container
+    [Documentation]    Checks if SMS docker container is running
+    ${rc}    ${output}=    Run and Return RC and Output    docker ps
+    Log To Console              *********************
+    Log To Console              retrurn_code = ${rc}
+    Log To Console              output = ${output}
+    Should Be Equal As Integers    ${rc}    0
+    Should Contain    ${output}    nexus3.onap.org:10001/onap/aaf/sms
+
+SMS GetStatus
+    [Documentation]    Gets Backend Status
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        SMS   /v1/sms/status   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+SMS CreateDomain
+    [Documentation]    Creates a Secret Domain to hold Secrets
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    ${data}          Get Binary File    ${CURDIR}${/}data${/}create_domain.json
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        SMS   /v1/sms/domain   data=${data} headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    201
+
+SMS CreateSecret
+    [Documentation]  Create A Secret within the Domain
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    ${data}          Get Binary File    ${CURDIR}${/}data${/}create_secret.json
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request       SMS   /v1/sms/domain/curltestdomain/secret   data=${data}  headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    201
+
+SMS ListSecret
+    [Documentation]    Lists all Secret Names within Domain
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        SMS   /v1/sms/domain/curltestdomain/secret   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+SMS GetSecret
+    [Documentation]    Gets a single Secret with Values from Domain
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        SMS   /v1/sms/domain/curltestdomain/secret/curltestsecret1   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+SMS DeleteSecret
+    [Documentation]    Deletes a Secret referenced by Name from Domain
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Delete Request        SMS   /v1/sms/domain/curltestdomain/secret/curltestsecret1   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    204
+
+SMS DeleteDomain
+    [Documentation]    Deletes a Domain referenced by Name
+    Create Session   SMS            ${SMS_HOSTNAME}:${SMS_PORT}
+    &{headers}=      Create Dictionary  Content-Type=application/json  Accept=application/json
+    ${resp}=         Delete Request        SMS   /v1/sms/domain/curltestdomain   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    204
+
+*** Keywords ***
diff --git a/test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json b/test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json
new file mode 100644
index 0000000..176f444
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json
@@ -0,0 +1,3 @@
+{
+    "name":     "curltestdomain"
+}
diff --git a/test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json b/test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json
new file mode 100644
index 0000000..d99f4e2
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json
@@ -0,0 +1,12 @@
+{
+    "name":     "curltestsecret1",
+    "values":   {
+      "name":"rah",
+      "age":35,
+      "map":{
+        "mapkey1": "mapvalue1",
+        "mapkey2": "mapvalue2"
+      },
+      "array":["golang","c++","java","python"]
+    }
+}