test: write initial automatic integration tests

This commit is contained in:
decentral1se 2023-09-05 11:12:21 +02:00 committed by decentral1se
parent 18dc6e9434
commit 0a765794f2
3 changed files with 108 additions and 0 deletions

View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
setup() {
DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )"
source "$DIR/helpers.sh"
_setup_env
}
@test "ensure abra directories created" {
run $ABRA app ls
# no servers yet, so will fail. however, it will run the required code which
# checks if it should create these base directories and that is what we want
assert_failure
assert [ -d "$ABRA_TEST_DIR" ]
assert [ -d "$ABRA_TEST_DIR/servers" ]
assert [ -d "$ABRA_TEST_DIR/recipes" ]
assert [ -d "$ABRA_TEST_DIR/backups" ]
assert [ -d "$ABRA_TEST_DIR/vendor" ]
assert [ -d "$ABRA_TEST_DIR/catalogue" ]
}
@test "ensure catalogue recipe is a git repository" {
run $ABRA app ls
# no servers yet, so will fail. however, it will run the required code which
# checks if it should create these base directories and that is what we want
assert_failure
assert_output --partial 'local recipe catalogue is missing'
assert [ -d "$ABRA_TEST_DIR/catalogue" ]
assert [ -d "$ABRA_TEST_DIR/catalogue/.git" ]
}
teardown(){
_default_teardown
}

View File

@ -0,0 +1,36 @@
#!/usr/bin/env bash
_build_abra() {
if [[ ! -e "$ROOT/abra" ]]; then
cd "$ROOT" && make build-dev
return 0
fi
return 0
}
_build_kadabra() {
if [[ ! -e "$ROOT/kadabra" ]]; then
cd "$ROOT" && make build-dev
return 0
fi
return 0
}
_setup_env(){
load '/usr/lib/bats/bats-support/load'
load '/usr/lib/bats/bats-assert/load'
ROOT="$DIR/../.."
ABRA="$ROOT/abra"
KADABRA="$ROOT/kadabra"
ABRA_TEST=true
ABRA_TEST_DIR="$HOME/.abra_test"
_build_abra
_build_kadabra
}
_default_teardown(){
rm -rf "$ABRA_TEST_DIR"
}

View File

@ -0,0 +1,33 @@
#!/usr/bin/env bash
setup() {
DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )"
source "$DIR/helpers.sh"
_setup_env
mkdir -p "$HOME/.abra_test/servers/example.com"
if ! grep -R -q "example.com" "$HOME/.docker"; then
docker context create --docker host=ssh://foo@example.com:222 example.com
fi
}
@test "create new recipe" {
run $ABRA recipe new foobar
assert_success
assert_output --partial 'Your new foobar recipe has been created'
run $ABRA app new foobar \
--no-input \
--server example.com \
--domain foobar.example.com
assert_success
assert_output --partial 'A new foobar app has been created!'
}
teardown() {
_default_teardown
if grep -R -q "example.com" "$HOME/.docker"; then
docker context rm example.com
fi
}