mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-29 22:16:33 +02:00
67 lines
3 KiB
Python
67 lines
3 KiB
Python
from django.urls import reverse
|
|
from django.test import TestCase, Client
|
|
from registrar.models import FederalAgency, SeniorOfficial, User
|
|
from django.contrib.auth import get_user_model
|
|
from registrar.tests.common import create_superuser, create_user
|
|
|
|
|
|
class GetSeniorOfficialJsonTest(TestCase):
|
|
def setUp(self):
|
|
self.client = Client()
|
|
p = "password"
|
|
self.user = get_user_model().objects.create_user(username="testuser", password=p)
|
|
|
|
self.superuser = create_superuser()
|
|
self.analyst_user = create_user()
|
|
|
|
self.agency = FederalAgency.objects.create(agency="Test Agency")
|
|
self.senior_official = SeniorOfficial.objects.create(
|
|
first_name="John", last_name="Doe", title="Director", federal_agency=self.agency
|
|
)
|
|
|
|
self.api_url = reverse("get-senior-official-from-federal-agency-json")
|
|
|
|
def tearDown(self):
|
|
User.objects.all().delete()
|
|
SeniorOfficial.objects.all().delete()
|
|
FederalAgency.objects.all().delete()
|
|
|
|
def test_get_senior_official_json_authenticated_superuser(self):
|
|
"""Test that a superuser can fetch the senior official information."""
|
|
p = "adminpass"
|
|
self.client.login(username="superuser", password=p)
|
|
response = self.client.get(self.api_url, {"agency_name": "Test Agency"})
|
|
self.assertEqual(response.status_code, 200)
|
|
data = response.json()
|
|
self.assertEqual(data["id"], self.senior_official.id)
|
|
self.assertEqual(data["first_name"], "John")
|
|
self.assertEqual(data["last_name"], "Doe")
|
|
self.assertEqual(data["title"], "Director")
|
|
|
|
def test_get_senior_official_json_authenticated_analyst(self):
|
|
"""Test that an analyst user can fetch the senior official's information."""
|
|
p = "userpass"
|
|
self.client.login(username="staffuser", password=p)
|
|
response = self.client.get(self.api_url, {"agency_name": "Test Agency"})
|
|
self.assertEqual(response.status_code, 200)
|
|
data = response.json()
|
|
self.assertEqual(data["id"], self.senior_official.id)
|
|
self.assertEqual(data["first_name"], "John")
|
|
self.assertEqual(data["last_name"], "Doe")
|
|
self.assertEqual(data["title"], "Director")
|
|
|
|
def test_get_senior_official_json_unauthenticated(self):
|
|
"""Test that an unauthenticated user receives a 403 with an error message."""
|
|
p = "password"
|
|
self.client.login(username="testuser", password=p)
|
|
response = self.client.get(self.api_url, {"agency_name": "Test Agency"})
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
def test_get_senior_official_json_not_found(self):
|
|
"""Test that a request for a non-existent agency returns a 404 with an error message."""
|
|
p = "adminpass"
|
|
self.client.login(username="superuser", password=p)
|
|
response = self.client.get(self.api_url, {"agency_name": "Non-Federal Agency"})
|
|
self.assertEqual(response.status_code, 404)
|
|
data = response.json()
|
|
self.assertEqual(data["error"], "Senior Official not found")
|