Files
checkbot/tests/test_commands_parser.py

55 lines
1.6 KiB
Python

import pytest
from app.commands import parse
def test_telegram_basic():
cmd = parse("telegram", "/status")
assert (cmd.name, cmd.args, cmd.rest) == ("status", (), "")
def test_matrix_prefix():
assert parse("matrix", "!problems").name == "problems"
assert parse("matrix", "/problems") is None
assert parse("telegram", "!problems") is None
def test_botname_suffix():
assert parse("telegram", "/host@checkbot web01").args == ("web01",)
assert parse("telegram", "/host@checkbot web01", bot_name="checkbot").name == "host"
assert parse("telegram", "/host@other web01", bot_name="checkbot") is None
assert parse("matrix", "!host@x web01") is None
def test_quoting():
cmd = parse("telegram", '/explain web01 "CPU load"')
assert cmd.args == ("web01", "CPU load")
assert parse("telegram", "/explain web01 „CPU load“").args == ("web01", "CPU load")
def test_unbalanced_quote_takes_rest():
assert parse("telegram", '/explain web01 "CPU load').args == ("web01", "CPU load")
def test_case_insensitive_name():
assert parse("telegram", "/STATUS").name == "status"
def test_rest_preserved_for_ask():
cmd = parse("telegram", "/ask was ist los? ")
assert cmd.rest == "was ist los?"
@pytest.mark.parametrize("text", ["hallo", "", " ", "/", "//x", "/ status", "!!!", "/1abc", "text /status"])
def test_non_commands(text):
assert parse("telegram", text) is None
assert parse("matrix", text) is None
def test_unknown_backend():
assert parse("irc", "/status") is None
def test_empty_quoted_arg():
assert parse("telegram", '/x ""').args == ("",)