39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
from django.contrib.auth import get_user_model
|
|
from rest_framework.authtoken.models import Token
|
|
from rest_framework.test import APIClient, APITestCase
|
|
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class MCPTokenEndpointTests(APITestCase):
|
|
def setUp(self):
|
|
self.user = User.objects.create_user(
|
|
username="mcp-token-user",
|
|
email="mcp-token@example.com",
|
|
password="password123",
|
|
)
|
|
|
|
def test_requires_authentication(self):
|
|
unauthenticated_client = APIClient()
|
|
response = unauthenticated_client.get("/auth/mcp-token/")
|
|
self.assertIn(response.status_code, [401, 403])
|
|
|
|
def test_returns_token_for_authenticated_user(self):
|
|
self.client.force_authenticate(user=self.user)
|
|
response = self.client.get("/auth/mcp-token/")
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertIn("token", response.json())
|
|
self.assertTrue(Token.objects.filter(user=self.user).exists())
|
|
|
|
def test_reuses_existing_token(self):
|
|
existing_token = Token.objects.create(user=self.user)
|
|
|
|
self.client.force_authenticate(user=self.user)
|
|
response = self.client.get("/auth/mcp-token/")
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response.json().get("token"), existing_token.key)
|
|
self.assertEqual(Token.objects.filter(user=self.user).count(), 1)
|