1
0
forked from erp-dev/erp

feat: added /api/v2/roles/

This commit is contained in:
2026-01-05 19:06:45 +08:00
parent e4b7543c09
commit d13d402d98
4 changed files with 89 additions and 2 deletions

View File

@@ -2,7 +2,7 @@ from decimal import Decimal
import datetime
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
from django.contrib.auth.models import Group, Permission
from django.test import TestCase
from django.utils import timezone
from rest_framework.test import APIClient, APIRequestFactory
@@ -62,6 +62,61 @@ class QuickCreateEmployeeUserAPITest(TestCase):
self.assertEqual(response.status_code, 400)
self.assertIn('商户不存在', str(response.data))
def test_quick_create_employee_user_with_role(self):
"""测试创建用户时指定角色"""
role = Group.objects.create(name='管理员')
payload = {**self.payload, 'role_id': role.id}
response = self.client.post(self.url, payload, format='json')
self.assertEqual(response.status_code, 201)
self.assertEqual(response.data['user']['role_id'], role.id)
created_user = get_user_model().objects.get(username=self.payload['username'])
self.assertIn(role, created_user.groups.all())
def test_quick_create_employee_user_with_invalid_role(self):
"""测试创建用户时指定不存在的角色"""
payload = {**self.payload, 'role_id': 99999}
response = self.client.post(self.url, payload, format='json')
self.assertEqual(response.status_code, 400)
self.assertIn('角色不存在', str(response.data))
class RoleListV2APITest(TestCase):
def setUp(self):
self.client = APIClient()
self.user = get_user_model().objects.create_user(username='test_user', password='pass12345')
self.client.force_authenticate(user=self.user)
self.url = '/api/v2/roles/'
def test_role_list_returns_all_roles(self):
"""测试获取所有角色"""
role1 = Group.objects.create(name='管理员')
role2 = Group.objects.create(name='普通用户')
response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 2)
names = [r['name'] for r in response.data]
self.assertIn('管理员', names)
self.assertIn('普通用户', names)
# 检查返回字段只有 id 和 name
for role in response.data:
self.assertEqual(set(role.keys()), {'id', 'name'})
def test_role_list_empty(self):
"""测试没有角色时返回空列表"""
response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data, [])
def test_role_list_requires_authentication(self):
"""测试未认证用户无法访问"""
client = APIClient()
response = client.get(self.url)
self.assertEqual(response.status_code, 401)
class HealthCheckV2APITest(TestCase):
def setUp(self):