93 lines
3.5 KiB
Python
93 lines
3.5 KiB
Python
import pytest
|
|
|
|
from fediverse_blocklist_deploy import models
|
|
|
|
def test_empty_instance():
|
|
with pytest.raises(KeyError):
|
|
models.Instance = models.Instance({})
|
|
|
|
|
|
def test_minimal_init():
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
assert i.id == None
|
|
assert i.domain == "abc.xyz"
|
|
assert i.obfuscate == False
|
|
assert i.reject_media == False
|
|
assert i.reject_reports == False
|
|
|
|
def test_string_representation():
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
assert str(i) == "abc.xyz: suspend"
|
|
|
|
|
|
def test_status():
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
assert i.status_str() == "suspend\nReject reports: False\nReject media: False\nObfuscate: False"
|
|
|
|
def test_equality():
|
|
a1: models.Instance = models.Instance({"domain": "a"})
|
|
a2: models.Instance = models.Instance({"domain": "a"})
|
|
b: models.Instance = models.Instance({"domain": "b"})
|
|
|
|
assert a1 == a2
|
|
assert a2 != b
|
|
|
|
def test_as_dict():
|
|
test_data = {"domain": "abc.xyz", "severity": "suspend", "private_comment": "hidden", "public_comment": "", "obfuscate": True, "reject_media": False, "reject_reports": False}
|
|
i: models.Instance = models.Instance(test_data)
|
|
test_data.pop("private_comment")
|
|
assert i.as_dict() == test_data
|
|
|
|
|
|
def test_as_dict_private():
|
|
test_data = {"domain": "abc.xyz", "severity": "suspend", "private_comment": "hidden", "public_comment": "", "obfuscate": True, "reject_media": False, "reject_reports": False}
|
|
i: models.Instance = models.Instance(test_data)
|
|
assert i.as_dict(private=True) == test_data
|
|
|
|
|
|
def test_apply(requests_mock):
|
|
requests_mock.post("https://server.org/api/v1/admin/domain_blocks", text="success")
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
i.apply("server.org", token="abcdef")
|
|
assert requests_mock.called
|
|
|
|
def test_apply_with_id(requests_mock):
|
|
requests_mock.put("https://server.org/api/v1/admin/domain_blocks/123", text="success")
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
i.apply("server.org", token="abcdef", block_id=123)
|
|
assert requests_mock.called
|
|
|
|
def test_apply_error(requests_mock):
|
|
requests_mock.post("https://server.org/api/v1/admin/domain_blocks", status_code=400)
|
|
with pytest.raises(ConnectionError):
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
i.apply("server.org", token="abcdef")
|
|
assert requests_mock.called
|
|
|
|
def test_delete(requests_mock):
|
|
requests_mock.delete("https://server.org/api/v1/admin/domain_blocks/123", text="success")
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
i.id = 123
|
|
i.delete("server.org", token="abcdef")
|
|
assert requests_mock.called
|
|
|
|
def test_delete_error(requests_mock):
|
|
requests_mock.delete("https://server.org/api/v1/admin/domain_blocks/123", status_code=400)
|
|
i: models.Instance = models.Instance({"domain": "abc.xyz"})
|
|
i.id = 123
|
|
with pytest.raises(ConnectionError):
|
|
i.delete("server.org", token="abcdef")
|
|
assert requests_mock.called
|
|
|
|
def test_diff_equal():
|
|
a1: models.Instance = models.Instance({"domain": "a"})
|
|
a2: models.Instance = models.Instance({"domain": "a"})
|
|
|
|
assert models.Instance.list_diffs([a1], [a2]) == []
|
|
|
|
def test_diff_not_equal():
|
|
a1: models.Instance = models.Instance({"domain": "a2"})
|
|
a2: models.Instance = models.Instance({"domain": "a1"})
|
|
|
|
assert models.Instance.list_diffs([a1], [a2]) == [{"local": a1, "remote": None}, {"local": None, "remote": a2}]
|