Add Robot test for validating Helm charts
[validation.git] / tests / helm / helm_chart.resource
diff --git a/tests/helm/helm_chart.resource b/tests/helm/helm_chart.resource
new file mode 100644 (file)
index 0000000..4657ba6
--- /dev/null
@@ -0,0 +1,71 @@
+##############################################################################
+# Copyright (c) 2019 AT&T Intellectual Property.                             #
+# Copyright (c) 2019 Nokia.                                                  #
+#                                                                            #
+# Licensed under the Apache License, Version 2.0 (the "License");            #
+# you maynot 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.                                             #
+##############################################################################
+
+
+*** Settings ***
+Library            SSHLibrary
+Library            String
+
+
+*** Variables ***
+${REPORTDIR}       ${LOG_PATH}${/}${SUITE_NAME.replace(' ','_')}
+${CHARTDIR}        /tmp/helm-chart
+${SERVECMD}        helm serve --repo-path /home/${USERNAME}/.helm/repository/local
+
+
+*** Keywords ***
+Open Connection And Log In
+    Open Connection        ${HOST}
+    Login With Public Key  ${USERNAME}  ${SSH_KEYFILE}
+
+Start Local Chart Repository Server
+    Stop Local Chart Repository Server
+    Start Command          ${SERVECMD}
+    ${rc}=                 Execute Command  pgrep -xf "${SERVECMD}"
+    ...                      return_stdout=False
+    ...                      return_rc=True
+    Should Be Equal As Integers  ${rc}  0
+
+Stop Local Chart Repository Server
+    Execute Command  pkill -xf "${SERVECMD}"
+
+List Charts In Repositories
+    ${stdout}=             Execute Command  helm search --regexp . | tail -n +2 | cut -f1
+    @{CHARTS}=             Split String  ${stdout}
+    Set Suite Variable     @{CHARTS}
+
+Fetch Charts
+    Execute Command        rm -r ${CHARTDIR}
+    Execute Command        mkdir -p ${CHARTDIR}
+    :FOR  ${chart}  IN  @{CHARTS}
+    \   ${rc}=             Execute Command  helm fetch ${chart} -d ${CHARTDIR}
+        ...                  return_stdout=False
+        ...                  return_rc=True
+    \   Should Be Equal As Integers  ${rc}  0
+
+Lint Charts
+    @{files}=              List Files In Directory  ${CHARTDIR}
+    :FOR  ${file}  IN  @{files}
+    \   ${stdout}=  Execute Command  helm lint ${CHARTDIR}/${file}
+    \   Should Contain  ${stdout}  1 chart(s) linted, no failures
+
+Simulate Install
+    :FOR  ${chart}  IN  @{CHARTS}
+    \   ${rc}=             Execute Command  helm install --dry-run ${chart}
+        ...                  return_stdout=False
+        ...                  return_rc=True
+    \   Should Be Equal As Integers  ${rc}  0