Add RDAP tests

This commit is contained in:
Erin Song 2024-09-24 16:37:36 -07:00
parent 919fbbfd2f
commit 5439894fa3
No known key found for this signature in database
3 changed files with 59 additions and 7 deletions

View file

@ -135,7 +135,7 @@ class AvailableAPITest(MockEppLib):
self.user = get_user_model().objects.create( self.user = get_user_model().objects.create(
username=username, title=title, first_name=first_name, last_name=last_name, email=email, phone=phone username=username, title=title, first_name=first_name, last_name=last_name, email=email, phone=phone
) )
def test_available_get(self): def test_available_get(self):
self.client.force_login(self.user) self.client.force_login(self.user)
response = self.client.get(API_BASE_PATH + "nonsense") response = self.client.get(API_BASE_PATH + "nonsense")

View file

@ -6,8 +6,9 @@ from django.contrib.auth import get_user_model
from django.test import RequestFactory from django.test import RequestFactory
from django.test import TestCase from django.test import TestCase
from ..views import available, check_domain_available from ..views import available, check_domain_available, rdap
from .common import less_console_noise from .common import less_console_noise
from registrar.tests.common import MockRdapLib, MockEppLib
from registrar.utility.errors import GenericError, GenericErrorCodes from registrar.utility.errors import GenericError, GenericErrorCodes
from unittest.mock import call from unittest.mock import call
@ -17,10 +18,42 @@ from epplibwrapper import (
API_BASE_PATH = "/api/v1/rdap/?domain=" API_BASE_PATH = "/api/v1/rdap/?domain="
class RdapAPITest(MockEppLib):
"""Test that the RDAP API can be called as expected."""
def setUp(self): class RDapViewTest(MockRdapLib):
"""Test that the RDAP view function works as expected"""
def setUp(self):
super().setUp()
self.user = get_user_model().objects.create(username="username")
self.factory = RequestFactory()
def test_rdap_get_no_tld(self):
"""RDAP API successfully fetches RDAP for domain without a TLD"""
request = self.factory.get(API_BASE_PATH + "whitehouse")
request.user = self.user
response = rdap(request, domain="whitehouse")
# contains the right text
self.assertContains(response, "rdap")
# can be parsed into JSON with appropriate keys
response_object = json.loads(response.content)
self.assertIn("rdapConformance", response_object)
def test_rdap_invalid_domain(self):
"""RDAP API accepts invalid domain queries and returns JSON response
with appropriate error codes"""
request = self.factory.get(API_BASE_PATH + "whitehouse.com")
request.user = self.user
response = rdap(request, domain="whitehouse.com")
self.assertContains(response, "errorCode")
response_object = json.loads(response.content)
self.assertIn("errorCode", response_object)
class RdapAPITest(MockRdapLib):
"""Test that the API can be called as expected."""
def setUp(self):
super().setUp() super().setUp()
username = "test_user" username = "test_user"
first_name = "First" first_name = "First"
@ -33,8 +66,10 @@ class RdapAPITest(MockEppLib):
) )
def test_rdap_get(self): def test_rdap_get(self):
"""Can call RDAP API"""
self.client.force_login(self.user) self.client.force_login(self.user)
response = self.client.get(API_BASE_PATH + "whitehouse.gov") response = self.client.get(API_BASE_PATH + "whitehouse.gov")
self.assertContains(response, "RDAP") self.assertContains(response, "rdap")
response_object = json.loads(response.content) response_object = json.loads(response.content)
self.assertIn("RDAP", response_object) self.assertIn("rdapConformance", response_object)

View file

@ -1029,6 +1029,23 @@ def generic_domain_object(domain_type, object_name):
return domain_request return domain_request
class MockRdapLib(TestCase):
class fakedRdapObject(object):
def __init__(
self,
rdapConformance=...,
description=...,
errorCode=...,
title=...
):
self.rdapConformance = rdapConformance
self.description = description
self.errorCode = errorCode
self.title = title
class MockEppLib(TestCase): class MockEppLib(TestCase):
class fakedEppObject(object): class fakedEppObject(object):
"""""" """"""