Skip to content

Commit

Permalink
Update tests / add ACL tests
Browse files Browse the repository at this point in the history
Test password query
  • Loading branch information
S-S-X committed May 20, 2023
1 parent 22335ea commit 53dd3ff
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 15 deletions.
31 changes: 21 additions & 10 deletions spec/fixtures/minetest.conf
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
# Basic configuration
beerchat.colorize_channels = *
beerchat.moderator_channel_name = mod

# Plugin configuration

beerchat.enable_alias = true
beerchat.moderator_channel_name = mod

beerchat.enable_announce = true
# Enable plugins

beerchat.enable_mute = true
beerchat.enable_me = true
beerchat.enable_hash = true
beerchat.enable_acl = true
beerchat.enable_pm = true
beerchat.enable_whisper = true
beerchat.enable_jail = true
beerchat.enable_ban = true

beerchat.enable_remote_mute = true
beerchat.enable_cleaner = true
beerchat.enable_override = true
beerchat.enable_colorize = true
beerchat.enable_announce = true
beerchat.enable_force2channel = true
beerchat.enable_password = true
beerchat.enable_event-logging = true
beerchat.enable_alias = true

beerchat.enable_jail = true
beerchat.jail.channel_name = jailchannel
# Plugin configuration

beerchat.enable_remote_mute = true
beerchat.jail.channel_name = jailchannel
beerchat.colorize_channels = *

# Web relay

secure.http_mods = beerchat
beerchat.matterbridge_url = http://matterbridge:4242
beerchat.matterbridge_token = mytoken
11 changes: 6 additions & 5 deletions spec/init_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ describe("Mod initialization", function()

end)

describe("Chatting", function()
describe("Core functionality", function()

local M = function(s) return require("luassert.match").matches(s) end
local SX = Player("SX", { shout = 1 })

setup(function()
beerchat.channels["testchannel"] = { owner = "beerholder", color = beerchat.default_channel_color }
mineunit:execute_on_joinplayer(SX)
end)

Expand All @@ -36,10 +37,10 @@ describe("Chatting", function()
assert.not_nil(beerchat.channels["foo"])
end)

it("switches channels", function()
SX:send_chat_message("#foo")
assert.equals("foo", SX:get_meta():get_string("beerchat:current_channel"))
SX:send_chat_message("Everyone ignore me, this is just a test")
it("joins channel", function()
assert.is_nil(beerchat.playersChannels["SX"]["testchannel"])
SX:send_chat_message("/jc testchannel")
assert.not_nil(beerchat.playersChannels["SX"]["testchannel"])
end)

it("deletes channel", function()
Expand Down
82 changes: 82 additions & 0 deletions spec/plugin_acl_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
require("mineunit")

mineunit("core")
mineunit("player")
mineunit("server")

sourcefile("init")

describe("ACL", function()

local M = function(s) return require("luassert.match").matches(s) end
local ANY = require("luassert.match")._
assert:register("matcher", "has_channel", function(_, args)
return function(msg)
return type(msg) == "table" and msg.channel == args[1]
end
end)
local CHANNEL = require("luassert.match").has_channel

local SX = Player("SX", { shout = 1 })
local Sam = Player("Sam", { shout = 1 })

setup(function()
mineunit:execute_on_joinplayer(SX)
mineunit:execute_on_joinplayer(Sam)
-- Test channels
beerchat.channels["acl-password"] = { owner = "SX", color = beerchat.default_channel_color }
beerchat.channels["acl-default-role"] = { owner = "SX", color = beerchat.default_channel_color }
beerchat.channels["acl-owner-role"] = { owner = "SX", color = beerchat.default_channel_color }
beerchat.channels["acl-manager-role"] = { owner = "SX", color = beerchat.default_channel_color }
beerchat.channels["acl-write-role"] = { owner = "SX", color = beerchat.default_channel_color }
beerchat.channels["acl-read-role"] = { owner = "SX", color = beerchat.default_channel_color }
end)

before_each(function()
beerchat.set_player_channel("SX", "main")
beerchat.set_player_channel("Sam", "main")
end)

teardown(function()
mineunit:execute_on_leaveplayer(Sam)
mineunit:execute_on_leaveplayer(SX)
end)

it("checks password", function()
SX:send_chat_message("/cc #acl-password,qwerty")
spy.on(minetest, "chat_send_player")
-- Initiate password protected join, it should ask for password and should not join channel
Sam:send_chat_message("/jc #acl-password")
assert.spy(minetest.chat_send_player).called_with("Sam", M(".+assword.+lease.+assword"))
assert.spy(minetest.chat_send_player).not_called_with("SX", ANY)
assert.is_nil(beerchat.playersChannels["Sam"]["acl-password"])
-- Password is not visible to other players
Sam:send_chat_message("qwerty")
assert.spy(minetest.chat_send_player).not_called_with("SX", ANY)
assert.not_nil(beerchat.playersChannels["Sam"]["acl-password"])
-- Next messages will be visible to other players
Sam:send_chat_message("qwerty")
assert.spy(minetest.chat_send_player).called_with("SX", ANY)
end)

it("invite default role", function()
SX:send_chat_message("/invite_channel #acl-default-role Sam")
end)

it("invite owner role", function()
SX:send_chat_message("/invite_channel #acl-owner-role Sam owner")
end)

it("invite manager role", function()
SX:send_chat_message("/invite_channel #acl-manager-role Sam manager")
end)

it("invite write role", function()
SX:send_chat_message("/invite_channel #acl-write-role Sam write")
end)

it("invite read role", function()
SX:send_chat_message("/invite_channel #acl-read-role Sam read")
end)

end)

0 comments on commit 53dd3ff

Please sign in to comment.