forked from erp-dev/erp
feat: added /api/v2/roles/
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user