diff --git a/test.sh b/test.sh index e785d84..ea96deb 100644 --- a/test.sh +++ b/test.sh @@ -1,5 +1,6 @@ #!/bin/bash +USERNAME="minecraft" DIR="${MSM_DIR:-$(pwd)}" DEFUALT_CONF="${MSM_DEFAULT_CONF:-${DIR}/msm.conf}" TESTS_DIR="${MSM_TESTS_DIR:-${DIR}/tests}" @@ -31,7 +32,7 @@ setUp() { mkdir -p "$TMP_DIR" && chown "$USERNAME" "$TMP_DIR" cp "$DEFUALT_CONF" "$MSM_CONF" && chown "$USERNAME" "$MSM_CONF" - # Overwrite the directories to use for testing purposes + # Overwrite variables to use for testing purposes echo "" >> "$MSM_CONF" echo "# Auto appended by test script:" >> "$MSM_CONF" echo "SERVER_STORAGE_PATH=\"${TMP_DIR}/servers\"" >> "$MSM_CONF" @@ -41,8 +42,11 @@ setUp() { echo "LOG_ARCHIVE_PATH=\"${TMP_DIR}/archives/logs\"" >> "$MSM_CONF" echo "BACKUP_ARCHIVE_PATH=\"${TMP_DIR}/archives/backups\"" >> "$MSM_CONF" echo "DEBUG=\"true\"" >> "$MSM_CONF" + echo "DEFAULT_USERNAME=\"${USERNAME}\"" >> "$MSM_CONF" echo "DEFAULT_SCREEN_NAME=\"msmtest-{SERVER_NAME}\"" >> "$MSM_CONF" echo "DEFAULT_INVOCATION=\"java -Xmx${TEST_RAM}M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -jar {JAR} nogui\"" >> "$MSM_CONF" + + source $SCRIPT # Variables accessible by all tests, which are set by the stdall, stderr, # stdout and quiet utility functions. @@ -54,6 +58,8 @@ tearDown() { # Clear the variables used in test functions unset EXIT_CODE unset OUTPUT + + manager_dirty_all # Remove the temporary testing directory if [ -d "${TMP_DIR}" ]; then @@ -136,31 +142,35 @@ test_listing_no_servers() { ### "msm server create" tests test_reserved_server_names() { + manager_property SERVER_STORAGE_PATH for name in "start" "stop" "restart" "server" "version" "jargroup" "all"; do expect_stderr $SCRIPT server create $name assertEquals "Incorrect exit code when creating server name \"$name\"." $EX_INVALID_ARGUMENT $EXIT_CODE - assertFalse "Server \"$name\" directory was created when it should not have been." "[ -d \"$SERVER_STORAGE_PATH/$name\" ]" + assertFalse "Server \"$name\" directory was created when it should not have been." "[ -d \"$SETTINGS_SERVER_STORAGE_PATH/$name\" ]" done } test_common_invalid_server_names() { + manager_property SERVER_STORAGE_PATH expect_stderr $SCRIPT server create "name with spaces" assertEquals "Incorrect exit code when creating server name \"name with spaces\"." $EX_INVALID_ARGUMENT $EXIT_CODE - assertFalse "Server \"name with spaces\" directory was created when it should not have been." "[ -d \"$SERVER_STORAGE_PATH/name with spaces\" ]" + assertFalse "Server \"name with spaces\" directory was created when it should not have been." "[ -d \"$SETTINGS_SERVER_STORAGE_PATH/name with spaces\" ]" } test_valid_edge_case_server_names() { + manager_property SERVER_STORAGE_PATH for name in "serverstart" "CapitalLetters" "0987654321" "name-with-dashes" "name_with_underscores" "Combination-of_different1Things2"; do expect_stderr_empty $SCRIPT server create $name assertEquals "Incorrect exit code when creating server name \"$name\"." $EX_OK $EXIT_CODE - assertTrue "Server \"$name\" directory was NOT created when it should have been." "[ -d \"$SERVER_STORAGE_PATH/$name\" ]" + assertTrue "Server \"$name\" directory was NOT created when it should have been." "[ -d \"$SETTINGS_SERVER_STORAGE_PATH/$name\" ]" done } test_creating_server_without_any_jargroups() { + manager_property SERVER_STORAGE_PATH expect_stderr_empty $SCRIPT server create example assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE - assertTrue "Server was not created." "[ -d \"$SERVER_STORAGE_PATH/example\" ]" + assertTrue "Server was not created." "[ -d \"$SETTINGS_SERVER_STORAGE_PATH/example\" ]" } # Assumes: test_create_server_without_any_jargroups @@ -181,9 +191,18 @@ test_creating_server_with_jar_groups() { # Create a new server that will use the "minecraft" jar group. expect_stderr_empty $SCRIPT server create example + # Script must be sourced again to recognise the new server + source $SCRIPT + + manager_property SERVER_STORAGE_PATH + server_get_id "example" + local sid="$RETURN" + server_property "$sid" JAR_PATH + server_property "$sid" PATH + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE - assertTrue "Server direcotry was not created." "[ -d \"$SERVER_STORAGE_PATH/example\" ]" - assertTrue "Server jar ($SERVER_STORAGE_PATH/example/$DEFAULT_JAR_PATH) was not linked." "[ -f \"$SERVER_STORAGE_PATH/example/$DEFAULT_JAR_PATH\" ]" + assertTrue "Server direcotry was not created." "[ -d \"${SERVER_PATH[$sid]}\" ]" + assertTrue "Server jar (${SERVER_JAR_PATH[$sid]}) was not linked." "[ -f \"${SERVER_JAR_PATH[$sid]}\" ]" } ### "msm server delete" tests @@ -213,13 +232,182 @@ test_renaming_server_that_does_not_exist() { test_renaming_server_that_exists_and_is_stopped() { quiet $SCRIPT server create example expect_stderr_empty $SCRIPT server rename example example_new_name + + manager_property SERVER_STORAGE_PATH assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE - assertFalse "Original server name directory still exists." "[ -d \"$SERVER_STORAGE_PATH/example\" ]" - assertTrue "New server name directory was not created." "[ -d \"$SERVER_STORAGE_PATH/example_new_name\" ]" + assertFalse "Original server name directory still exists." "[ -d \"$SETTINGS_SERVER_STORAGE_PATH/example\" ]" + assertTrue "New server name directory was not created." "[ -d \"$SETTINGS_SERVER_STORAGE_PATH/example_new_name\" ]" } +# Stopped Server Tests +# -------------------- + +### "msm stop" tests + +test_stopped_server_stop() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver stop + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm status" tests + +test_stopped_server_status() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver status + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm connected" tests + +test_stopped_server_connected() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver connected + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm worlds list" tests + +test_stopped_server_worlds_list_none() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver worlds list + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm worlds load" tests + +test_stopped_server_worlds_load_none() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver worlds load + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm worlds ram" tests + +test_stopped_server_worlds_ram_name_not_found() { + quiet $SCRIPT server create stoppedserver + expect_stderr $SCRIPT stoppedserver worlds ram non_existant_world_name + assertEquals "Incorrect exit code." $EX_NAME_NOT_FOUND $EXIT_CODE +} + +### "msm worlds todisk" tests + +test_stopped_server_worlds_todisk_none() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver worlds todisk + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm worlds backup" tests + +test_stopped_server_worlds_todisk_none() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver worlds backup + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm worlds on" tests + +### "msm worlds off" tests + +### "msm logroll" tests + +test_stopped_server_logroll_empty() { + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver logroll + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE +} + +### "msm backup" tests + +test_stopped_server_backup() { + manager_property BACKUP_ARCHIVE_PATH + + quiet $SCRIPT server create stoppedserver + expect_stdout $SCRIPT stoppedserver backup + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE + assertNotNull "Server backup was not created." "find '$SETTINGS_BACKUP_ARCHIVE_PATH/stoppedserver' -mindepth 1 -maxdepth 1 -type f -name '*.zip'" +} + +### "msm jar" tests + +test_stopped_server_jar() { + quiet $SCRIPT server create stoppedserver + + source $SCRIPT + + server_get_id "stoppedserver" + local sid="$RETURN" + + server_property "$sid" JAR_PATH + + # Remove the existing jar file + rm -f "$JAR_PATH" + + # Create new jargroup + quiet $SCRIPT jargroup create newgroup "https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar" + + # Assign jargroup's latest jar to server + expect_stdout $SCRIPT stoppedserver jar newgroup + + assertEquals "Incorrect exit code." $EX_OK $EXIT_CODE + assertTrue "Server jar (${SERVER_JAR_PATH[$sid]}) was not linked." "[ -f \"${SERVER_JAR_PATH[$sid]}\" ]" +} + +### "msm whitelist on" tests + +### "msm whitelist off" tests + +### "msm whitelist add" tests + +### "msm whitelist remove" tests + +### "msm whitelist list" tests + +### "msm blacklist player add" tests + +### "msm blacklist player remove" tests + +### "msm blacklist ip add" tests + +### "msm blacklist ip remove" tests + +### "msm blacklist list" tests + +### "msm operator add" tests + +### "msm operator remove" tests + +### "msm operator list" tests + +### "msm gamemode" tests + +### "msm kick" tests + +### "msm say" tests + +### "msm time set" tests + +### "msm time add" tests + +### "msm toggledownfall" tests + +### "msm save on" tests + +### "msm save off" tests + +### "msm save all" tests + +### "msm cmd" tests + +### "msm cmdlog" tests + +### "msm console" tests + + + # Individual Server Tests # ----------------------- @@ -326,10 +514,11 @@ test_common_invalid_jargroups_names() { } test_valid_edge_case_jargroup_names() { + manager_property JAR_STORAGE_PATH for name in "serverstart" "CapitalLetters" "0987654321" "name-with-dashes" "name_with_underscores" "Combination-of_different1Things2"; do expect_stderr_empty $SCRIPT jargroup create $name https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar assertEquals "Incorrect exit code when creating jar group name \"$name\"." $EX_OK $EXIT_CODE - assertTrue "Jar group \"$name\" directory was NOT created when it should have been." "[ -d \"$JAR_STORAGE_PATH/$name\" ]" + assertTrue "Jar group \"$name\" directory was NOT created when it should have been." "[ -d \"$SETTINGS_JAR_STORAGE_PATH/$name\" ]" done }