Support password-based ssh auth
[validation.git] / tests / os / vuls / vuls.robot
index d79fab9..3c40181 100644 (file)
@@ -20,7 +20,9 @@ Library           SSHLibrary
 Library           OperatingSystem
 Library           BuiltIn
 Suite Setup       Open Connection And Log In
-Suite Teardown    Close All Connections
+Suite Teardown    Run Keywords
+...               Cleanup ssh
+...               Close All Connections
 
 *** Test Cases ***
 Run Vuls test
@@ -41,6 +43,8 @@ Run Vuls test
 
     ${os} =  SSHLibrary.Execute Command   source /etc/os-release && echo $ID
 
+    Run Keyword IF  '${SSH_KEYFILE}' == 'None'  Create ssh_keyfile
+
     ${rc} =  Run And Return Rc  vuls scan -config ${CURDIR}/config.toml -ssh-config
     Should Be Equal As Integers  ${rc}  0
 
@@ -65,6 +69,19 @@ Run vuls for centos
     Append To File  ${LOG_PATH}/vuls.log  ${output}${\n}
     Set Global Variable  ${LOG}  ${output}
 
+Create ssh_keyfile
+    ${rc} =  Run And Return Rc  ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N ""
+    Should Be Equal As Integers  ${rc}  0
+
+    ${rc} =  Run and Return Rc  sshpass -p '${PASSWORD}' ssh-copy-id -i /root/.ssh/id_rsa.pub '${USERNAME}'@'${HOST}'
+    Should Be Equal As Integers  ${rc}  0
+
+Cleanup ssh
+    ${rc}  ${idssh} =  Run And Return Rc And Output  cat /root/.ssh/id_rsa.pub
+    Should Be Equal As Integers  ${rc}  0
+    ${rc} =  Run And Return Rc  ssh '${USERNAME}'@'${HOST}' "sed -i 's#${idssh}##' ~/.ssh/authorized_keys"
+    Should Be Equal As Integers  ${rc}  0
+
 Open Connection And Log In
     Open Connection  ${HOST}
-    Login With Public Key  ${USERNAME}  ${SSH_KEYFILE}
+    Run Keyword IF  '${SSH_KEYFILE}' != 'None'  Login With Public Key  ${USERNAME}  ${SSH_KEYFILE}  ELSE IF  '${PASSWORD}' != 'None'  Login  ${USERNAME}  ${PASSWORD}  ELSE  FAIL