179 lines
6.8 KiB
Bash
179 lines
6.8 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load 'test_helper'
|
|
bats_load_library 'bats-mock'
|
|
|
|
setup() {
|
|
load ../configurators/configure-zepp-timer
|
|
common_setup
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "The happy path" {
|
|
unset -f __credentials_dialog __call_huami_token __target_directory_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"pass1234\")'"
|
|
stub __call_huami_token 'printf 0'
|
|
stub __target_directory_dialog "echo \"$TEST_TEMP_DIR\""
|
|
|
|
run main
|
|
|
|
unstub __target_directory_dialog
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
|
|
assert_output "The config at $TEST_TEMP_DIR/test-config.env was updated"
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='gurli'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='pass1234'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='$TEST_TEMP_DIR'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "User cancels credential dialog" {
|
|
unset -f __credentials_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS'"
|
|
|
|
run main
|
|
|
|
unstub __credentials_dialog
|
|
assert_output "Cancelled. $TEST_TEMP_DIR/test-config.env was not changed."
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='fnuggi'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='ugh'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='/tmp/tmp'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "No username was entered" {
|
|
unset -f __credentials_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"\" [1]=\"pass1234\")'"
|
|
|
|
run main
|
|
|
|
unstub __credentials_dialog
|
|
assert_output "Username or password wasn't provided. Not changing $TEST_TEMP_DIR/test-config.env"
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='fnuggi'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='ugh'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='/tmp/tmp'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "No password was entered" {
|
|
unset -f __credentials_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"\")'"
|
|
|
|
run main
|
|
|
|
unstub __credentials_dialog
|
|
assert_output "Username or password wasn't provided. Not changing $TEST_TEMP_DIR/test-config.env"
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='fnuggi'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='ugh'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='/tmp/tmp'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "Username/password couldn't log in" {
|
|
unset -f __credentials_dialog __call_huami_token
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"pass1234\")'"
|
|
stub __call_huami_token 'printf 1'
|
|
|
|
run main
|
|
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
assert_output "Failed to login with the given user and password. Aborting."
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='fnuggi'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='ugh'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='/tmp/tmp'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "Username is correctly normalised" {
|
|
unset -f __credentials_dialog __call_huami_token
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gur$'\n' li$'\t' \" [1]=\"pass1234\")'"
|
|
stub __call_huami_token '"gur li " "pass1234" : printf 1'
|
|
|
|
run main
|
|
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "Password is correctly normalised" {
|
|
unset -f __credentials_dialog __call_huami_token
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"pass$'\t _ 1234\")'"
|
|
stub __call_huami_token '"gurli" "pass _ 1234" : printf 1'
|
|
|
|
run main
|
|
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
assert_output "Failed to login with the given user and password. Aborting."
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "User cancels target directory dialog" {
|
|
unset -f __credentials_dialog __call_huami_token __target_directory_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"pass1234\")'"
|
|
stub __call_huami_token 'printf 0'
|
|
stub __target_directory_dialog 'echo ""'
|
|
|
|
run main
|
|
|
|
unstub __target_directory_dialog
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
assert_output "Cancelled. $TEST_TEMP_DIR/test-config.env was not changed."
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='fnuggi'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='ugh'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='/tmp/tmp'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "The path to the home directory is converted to the systemd version, %h" {
|
|
unset -f __credentials_dialog __call_huami_token __target_directory_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"pass1234\")'"
|
|
stub __call_huami_token 'printf 0'
|
|
stub __target_directory_dialog "echo $HOME"
|
|
|
|
run main
|
|
|
|
unstub __target_directory_dialog
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
assert_output "The config at $TEST_TEMP_DIR/test-config.env was updated"
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='gurli'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='pass1234'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='%h'"
|
|
}
|
|
|
|
# bats file_tags=configure
|
|
@test "An existing systemd home path, %h, is converted to a real path in the target directory dialog" {
|
|
cat <<EOF >"$CONFIG"
|
|
ZEPP_USER=fnuggi
|
|
ZEPP_PASS=ugh
|
|
ZEPP_AGPS_TARGET_DIR=%h
|
|
EOF
|
|
unset -f __credentials_dialog __call_huami_token __target_directory_dialog
|
|
stub __credentials_dialog "fnuggi ugh : printf 'declare -a CREDS=([0]=\"gurli\" [1]=\"pass1234\")'"
|
|
stub __call_huami_token 'printf 0'
|
|
stub __target_directory_dialog "$HOME : echo /tmp/tmp"
|
|
|
|
run main
|
|
|
|
unstub __target_directory_dialog
|
|
unstub __call_huami_token
|
|
unstub __credentials_dialog
|
|
assert_output "The config at $TEST_TEMP_DIR/test-config.env was updated"
|
|
assert_file_exists "$TEST_TEMP_DIR/test-config.env"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_USER='gurli'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_PASS='pass1234'"
|
|
assert_file_contains "$TEST_TEMP_DIR/test-config.env" "ZEPP_AGPS_TARGET_DIR='/tmp/tmp'"
|
|
}
|