diff --git a/tests/id_rsa b/tests/id_rsa new file mode 100644 index 0000000..647d58c --- /dev/null +++ b/tests/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAxww0MPWvZohlgxFyxvZjEezrld7n5pIJuYbZ7bmZ8UcNbFH8 +kpoHmmOWQ7x8ObhDLpcWEv8ifoS8RYLI97VMCJcEc/ckcq82ZvoAROF4bG/jYXWj +EHRZzEp93FMPFBzvBZkXeBS4ksd9sfqRfNyZzUeu/t380oNsCpr8+TnaEEhC5+E6 +UbjreH0CPttkD0aRjrszer1hkGs2Py80VZSnidZGrFRNafxigjcLRNp4ZJNweFc7 +mcuLIfBapJXIJGuj2XAxrt86pBQoESfaETg0m3DWl4Z1w6wZZ26WnIiVOHdiXcj3 +U0tdZwCixPihH5yYYyy6fE11kMw9sQdhx+4BHQIDAQABAoIBAFGxrpIRpCW/AXrj +5GnIoiyvQpnGXQODGL6unC83p/khIl883x8EXO5+xSOT7qB6AgjTNdoiIPQwYl1d +KkKQhF5aLRezbaAsTXXCUe3zZEuNOJO9hmmwd1KjmDifVmb44Rk5FirQxlhnzC0K +HEBVAkMAktBEKAn2qpdHuWBI4Dkh1hWIpChtkq4h1brsgaYurkfRnJOv1i/8kIWa +QlpzxZk2m5i1TpyfRsxuqt3migcrUSJsCmMwkFylDNKYQVS4HRZAXZndq3o51ZF5 +AzwgMjCty9G1eQGFx4k8CzDvahhTKHds73RHFTEGqWZiJNayuzb0Yz0wvaFlHnWl +35E11bkCgYEA5ALPklJ36jLNJiCzReH7SlAczIN9Rh1kRReHDD4St5cxA/nCynhI +HET2g8QBnonup1V3WPsDmLTga0hPhXhrI3oSm7jhBc2HOqNaJ/z6jYgGbE6pP05u +PgCi8gubX59733FJINmy5XOMzRaVTCfO2lh3zB4Ioj2t4EQyWTaQSw8CgYEA33s6 +aa+OtrwFmB42KQBPv0E1Yg++jpyrEysrvr7+hSI/8wFJvMqz6xCjsEolgU5/BIIr +xQJhqGgtBn2/HRGYqwa00vJJwxYwzPZHK2CiGL5n9HamVBEXeQAp16V6ftPE7lAi +MmbhEpbZZpVwCRsi8XofJNS9+YHhUk0si1O8oRMCgYEAn4uf90Ehi40Uo9NJ3mJs +VemM3UY8yG0UlowKAXUF39U5hRClTsuvmahf3n+uqmLVzd0t7+Nk9tvKFQe6LSi/ +v0lR8AkD2+2e7FcVZNnN8G74H51DLHsTBOupGTkp9VVBdm5sv0HVvlyGb5OX0Hwi +cAJrgTaaz/vcyQqvOGHHwd0CgYEAo679FKVqEPtb2ZPfNV6uCjX3pJBFkOy8/Hg1 +PStk/hwc3J6H5IhPCQ+R5LAaEkBtFd9FsbFR1+gdelClpuPZfwKVdJ/TWNkq+yQy +8ll/wEHNoCc7If22xIBTJUhllPkEl0wIEAR8O4JTTyiK+5BtopJAt1g+oL35S6+M +vauiUBMCgYAHum82lFQDVvLGEj79dpuj0cFfAwWZaPhxjjpQKp4pyCR6mU2O0uO8 +FtGG1swVG8H/sW7mcFeamZqjCHFSwcKqp5Ij6Wr2xrBU7R2VqIPAsLKHWZzM0G11 +X391kZk9mXwucy8D0eM8lE/suWmdFK4vdtP+y62q4AFru0HslSCAnA== +-----END RSA PRIVATE KEY----- diff --git a/tests/id_rsa.pub b/tests/id_rsa.pub new file mode 100644 index 0000000..669bbca --- /dev/null +++ b/tests/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHDDQw9a9miGWDEXLG9mMR7OuV3ufmkgm5htntuZnxRw1sUfySmgeaY5ZDvHw5uEMulxYS/yJ+hLxFgsj3tUwIlwRz9yRyrzZm+gBE4Xhsb+NhdaMQdFnMSn3cUw8UHO8FmRd4FLiSx32x+pF83JnNR67+3fzSg2wKmvz5OdoQSELn4TpRuOt4fQI+22QPRpGOuzN6vWGQazY/LzRVlKeJ1kasVE1p/GKCNwtE2nhkk3B4VzuZy4sh8Fqklcgka6PZcDGu3zqkFCgRJ9oRODSbcNaXhnXDrBlnbpaciJU4d2JdyPdTS11nAKLE+KEfnJhjLLp8TXWQzD2xB2HH7gEd atmoz@arch-book diff --git a/tests/run b/tests/run new file mode 100755 index 0000000..3874fe7 --- /dev/null +++ b/tests/run @@ -0,0 +1,68 @@ +#!/bin/bash +# See: https://github.com/djui/bashunit + +scriptDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +buildDir="$scriptDir/.." +tmpDir="/tmp/atmoz_sftp_test" + +build=${1:-"build"} +sftpImageName="atmoz/sftp_test" +sftpContainerName="atmoz_sftp_test" + +function beforeTest() { + if [ "$build" == "build" ]; then + docker build --pull=true --tag "$sftpImageName" "$buildDir" + fi + + rm -rf "$tmpDir" # clean state + mkdir "$tmpDir" + + docker run \ + -v "$scriptDir/id_rsa.pub":/home/test/.ssh/keys/id_rsa.pub:ro \ + -v "$tmpDir":/home/test/share \ + --name "$sftpContainerName" \ + --expose 22 \ + -d "$sftpImageName" \ + test:123:$(id -u):$(id -g) \ + > /dev/null + sleep 1 # wait for sftp server to get ready +} + +function afterTest() { + docker rm -fv "$sftpContainerName" > /dev/null + rm -rf "$tmpDir" +} + +function getSftpIp() { + docker inspect -f {{.NetworkSettings.IPAddress}} "$sftpContainerName" +} + +function runSftpCommands() { + ip="$(getSftpIp)" + echo "$@" | sftp \ + -i "$scriptDir/id_rsa" \ + -oStrictHostKeyChecking=no \ + -oUserKnownHostsFile=/dev/null \ + -b - test@$ip \ + > /dev/null 2>&1 +} + +function testContainerIsRunning() { + ps="$(docker ps -q -f name="$sftpContainerName")" + assertNotEqual "$ps" "" +} + +function testLoginUsingSshKey() { + runSftpCommands "exit" + assertReturn $? 0 +} + +function testWritePermission() { + runSftpCommands $'cd share\nmkdir test' + test -d "$tmpDir/test" + assertReturn $? 0 +} + +# Run tests +source "$scriptDir/bashunit.bash" +# Nothing happens after this