ForcePilot/backend/test/unit/channel/common/test_schemas.py
Kris bab30f2715
Some checks failed
Deploy VitePress site to Pages / build (push) Has been cancelled
Ruff Format Check / Ruff Format & Lint (push) Has been cancelled
Deploy VitePress site to Pages / Deploy (push) Has been cancelled
feat:0715
2026-07-15 12:30:58 +08:00

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)