from django.contrib.auth import get_user_model from django.test import TestCase from django.urls import reverse class ProfileTests(TestCase): """验证资料显式创建、认证保护和更新边界。""" def setUp(self): self.user = get_user_model().objects.create_user( username="alice", password="safe-pass-123", ) def test_profile_requires_login(self): response = self.client.get(reverse("accounts:profile")) self.assertEqual(response.status_code, 302) def test_profile_is_created_and_updated(self): self.client.force_login(self.user) response = self.client.post( reverse("accounts:profile"), {"display_name": "爱丽丝", "timezone": "Asia/Shanghai"}, ) self.assertRedirects(response, reverse("accounts:profile")) self.user.refresh_from_db() self.assertEqual(self.user.profile.display_name, "爱丽丝") def test_profile_rejects_unknown_timezone(self): self.client.force_login(self.user) response = self.client.post( reverse("accounts:profile"), {"display_name": "爱丽丝", "timezone": "Unknown/Timezone"}, ) self.assertEqual(response.status_code, 200) self.assertContains(response, "选择一个有效的选项") def test_login_and_post_logout_flow(self): login_response = self.client.post( reverse("accounts:login"), {"username": "alice", "password": "safe-pass-123"}, ) self.assertRedirects(login_response, reverse("agent_runtime:run-list")) logout_response = self.client.post(reverse("accounts:logout")) self.assertRedirects(logout_response, reverse("accounts:login"))