Files
huami-token-user-systemd/test/10-configure-zepp-timer-test.bats
T

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'"
}