110 lines
2.6 KiB
Python
110 lines
2.6 KiB
Python
"""Unit tests for xbotlib module."""
|
|
|
|
from logging import getLogger
|
|
|
|
from pytest import fixture
|
|
|
|
from xbotlib import Config, SimpleDatabase, SimpleMessage
|
|
|
|
log = getLogger(__name__)
|
|
|
|
|
|
@fixture
|
|
def message():
|
|
class MockFrom:
|
|
@property
|
|
def bare(self):
|
|
return "foo@muc.vvvvvvaria.org"
|
|
|
|
return {
|
|
"body": "mockbot: foobar",
|
|
"from": MockFrom(),
|
|
"to": "other_tester",
|
|
"type": "chat",
|
|
"mucnick": "mockbot",
|
|
"oob": {"url": "https://foo.com"},
|
|
}
|
|
|
|
|
|
@fixture
|
|
def bot():
|
|
class MockBot:
|
|
@property
|
|
def nick(self):
|
|
return "mockbot"
|
|
|
|
@property
|
|
def log(self):
|
|
raise NotImplementedError()
|
|
|
|
return MockBot()
|
|
|
|
|
|
@fixture
|
|
def config():
|
|
return Config(
|
|
"test",
|
|
{
|
|
"test": {
|
|
"account": "foo@vvvvvvaria.org",
|
|
"password": "SecretPasswordZ",
|
|
"nick": "foo",
|
|
"avatar": "avatar.png",
|
|
"redis_url": "redis://localhost:6379/0",
|
|
"rooms": "foo, bar, baz",
|
|
"no_auto_join": True,
|
|
"port": 8080,
|
|
"template": "index.html.j2",
|
|
"serve": True,
|
|
"storage": "file",
|
|
"output": ".",
|
|
}
|
|
},
|
|
)
|
|
|
|
|
|
@fixture
|
|
def tmp_db_path(tmp_path):
|
|
return tmp_path / "testbot.json"
|
|
|
|
|
|
def test_simple_message(message):
|
|
sm = SimpleMessage(message, "mockbot", log)
|
|
assert sm.message == message
|
|
assert sm.text == "mockbot: foobar"
|
|
assert sm.content == "foobar"
|
|
# TODO*decentral1se): how to test test this?
|
|
# assert sm.sender == "tester"
|
|
assert sm.room == "foo@muc.vvvvvvaria.org"
|
|
assert sm.receiver == "other_tester"
|
|
assert sm.type == "chat"
|
|
assert sm.nick == "mockbot"
|
|
assert sm.url == "https://foo.com"
|
|
|
|
|
|
def test_empty_config():
|
|
config = Config("test", {})
|
|
assert config.account is None
|
|
|
|
|
|
def test_config(config):
|
|
assert config.account == "foo@vvvvvvaria.org"
|
|
assert config.password == "SecretPasswordZ"
|
|
assert config.nick == "foo"
|
|
assert config.avatar == "avatar.png"
|
|
assert config.redis_url == "redis://localhost:6379/0"
|
|
assert config.rooms == ["foo", "bar", "baz"]
|
|
assert config.no_auto_join
|
|
assert config.port == 8080
|
|
assert config.template == "index.html.j2"
|
|
assert config.serve
|
|
assert config.storage == "file"
|
|
assert config.output == "."
|
|
|
|
|
|
def test_simple_message_delete(tmp_db_path):
|
|
db = SimpleDatabase(tmp_db_path, log)
|
|
db["foo"] = "bar"
|
|
del db["foo"]
|
|
assert "foo" not in db
|