mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-19 19:09:22 +02:00
review feedback: error checking, timeouts, add .gov if missing
This commit is contained in:
parent
5d9a469ebd
commit
61b4cbf10b
3 changed files with 77 additions and 14 deletions
|
@ -2,11 +2,14 @@
|
|||
|
||||
import json
|
||||
|
||||
from django.core.exceptions import BadRequest
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TestCase, RequestFactory
|
||||
|
||||
from ..views import available, _domains, in_domains
|
||||
|
||||
API_BASE_PATH = "/api/v1/available/"
|
||||
|
||||
|
||||
class AvailableViewTest(TestCase):
|
||||
|
||||
|
@ -17,7 +20,7 @@ class AvailableViewTest(TestCase):
|
|||
self.factory = RequestFactory()
|
||||
|
||||
def test_view_function(self):
|
||||
request = self.factory.get("/available/test.gov")
|
||||
request = self.factory.get(API_BASE_PATH + "test.gov")
|
||||
request.user = self.user
|
||||
response = available(request, domain="test.gov")
|
||||
# has the right text in it
|
||||
|
@ -27,7 +30,11 @@ class AvailableViewTest(TestCase):
|
|||
self.assertIn("available", response_object)
|
||||
|
||||
def test_domain_list(self):
|
||||
"""Test the domain list that is returned."""
|
||||
"""Test the domain list that is returned from Github.
|
||||
|
||||
This does not mock out the external file, it is actually fetched from
|
||||
the internet.
|
||||
"""
|
||||
domains = _domains()
|
||||
self.assertIn("gsa.gov", domains)
|
||||
# entries are all lowercase so GSA.GOV is not in the set
|
||||
|
@ -42,23 +49,44 @@ class AvailableViewTest(TestCase):
|
|||
self.assertTrue(in_domains("GSA.GOV"))
|
||||
# This domain should not have been registered
|
||||
self.assertFalse(in_domains("igorville.gov"))
|
||||
# all the entries have dots
|
||||
self.assertFalse(in_domains("gsa"))
|
||||
|
||||
def test_in_domains_dotgov(self):
|
||||
"""Domain searches work without trailing .gov"""
|
||||
self.assertTrue(in_domains("gsa"))
|
||||
# input is lowercased so GSA.GOV should be found
|
||||
self.assertTrue(in_domains("GSA"))
|
||||
# This domain should not have been registered
|
||||
self.assertFalse(in_domains("igorville"))
|
||||
|
||||
def test_not_available_domain(self):
|
||||
"""gsa.gov is not available"""
|
||||
request = self.factory.get("/available/gsa.gov")
|
||||
request = self.factory.get(API_BASE_PATH + "gsa.gov")
|
||||
request.user = self.user
|
||||
response = available(request, domain="gsa.gov")
|
||||
self.assertFalse(json.loads(response.content)["available"])
|
||||
|
||||
def test_available_domain(self):
|
||||
"""igorville.gov is still available"""
|
||||
request = self.factory.get("/available/igorville.gov")
|
||||
request = self.factory.get(API_BASE_PATH + "igorville.gov")
|
||||
request.user = self.user
|
||||
response = available(request, domain="igorville.gov")
|
||||
self.assertTrue(json.loads(response.content)["available"])
|
||||
|
||||
def test_available_domain_dotgov(self):
|
||||
"""igorville.gov is still available even without the .gov suffix"""
|
||||
request = self.factory.get(API_BASE_PATH + "igorville")
|
||||
request.user = self.user
|
||||
response = available(request, domain="igorville")
|
||||
self.assertTrue(json.loads(response.content)["available"])
|
||||
|
||||
def test_error_handling(self):
|
||||
"""Calling with bad strings raises an error."""
|
||||
bad_string = "blah!;"
|
||||
request = self.factory.get(API_BASE_PATH + bad_string)
|
||||
request.user = self.user
|
||||
with self.assertRaisesMessage(BadRequest, "Invalid"):
|
||||
available(request, domain=bad_string)
|
||||
|
||||
|
||||
class AvailableAPITest(TestCase):
|
||||
|
||||
|
@ -69,12 +97,17 @@ class AvailableAPITest(TestCase):
|
|||
|
||||
def test_available_get(self):
|
||||
self.client.force_login(self.user)
|
||||
response = self.client.get("/available/nonsense")
|
||||
response = self.client.get(API_BASE_PATH + "nonsense")
|
||||
self.assertContains(response, "available")
|
||||
response_object = json.loads(response.content)
|
||||
self.assertIn("available", response_object)
|
||||
|
||||
def test_available_post(self):
|
||||
"""Cannot post to the /available/ API endpoint."""
|
||||
response = self.client.post("/available/nonsense")
|
||||
response = self.client.post(API_BASE_PATH + "nonsense")
|
||||
self.assertEqual(response.status_code, 405)
|
||||
|
||||
def test_available_bad_input(self):
|
||||
self.client.force_login(self.user)
|
||||
response = self.client.get(API_BASE_PATH + "blah!;")
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue