Files

67 lines
1.8 KiB
Bash

#!/usr/bin/env bats
: ${BRANCH:=edge}
VER=${BRANCH#v}
TAG=${VER}-test
setup() {
docker history alpine:$TAG >/dev/null 2>&1
}
@test "version is correct $VER" {
case $BRANCH in
edge) skip;;
esac
run docker run --rm alpine:$TAG sh -c '. ./etc/os-release; echo ${VERSION_ID%.*}'
[ $status -eq 0 ]
[ "${lines[0]}" = "$VER" ]
}
@test "package installs cleanly" {
run docker run --rm alpine:$TAG apk add --no-cache bash
[ $status -eq 0 ]
}
@test "timezone" {
run docker run --rm alpine:$TAG date +%Z
[ $status -eq 0 ]
[ "$output" = "UTC" ]
}
@test "repository list is correct" {
run docker run --rm alpine:$TAG cat /etc/apk/repositories
[ $status -eq 0 ]
[ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/$BRANCH/main" ] \
|| [ "${lines[0]}" = "https://dl-cdn.alpinelinux.org/alpine/$BRANCH/main" ] \
|| [ "${lines[0]}" = "https://cdn.alpinelinux.org/$BRANCH/main" ]
[ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/$BRANCH/community" ] \
|| [ "${lines[1]}" = "https://dl-cdn.alpinelinux.org/alpine/$BRANCH/community" ] \
|| [ "${lines[1]}" = "https://cdn.alpinelinux.org/$BRANCH/community" ]
[ "${lines[2]}" = "" ]
}
@test "cache is empty" {
run docker run --rm alpine:$TAG sh -c "ls -1 /var/cache/apk | wc -l"
[ $status -eq 0 ]
[ "$output" = "0" ]
}
@test "root password is disabled with default su" {
run docker run --rm --user nobody alpine:$TAG su
[ $status -eq 1 ]
}
@test "root login is disabled" {
run docker run --rm alpine:$TAG awk -F: '$1=="root"{print $2}' /etc/shadow
[ $status -eq 0 ]
[ "$output" = "*" ] || [ "$output" = "!" ]
}
@test "/dev/null should be missing" {
container=$(docker create alpine:$TAG)
run sh -c "docker export $container | tar -t dev/null"
[ $status -ne 0 ]
docker rm $container
}