forked from erp-dev/erp
fin
This commit is contained in:
57
api_v2/test_schema_docs_access.py
Normal file
57
api_v2/test_schema_docs_access.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TestCase
|
||||
from rest_framework.test import APIClient
|
||||
from rest_framework_simplejwt.tokens import RefreshToken
|
||||
|
||||
from basic_info.models import Employee, Merchant, MerchantTypeEnum
|
||||
|
||||
|
||||
class APIDocsSchemaAccessTest(TestCase):
|
||||
def setUp(self):
|
||||
self.merchant = Merchant.objects.create(name='文档审查商户', type=MerchantTypeEnum.STORE)
|
||||
self.user = get_user_model().objects.create_user(username='schema-docs-user', password='pass12345')
|
||||
self.employee = Employee.objects.create(
|
||||
merchant=self.merchant,
|
||||
sys_user=self.user,
|
||||
name='文档审查员工',
|
||||
)
|
||||
|
||||
def _auth_client(self):
|
||||
token = str(RefreshToken.for_user(self.user).access_token)
|
||||
client = APIClient()
|
||||
client.credentials(HTTP_AUTHORIZATION=f'Bearer {token}')
|
||||
return client
|
||||
|
||||
def test_schema_and_docs_require_jwt(self):
|
||||
client = APIClient()
|
||||
|
||||
schema_response = client.get('/api/schema/', HTTP_ACCEPT='application/json')
|
||||
docs_response = client.get('/api/docs/')
|
||||
|
||||
self.assertEqual(schema_response.status_code, 401)
|
||||
self.assertEqual(docs_response.status_code, 401)
|
||||
|
||||
def test_authenticated_user_can_access_schema_and_docs(self):
|
||||
client = self._auth_client()
|
||||
|
||||
schema_response = client.get('/api/schema/', HTTP_ACCEPT='application/json')
|
||||
docs_response = client.get('/api/docs/')
|
||||
|
||||
self.assertEqual(schema_response.status_code, 200)
|
||||
self.assertEqual(docs_response.status_code, 200)
|
||||
|
||||
def test_schema_contains_latest_mission_api(self):
|
||||
client = self._auth_client()
|
||||
|
||||
response = client.get('/api/schema/', HTTP_ACCEPT='application/json')
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
schema_text = response.content.decode('utf-8')
|
||||
expected_fragments = [
|
||||
'employee_type_ids',
|
||||
'/api/v2/missions/',
|
||||
'/api/v2/missions/by-printing-order/{printing_order_id}/',
|
||||
'/api/v2/mission-replies/{reply_id}/reject/',
|
||||
]
|
||||
missing = [fragment for fragment in expected_fragments if fragment not in schema_text]
|
||||
self.assertEqual(missing, [])
|
||||
Reference in New Issue
Block a user