require("mineunit") mineunit("core") mineunit("common/chatcommands") mineunit("server") mineunit("player") mineunit("settings") mineunit("auth") sourcefile("init") mineunit:mods_loaded() local exists = minetest.player_exists local settings = core.settings describe("Afk works", function() local admin = Player("admin", {kick = true, ban = true}) setup(function() minetest.check_password_entry = function() return false end mineunit:execute_on_joinplayer(admin) end) it("Sets afk status correctly", function () admin:send_chat_message('/mod_afk on') assert.equals(xban.present["admin"],nil) admin:send_chat_message('/mod_afk off') assert.equals(xban.present["admin"],true) end) it("Allows new players to join by default", function() minetest.player_exists = function() return false end local newplayer = Player("newplayer") mineunit:execute_on_joinplayer(newplayer) assert.is_true(newplayer._online) end) it("Rejects players if no moderator is active", function() local newplayer = Player("newplayer2") xban.present = {} minetest.settings = Settings("moderate.conf") mineunit:execute_on_joinplayer(newplayer) assert.is_not_true(newplayer._online) end) it("Allows a new player if there is an online moderator", function () local newplayer = Player("newplayer3") admin:send_chat_message('/mod_afk off') mineunit:execute_on_joinplayer(newplayer) assert.is_true(newplayer._online) end) it("Bans passwordless accounts and allows accounts with password", function () local newplayer = Player("newplayer3") mineunit:execute_on_joinplayer(newplayer) assert.is_true(newplayer._online) minetest.check_password_entry = function() return true end local newplayer2 = Player("newplayer4") mineunit:execute_on_joinplayer(admin) assert.is_false(newplayer2._online) end) it("Can force moderators to be marked afk", function () local moderator = Player("moderator", {kick = true, ban = true}) assert.is_true(xban.present["admin"]) moderator:send_chat_message('/force_afk admin') assert.is_not_true(xban.present["admin"]) end) end)