Change go version for vuls tests
[validation.git] / tests / os / vuls / vuls.robot
1 ##############################################################################
2 # Copyright (c) 2019 AT&T Intellectual Property.                             #
3 # Copyright (c) 2019 Nokia.                                                  #
4 #                                                                            #
5 # Licensed under the Apache License, Version 2.0 (the "License");            #
6 # you maynot use this file except in compliance with the License.            #
7 #                                                                            #
8 # You may obtain a copy of the License at                                    #
9 #       http://www.apache.org/licenses/LICENSE-2.0                           #
10 #                                                                            #
11 # Unless required by applicable law or agreed to in writing, software        #
12 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT  #
13 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.           #
14 # See the License for the specific language governing permissions and        #
15 # limitations under the License.                                             #
16 ##############################################################################
17
18 *** Settings ***
19 Library           SSHLibrary
20 Library           OperatingSystem
21 Library           BuiltIn
22 Suite Setup       Open Connection And Log In
23 Suite Teardown    Run Keywords
24 ...               Cleanup ssh
25 ...               Close All Connections
26
27 *** Test Cases ***
28 Run Vuls test
29     Set Environment Variable  GOROOT  /root/go
30     Set Environment Variable  GOPATH  /root/go/src/github.com
31     Set Environment Variable  PATH  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/go/bin:/root/go/src/github.com/bin
32     Set Environment Variable  LC_ALL  en_US.UTF-8
33     Set Environment Variable  LANG  en_US.UTF-8
34
35     ${rc} =  Run And Return Rc  install -D ${CURDIR}/config /root/.ssh/
36     Should Be Equal As Integers  ${rc}  0
37
38     ${rc} =  Run And Return Rc  sed -i -e 's/HOST/${HOST}/g' -e 's/USERNAME/${USERNAME}/g' ${CURDIR}/config.toml
39     Should Be Equal As Integers  ${rc}  0
40
41     ${rc} =  Run And Return Rc  tar xvzf ${CURDIR}/db.tar.gz -C ${CURDIR}
42     Should Be Equal As Integers  ${rc}  0
43
44     ${os} =  SSHLibrary.Execute Command   source /etc/os-release && echo $ID
45
46     Run Keyword IF  '${SSH_KEYFILE}' == 'None'  Create ssh_keyfile
47
48     ${rc} =  Run And Return Rc  vuls scan -config ${CURDIR}/config.toml -ssh-config
49     Should Be Equal As Integers  ${rc}  0
50
51     Run Keyword IF  '${os}' == 'ubuntu'  Run vuls for ubuntu  ELSE IF  '${os}' == 'centos'  Run vuls for centos  ELSE  FAIL  Distro '${os}' not supported
52
53     ${status} =  Evaluate  "Total: 0" in """${LOG}"""
54     Run Keyword If  '${status}' == 'False'  FAIL  Vulnerabilities discovered
55     ...                     non-critical
56
57 *** Keywords ***
58 Run vuls for ubuntu
59     ${os_version} =  SSHLibrary.Execute Command  source /etc/os-release && echo $VERSION_ID | cut -d '.' -f1
60
61     ${rc}  ${output} =  Run And Return Rc And Output  vuls report -config ${CURDIR}/config.toml -cvedb-sqlite3-path=${CURDIR}/cve.sqlite3 -ovaldb-sqlite3-path=${CURDIR}/oval_ubuntu_${os_version}.sqlite3
62     Should Be Equal As Integers  ${rc}  0
63     Append To File  ${LOG_PATH}/vuls.log  ${output}${\n}
64     Set Global Variable  ${LOG}  ${output}
65
66 Run vuls for centos
67     ${rc}  ${output} =  Run And Return Rc And Output  vuls report -config ${CURDIR}/config.toml -cvedb-sqlite3-path=${CURDIR}/cve.sqlite3 -ovaldb-sqlite3-path=${CURDIR}/oval_centos.sqlite3 -gostdb-sqlite3-path=${CURDIR}/gost_centos.sqlite3
68     Should Be Equal As Integers  ${rc}  0
69     Append To File  ${LOG_PATH}/vuls.log  ${output}${\n}
70     Set Global Variable  ${LOG}  ${output}
71
72 Create ssh_keyfile
73     ${rc} =  Run And Return Rc  ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N ""
74     Should Be Equal As Integers  ${rc}  0
75
76     ${rc} =  Run and Return Rc  sshpass -p '${PASSWORD}' ssh-copy-id -i /root/.ssh/id_rsa.pub '${USERNAME}'@'${HOST}'
77     Should Be Equal As Integers  ${rc}  0
78
79 Cleanup ssh
80     ${rc}  ${idssh} =  Run And Return Rc And Output  cat /root/.ssh/id_rsa.pub
81     Should Be Equal As Integers  ${rc}  0
82     ${rc} =  Run And Return Rc  ssh '${USERNAME}'@'${HOST}' "sed -i 's#${idssh}##' ~/.ssh/authorized_keys"
83     Should Be Equal As Integers  ${rc}  0
84
85 Open Connection And Log In
86     Open Connection  ${HOST}
87     Run Keyword IF  '${SSH_KEYFILE}' != 'None'  Login With Public Key  ${USERNAME}  ${SSH_KEYFILE}  ELSE IF  '${PASSWORD}' != 'None'  Login  ${USERNAME}  ${PASSWORD}  ELSE  FAIL