70 lines
2.7 KiB
Python
70 lines
2.7 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
from yuxi.channel.common.schemas import COMMON_DM_POLICY_SCHEMA, COMMON_GROUP_POLICY_SCHEMA
|
|
|
|
|
|
class TestCommonDmPolicySchema:
|
|
@pytest.fixture(scope="class")
|
|
def validator(self):
|
|
jsonschema = pytest.importorskip("jsonschema")
|
|
return jsonschema.Draft202012Validator
|
|
|
|
def test_allows_open_mode(self, validator):
|
|
instance = {"mode": "open"}
|
|
assert validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_allows_allow_from_mode(self, validator):
|
|
instance = {"mode": "allow_from", "allow_list": ["user1", "user2"]}
|
|
assert validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_allows_deny_mode(self, validator):
|
|
instance = {"mode": "deny", "deny_list": ["user1"]}
|
|
assert validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_allows_all_known_fields(self, validator):
|
|
instance = {"mode": "open", "allow_list": ["u1"], "deny_list": ["u2"]}
|
|
assert validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_rejects_unknown_fields(self, validator):
|
|
instance = {"mode": "open", "extra": True}
|
|
assert not validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_rejects_invalid_mode(self, validator):
|
|
instance = {"mode": "block"}
|
|
assert not validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_rejects_non_string_allow_list_items(self, validator):
|
|
instance = {"mode": "allow_from", "allow_list": [1, 2]}
|
|
assert not validator(COMMON_DM_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
|
|
class TestCommonGroupPolicySchema:
|
|
@pytest.fixture(scope="class")
|
|
def validator(self):
|
|
jsonschema = pytest.importorskip("jsonschema")
|
|
return jsonschema.Draft202012Validator
|
|
|
|
def test_allows_known_fields(self, validator):
|
|
instance = {
|
|
"require_mention": True,
|
|
"allow_groups": ["g1"],
|
|
"deny_groups": ["g2"],
|
|
}
|
|
assert validator(COMMON_GROUP_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_allows_empty_object(self, validator):
|
|
assert validator(COMMON_GROUP_POLICY_SCHEMA).is_valid({})
|
|
|
|
def test_rejects_unknown_fields(self, validator):
|
|
instance = {"require_mention": False, "unknown": True}
|
|
assert not validator(COMMON_GROUP_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_rejects_non_boolean_require_mention(self, validator):
|
|
instance = {"require_mention": "yes"}
|
|
assert not validator(COMMON_GROUP_POLICY_SCHEMA).is_valid(instance)
|
|
|
|
def test_rejects_non_string_group_items(self, validator):
|
|
instance = {"allow_groups": [1]}
|
|
assert not validator(COMMON_GROUP_POLICY_SCHEMA).is_valid(instance)
|