| |
@@ -0,0 +1,130 @@
|
| |
+ #!/bin/bash
|
| |
+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
| |
+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| |
+ #
|
| |
+ # runtest.sh of /CoreOS/curl/Sanity/scp-and-sftp-download-test
|
| |
+ # Description: downloads test file through scp and sftp
|
| |
+ # Author: Karel Srot <ksrot@redhat.com>
|
| |
+ #
|
| |
+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| |
+ #
|
| |
+ # Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
| |
+ #
|
| |
+ # This copyrighted material is made available to anyone wishing
|
| |
+ # to use, modify, copy, or redistribute it subject to the terms
|
| |
+ # and conditions of the GNU General Public License version 2.
|
| |
+ #
|
| |
+ # This program is distributed in the hope that it will be
|
| |
+ # useful, but WITHOUT ANY WARRANTY; without even the implied
|
| |
+ # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
| |
+ # PURPOSE. See the GNU General Public License for more details.
|
| |
+ #
|
| |
+ # You should have received a copy of the GNU General Public
|
| |
+ # License along with this program; if not, write to the Free
|
| |
+ # Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
| |
+ # Boston, MA 02110-1301, USA.
|
| |
+ #
|
| |
+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| |
+
|
| |
+ # Include Beaker environment
|
| |
+ . /usr/bin/rhts-environment.sh
|
| |
+ . /usr/lib/beakerlib/beakerlib.sh
|
| |
+
|
| |
+ PACKAGE="curl"
|
| |
+
|
| |
+ # GLOBAL/ENVIRONMENT VARIABLE:
|
| |
+ # PUBKEY_PARAM
|
| |
+
|
| |
+ if [ "$PUBKEY_PARAM" == 'none' ]; then
|
| |
+ PUBKEY_PARAM=""
|
| |
+ elif [ "$PUBKEY_PARAM" == 'empty' ]; then
|
| |
+ PUBKEY_PARAM="--pubkey ''"
|
| |
+ else
|
| |
+ PUBKEY_PARAM='--pubkey /root/.ssh/id_rsa.pub'
|
| |
+ fi
|
| |
+
|
| |
+ FILESIZE=200 #MB
|
| |
+ OPTIONS=""
|
| |
+ rlIsRHEL 7 && OPTIONS="--insecure"
|
| |
+
|
| |
+ rlJournalStart
|
| |
+ rlPhaseStartSetup
|
| |
+ rlAssertRpm $PACKAGE
|
| |
+ rlFileBackup --clean /root/.ssh/known_hosts /root/.ssh
|
| |
+ rlFileBackup --clean /etc/ssh/sshd_config
|
| |
+ rlRun "useradd -m curltestuser"
|
| |
+
|
| |
+ # In FIPS-140 we need to explicitly allow one of libssh2-implemented
|
| |
+ # Kex algorithms (eg. DH14-SHA1).
|
| |
+ rlRun "echo 'KexAlgorithms +diffie-hellman-group14-sha1' >> /etc/ssh/sshd_config" 0
|
| |
+ rlServiceStop "sshd"
|
| |
+ rlRun "service sshd start && sleep 5" 0
|
| |
+
|
| |
+ # file for download test
|
| |
+ rlRun "su - curltestuser -c 'dd if=/dev/zero of=testfile bs=1M count=200'" 0 "Creating $FILESIZE MB large test file"
|
| |
+ SUM=`sha256sum /home/curltestuser/testfile | cut -d ' ' -f 1`
|
| |
+ rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
| |
+ rlRun "pushd $TmpDir"
|
| |
+ rlRun "rm -vf /root/.ssh/*"
|
| |
+ rlRun "ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''" 0 "Generate ssh key"
|
| |
+ rlRun "mkdir /home/curltestuser/.ssh && cat /root/.ssh/id_rsa.pub > /home/curltestuser/.ssh/authorized_keys && chown -R curltestuser.curltestuser /home/curltestuser/.ssh/" 0 "Save the key to .ssh/authorized_keys"
|
| |
+
|
| |
+ # this is a workaround as libssh2 is not able to use newer hashes
|
| |
+ #rlRun "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/root/.ssh/known_hosts curltestuser@localhost 'exit'" 0 "First ssh login to add localhost to known_hosts"
|
| |
+ rlRun "ssh-keyscan localhost >>/root/.ssh/known_hosts"
|
| |
+
|
| |
+ # files for upload test
|
| |
+ rlRun "dd if=/dev/zero of=uploadfile1 bs=1M count=50" 0 "Creating 50 MB large test file"
|
| |
+ UPSUM1=`sha256sum uploadfile1 | cut -d ' ' -f 1`
|
| |
+ rlRun "dd if=/dev/zero of=uploadfile2 bs=1M count=20" 0 "Creating 20 MB large test file"
|
| |
+ UPSUM2=`sha256sum uploadfile2 | cut -d ' ' -f 1`
|
| |
+ rlPhaseEnd
|
| |
+
|
| |
+ rlPhaseStartTest "scp download test"
|
| |
+ rlRun "curl -o ./scp_file -u curltestuser: --key /root/.ssh/id_rsa $PUBKEY_PARAM $OPTIONS scp://localhost/home/curltestuser/testfile" 0 "Initiate curl scp download"
|
| |
+ rlAssertExists scp_file
|
| |
+ SCPSUM=`sha256sum ./scp_file | cut -d ' ' -f 1`
|
| |
+ rlAssertEquals "Checking that whole file was properly downloaded" $SUM $SCPSUM
|
| |
+ rm -f ./scp_file
|
| |
+ rlPhaseEnd
|
| |
+
|
| |
+ rlPhaseStartTest "sftp download test"
|
| |
+ rlRun "curl -o ./sftp_file -u curltestuser: --key /root/.ssh/id_rsa $PUBKEY_PARAM $OPTIONS sftp://localhost/home/curltestuser/testfile" 0 "Initiate curl scp download"
|
| |
+ rlAssertExists sftp_file
|
| |
+ SFTPSUM=`sha256sum ./sftp_file | cut -d ' ' -f 1`
|
| |
+ rlAssertEquals "Checking that whole file was properly downloaded" $SUM $SFTPSUM
|
| |
+ rm -f ./sftp_file
|
| |
+ rlPhaseEnd
|
| |
+
|
| |
+ rlPhaseStartTest "scp upload test"
|
| |
+ rlRun "curl -T '{uploadfile1,uploadfile2}' scp://localhost/home/curltestuser/ -u curltestuser: --key /root/.ssh/id_rsa $PUBKEY_PARAM $OPTIONS" 0 "Initiate curl scp upload"
|
| |
+ rlAssertExists /home/curltestuser/uploadfile1
|
| |
+ rlAssertExists /home/curltestuser/uploadfile2
|
| |
+ SCPUPSUM1=`sha256sum /home/curltestuser/uploadfile1 | cut -d ' ' -f 1`
|
| |
+ SCPUPSUM2=`sha256sum /home/curltestuser/uploadfile2 | cut -d ' ' -f 1`
|
| |
+ rlAssertEquals "Checking that 1st file was properly uploaded" ${UPSUM1} ${SCPUPSUM1}
|
| |
+ rlAssertEquals "Checking that 2nd file was properly uploaded" ${UPSUM2} ${SCPUPSUM2}
|
| |
+ rm -f /home/curltestuser/uploadfile1 /home/curltestuser/uploadfile2
|
| |
+ rlPhaseEnd
|
| |
+
|
| |
+ rlPhaseStartTest "sftp upload test"
|
| |
+ rlRun "curl -T '{uploadfile1,uploadfile2}' sftp://localhost/home/curltestuser/ -u curltestuser: --key /root/.ssh/id_rsa $PUBKEY_PARAM $OPTIONS" 0 "Initiate curl sftp upload"
|
| |
+ rlAssertExists /home/curltestuser/uploadfile1
|
| |
+ rlAssertExists /home/curltestuser/uploadfile2
|
| |
+ SFTPUPSUM1=`sha256sum /home/curltestuser/uploadfile1 | cut -d ' ' -f 1`
|
| |
+ SFTPUPSUM2=`sha256sum /home/curltestuser/uploadfile2 | cut -d ' ' -f 1`
|
| |
+ rlAssertEquals "Checking that 1st file was properly uploaded" ${UPSUM1} ${SFTPUPSUM1}
|
| |
+ rlAssertEquals "Checking that 2nd file was properly uploaded" ${UPSUM2} ${SFTPUPSUM2}
|
| |
+ rm -f /home/curltestuser/uploadfile1 /home/curltestuser/uploadfile2
|
| |
+ rlPhaseEnd
|
| |
+
|
| |
+
|
| |
+ rlPhaseStartCleanup
|
| |
+ rlRun "userdel -r --force curltestuser"
|
| |
+ rlRun "popd"
|
| |
+ rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
| |
+ rlFileRestore
|
| |
+ rlServiceRestore "sshd"
|
| |
+ rlPhaseEnd
|
| |
+ rlJournalPrintText
|
| |
+ rlJournalEnd
|
| |