55 lines
2.5 KiB
Python
55 lines
2.5 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.models import Group, Permission
|
|
from django.core.management import call_command
|
|
|
|
from apps.accounts.models import MenuItem, UserGroup
|
|
|
|
|
|
def test_bootstrap_governance_seeds_admin_roles_groups_permissions_and_menus(db, settings):
|
|
settings.DJANGO_SUPERUSER_USERNAME = "admin"
|
|
settings.DJANGO_SUPERUSER_PASSWORD = "admin12345"
|
|
settings.DJANGO_SUPERUSER_EMAIL = "admin@example.com"
|
|
|
|
call_command("bootstrap_governance")
|
|
call_command("bootstrap_governance")
|
|
|
|
user = get_user_model().objects.get(username="admin")
|
|
assert user.is_superuser is True
|
|
assert user.check_password("admin12345")
|
|
assert Group.objects.filter(name="系统管理员").exists()
|
|
assert Permission.objects.filter(codename="system.user.manage").exists()
|
|
assert UserGroup.objects.filter(code="default").exists()
|
|
assert MenuItem.objects.filter(code="system.users", title="用户管理").exists()
|
|
assert MenuItem.objects.filter(code="system.roles", permission_code="system.role.view").exists()
|
|
assert MenuItem.objects.filter(code="workbench", path="#/", parent=None).exists()
|
|
assert MenuItem.objects.filter(
|
|
code="workbench.overview", is_visible=False, is_enabled=False
|
|
).exists()
|
|
assert MenuItem.objects.filter(code="business", title="工单", sort_order=20).exists()
|
|
knowledge = MenuItem.objects.get(code="knowledge")
|
|
assert knowledge.title == "知识与方案"
|
|
assert list(knowledge.children.order_by("sort_order").values_list("code", flat=True)) == [
|
|
"platform.knowledge",
|
|
"knowledge.search",
|
|
"business.solutions",
|
|
]
|
|
assert MenuItem.objects.filter(code="platform.knowledge", is_enabled=True).exists()
|
|
assert MenuItem.objects.filter(code="platform", title="AI 平台", sort_order=40).exists()
|
|
assert MenuItem.objects.filter(code="system", sort_order=50).exists()
|
|
|
|
|
|
def test_bootstrap_governance_migrates_legacy_english_roles(db, settings):
|
|
legacy_group = Group.objects.create(name="Support Engineer")
|
|
user = get_user_model().objects.create_user(username="support", password="password")
|
|
user.groups.add(legacy_group)
|
|
|
|
settings.DJANGO_SUPERUSER_USERNAME = "admin"
|
|
settings.DJANGO_SUPERUSER_PASSWORD = "admin12345"
|
|
settings.DJANGO_SUPERUSER_EMAIL = "admin@example.com"
|
|
|
|
call_command("bootstrap_governance")
|
|
|
|
assert not Group.objects.filter(name="Support Engineer").exists()
|
|
support_role = Group.objects.get(name="技术支持")
|
|
assert support_role.user_set.filter(username="support").exists()
|