mirror of
https://github.com/google/nomulus
synced 2026-03-27 12:55:28 +00:00
Statically import Truth.assertThat() in tests (#2395)
This also involved breaking out an improperly done assertThat() helper overload method for JsonObjects into a proper Subject that doesn't further overload assertThat().
This commit is contained in:
@@ -28,7 +28,6 @@ import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.keyring.api.Keyring;
|
||||
import google.registry.request.UrlConnectionService;
|
||||
import google.registry.testing.FakeClock;
|
||||
@@ -117,8 +116,7 @@ class BsaCredentialTest {
|
||||
void fetchNewAuthToken_whenStatusIsNotOK_throwsRetriableException() throws Exception {
|
||||
setupHttp();
|
||||
when(connection.getResponseCode()).thenReturn(202);
|
||||
Truth.assertThat(
|
||||
assertThrows(BsaException.class, () -> credential.getAuthToken()).isRetriable())
|
||||
assertThat(assertThrows(BsaException.class, () -> credential.getAuthToken()).isRetriable())
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
package google.registry.flows;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.model.EppResourceUtils.loadByForeignKey;
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS;
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS_AND_CLOSE;
|
||||
@@ -35,7 +36,6 @@ import static org.joda.money.CurrencyUnit.USD;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
import com.google.common.collect.Ordering;
|
||||
import com.google.common.truth.Truth;
|
||||
import com.google.re2j.Matcher;
|
||||
import com.google.re2j.Pattern;
|
||||
import google.registry.model.billing.BillingBase.Reason;
|
||||
@@ -494,8 +494,7 @@ class EppLifecycleDomainTest extends EppTestCase {
|
||||
|
||||
// Make sure that in the future, the domain expiration is unchanged after deletion
|
||||
Domain clonedDomain = domain.cloneProjectedAtTime(deleteTime.plusYears(5));
|
||||
Truth.assertThat(clonedDomain.getRegistrationExpirationTime())
|
||||
.isEqualTo(createTime.plusYears(2));
|
||||
assertThat(clonedDomain.getRegistrationExpirationTime()).isEqualTo(createTime.plusYears(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -51,7 +51,6 @@ import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.flows.EppException;
|
||||
import google.registry.flows.EppRequestSource;
|
||||
import google.registry.flows.FlowUtils.NotLoggedInException;
|
||||
@@ -1348,7 +1347,7 @@ class DomainRenewFlowTest extends ResourceFlowTestCase<DomainRenewFlow, Domain>
|
||||
// We still need to verify that the bulk token is removed as it's not being tested as a part of
|
||||
// doSuccessfulTest
|
||||
Domain domain = reloadResourceByForeignKey();
|
||||
Truth.assertThat(domain.getCurrentBulkToken()).isEmpty();
|
||||
assertThat(domain.getCurrentBulkToken()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
package google.registry.model.console;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.model.ImmutableObjectSubject.assertAboutImmutableObjects;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.model.EntityTestCase;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -57,10 +57,10 @@ public class UserDaoTest extends EntityTestCase {
|
||||
UserDao.saveUser(user);
|
||||
User fromDb = UserDao.loadUser("email@email.com").get();
|
||||
// nonexistent one should never exist
|
||||
Truth.assertThat(UserDao.loadUser("nonexistent@email.com")).isEmpty();
|
||||
assertThat(UserDao.loadUser("nonexistent@email.com")).isEmpty();
|
||||
// now try deleting the one that does exist
|
||||
tm().transact(() -> tm().delete(fromDb));
|
||||
Truth.assertThat(UserDao.loadUser("email@email.com")).isEmpty();
|
||||
assertThat(UserDao.loadUser("email@email.com")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.model.ImmutableObject;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.persistence.transaction.JpaTestExtensions.JpaUnitTestExtension;
|
||||
@@ -328,10 +327,10 @@ public class TransactionManagerTest {
|
||||
@Test
|
||||
void loadSingleton_returnsValue_orEmpty() {
|
||||
assertEntityNotExist(theEntity);
|
||||
Truth.assertThat(tm().transact(() -> tm().loadSingleton(TestEntity.class))).isEmpty();
|
||||
assertThat(tm().transact(() -> tm().loadSingleton(TestEntity.class))).isEmpty();
|
||||
|
||||
tm().transact(() -> tm().insert(theEntity));
|
||||
Truth.assertThat(tm().transact(() -> tm().loadSingleton(TestEntity.class))).hasValue(theEntity);
|
||||
assertThat(tm().transact(() -> tm().loadSingleton(TestEntity.class))).hasValue(theEntity);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static google.registry.testing.DatabaseHelper.persistSimpleResources;
|
||||
@@ -24,6 +23,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeDomain;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntry;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarPocs;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
@@ -221,7 +221,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
}
|
||||
|
||||
private void assertProperResponseForCatLol(String queryString, String expectedOutputFile) {
|
||||
assertThat(generateActualJson(queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(queryString))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
@@ -238,7 +239,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
|
||||
@Test
|
||||
void testInvalidDomain_returns400() {
|
||||
assertThat(generateActualJson("invalid/domain/name"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("invalid/domain/name"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"invalid/domain/name is not a valid domain name: Domain names can only contain a-z,"
|
||||
@@ -249,7 +251,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
|
||||
@Test
|
||||
void testUnknownDomain_returns400() {
|
||||
assertThat(generateActualJson("missingdomain.com"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("missingdomain.com"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"missingdomain.com is not a valid domain name: Domain name is under tld com which"
|
||||
@@ -299,7 +302,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
@Test
|
||||
void testIdnDomain_works() {
|
||||
login("idnregistrar");
|
||||
assertThat(generateActualJson("cat.みんな"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("cat.みんな"))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
@@ -317,7 +321,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
@Test
|
||||
void testIdnDomainWithPercentEncoding_works() {
|
||||
login("idnregistrar");
|
||||
assertThat(generateActualJson("cat.%E3%81%BF%E3%82%93%E3%81%AA"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("cat.%E3%81%BF%E3%82%93%E3%81%AA"))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
@@ -335,7 +340,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
@Test
|
||||
void testPunycodeDomain_works() {
|
||||
login("idnregistrar");
|
||||
assertThat(generateActualJson("cat.xn--q9jyb4c"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("cat.xn--q9jyb4c"))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
@@ -353,7 +359,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
@Test
|
||||
void testMultilevelDomain_works() {
|
||||
login("1tldregistrar");
|
||||
assertThat(generateActualJson("cat.1.tld"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("cat.1.tld"))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
@@ -379,7 +386,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
|
||||
@Test
|
||||
void testDeletedDomain_notFound() {
|
||||
assertThat(generateActualJson("dodo.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("dodo.lol"))
|
||||
.isEqualTo(generateExpectedJsonError("dodo.lol not found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
@@ -410,7 +418,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
void testDeletedDomain_works_loggedInAsCorrectRegistrar() {
|
||||
login("evilregistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("dodo.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("dodo.lol"))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
@@ -429,7 +438,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
void testDeletedDomain_works_loggedInAsAdmin() {
|
||||
loginAsAdmin();
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("dodo.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("dodo.lol"))
|
||||
.isEqualTo(
|
||||
addBoilerplate(
|
||||
jsonFileBuilder()
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.parseJsonObject;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
@@ -27,6 +26,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeDomain;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntry;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarPocs;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
@@ -481,7 +481,9 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
|
||||
private void runSuccessfulTest(RequestType requestType, String queryString, JsonObject expected) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJson(requestType, queryString)).isEqualTo(wrapInSearchReply(expected));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(requestType, queryString))
|
||||
.isEqualTo(wrapInSearchReply(expected));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@@ -514,7 +516,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
String nextQuery,
|
||||
String filename) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJson(requestType, queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(requestType, queryString))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("domain1.lol", domainRoid1)
|
||||
@@ -528,7 +531,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
|
||||
private void runNotFoundTest(RequestType requestType, String queryString, String errorMessage) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJson(requestType, queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(requestType, queryString))
|
||||
.isEqualTo(generateExpectedJsonError(errorMessage, 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
@@ -645,7 +649,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
|
||||
@Test
|
||||
void testInvalidRequest_rejected() {
|
||||
assertThat(generateActualJson(RequestType.NONE, null))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NONE, null))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"You must specify either name=XXXX, nsLdhName=YYYY or nsIp=ZZZZ", 400));
|
||||
@@ -655,7 +660,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
|
||||
@Test
|
||||
void testInvalidWildcard_rejected() {
|
||||
assertThat(generateActualJson(RequestType.NAME, "exam*ple"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "exam*ple"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of a label, but"
|
||||
@@ -667,7 +673,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
|
||||
@Test
|
||||
void testMultipleWildcards_rejected() {
|
||||
assertThat(generateActualJson(RequestType.NAME, "*.*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "*.*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of a label, but"
|
||||
@@ -680,7 +687,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testNoCharactersToMatch_rejected() {
|
||||
rememberWildcardType("*");
|
||||
assertThat(generateActualJson(RequestType.NAME, "*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Initial search string is required for wildcard domain searches without a TLD"
|
||||
@@ -693,7 +701,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testFewerThanTwoCharactersToMatch_rejected() {
|
||||
rememberWildcardType("a*");
|
||||
assertThat(generateActualJson(RequestType.NAME, "a*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "a*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Initial search string must be at least 2 characters for wildcard domain searches"
|
||||
@@ -846,7 +855,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testDomainMatch_catstar_lol_found_sql() {
|
||||
rememberWildcardType("cat*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "cat*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "cat*.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsCatStarReplySql());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(2L));
|
||||
@@ -855,7 +865,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testDomainMatch_cstar_lol_found_sql() {
|
||||
rememberWildcardType("c*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "c*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "c*.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsCatStarReplySql());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(2L));
|
||||
@@ -870,7 +881,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testDomainMatch_star_lol_found_sql() {
|
||||
rememberWildcardType("*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "*.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsCatStarReplySql());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(2L));
|
||||
@@ -880,7 +892,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testDomainMatch_star_lol_found_sameRegistrarRequested_sql() {
|
||||
action.registrarParam = Optional.of("evilregistrar");
|
||||
rememberWildcardType("*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "*.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsCatStarReplySql());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(2L));
|
||||
@@ -897,7 +910,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testDomainMatch_cat_star_found_sql() {
|
||||
rememberWildcardType("cat.*");
|
||||
assertThat(generateActualJson(RequestType.NAME, "cat.*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "cat.*"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("cat.1.test", "39-1_TEST")
|
||||
@@ -934,7 +948,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testDomainMatch_catstar_found_sql() {
|
||||
rememberWildcardType("cat*");
|
||||
assertThat(generateActualJson(RequestType.NAME, "cat*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "cat*"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("cat.1.test", "39-1_TEST")
|
||||
@@ -1058,7 +1073,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
// our way through all of them.
|
||||
createManyDomainsAndHosts(4, 50, 2);
|
||||
rememberWildcardType("domain*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "domain*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "domain*.lol"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("domain100.lol", "AC-LOL")
|
||||
@@ -1106,7 +1122,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testDomainMatch_tldSearchOrderedProperly_sql() {
|
||||
createManyDomainsAndHosts(4, 1, 2);
|
||||
rememberWildcardType("*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "*.lol"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("cat.lol", "C-LOL")
|
||||
@@ -1139,7 +1156,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testDomainMatch_truncatedResultsAfterMultipleChunks_sql() {
|
||||
createManyDomainsAndHosts(5, 6, 2);
|
||||
rememberWildcardType("domain*.lol");
|
||||
assertThat(generateActualJson(RequestType.NAME, "domain*.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NAME, "domain*.lol"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("domain12.lol", "5A-LOL")
|
||||
@@ -1197,7 +1215,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testNameserverMatch_foundMultiple() {
|
||||
rememberWildcardType("ns1.cat.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "ns1.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns1.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 2, 1);
|
||||
@@ -1207,7 +1226,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testNameserverMatch_foundMultiple_sameRegistrarRequested() {
|
||||
action.registrarParam = Optional.of("TheRegistrar");
|
||||
rememberWildcardType("ns1.cat.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "ns1.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns1.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 2, 1);
|
||||
@@ -1251,7 +1271,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testNameserverMatchWithNoPrefixAndDomainSuffix_found() {
|
||||
rememberWildcardType("*.cat.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "*.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 2, 2);
|
||||
@@ -1260,7 +1281,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testNameserverMatchWithOneCharacterPrefixAndDomainSuffix_found() {
|
||||
rememberWildcardType("n*.cat.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "n*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "n*.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 2, 2);
|
||||
@@ -1270,7 +1292,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testNameserverMatchWithOneCharacterPrefixAndDomainSuffix_found_sameRegistrarRequested() {
|
||||
action.registrarParam = Optional.of("TheRegistrar");
|
||||
rememberWildcardType("n*.cat.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "n*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "n*.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 2, 2);
|
||||
@@ -1286,7 +1309,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testNameserverMatchWithTwoCharacterPrefixAndDomainSuffix_found() {
|
||||
rememberWildcardType("ns*.cat.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "ns*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns*.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 2, 2);
|
||||
@@ -1563,7 +1587,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
// not trigger the truncation warning because all the domains will be duplicates.
|
||||
createManyDomainsAndHosts(4, 1, 36);
|
||||
rememberWildcardType("ns*.domain1.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "ns*.domain1.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns*.domain1.lol"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("domain1.lol", "8F-LOL")
|
||||
@@ -1579,7 +1604,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testNameserverMatch_incompleteResultsSet() {
|
||||
createManyDomainsAndHosts(2, 1, 41);
|
||||
rememberWildcardType("ns*.domain1.lol");
|
||||
assertThat(generateActualJson(RequestType.NS_LDH_NAME, "ns*.domain1.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns*.domain1.lol"))
|
||||
.isEqualTo(
|
||||
jsonFileBuilder()
|
||||
.addDomain("domain1.lol", "97-LOL")
|
||||
@@ -1621,7 +1647,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
@Test
|
||||
void testAddressMatchV4Address_foundMultiple() {
|
||||
rememberWildcardType("1.2.3.4");
|
||||
assertThat(generateActualJson(RequestType.NS_IP, "1.2.3.4"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_IP, "1.2.3.4"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_ADDRESS, 2, 1);
|
||||
@@ -1631,7 +1658,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
void testAddressMatchV4Address_foundMultiple_sameRegistrarRequested() {
|
||||
action.registrarParam = Optional.of("TheRegistrar");
|
||||
rememberWildcardType("1.2.3.4");
|
||||
assertThat(generateActualJson(RequestType.NS_IP, "1.2.3.4"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_IP, "1.2.3.4"))
|
||||
.isEqualTo(generateExpectedJsonForTwoDomainsNsReply());
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(SearchType.BY_NAMESERVER_ADDRESS, 2, 1);
|
||||
@@ -1711,7 +1739,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
|
||||
login("evilregistrar");
|
||||
persistDomainAsDeleted(domainCatExample, clock.nowUtc().minusDays(1));
|
||||
rememberWildcardType("1.2.3.4");
|
||||
assertThat(generateActualJson(RequestType.NS_IP, "1.2.3.4"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(RequestType.NS_IP, "1.2.3.4"))
|
||||
.isEqualTo(
|
||||
wrapInSearchReply(
|
||||
jsonFileBuilder()
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.loadJsonFile;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
@@ -25,6 +24,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeDomain;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeHost;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarPocs;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -170,7 +170,8 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
String rdapStatus,
|
||||
String address,
|
||||
String fileName) {
|
||||
assertThat(generateActualJson(handleQuery))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(handleQuery))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
handleQuery, fullName, rdapStatus, address, fileName));
|
||||
@@ -178,7 +179,8 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
}
|
||||
|
||||
private void runNotFoundTest(String handleQuery) {
|
||||
assertThat(generateActualJson(handleQuery))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(handleQuery))
|
||||
.isEqualTo(generateExpectedJsonError(handleQuery + " not found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
@@ -305,7 +307,8 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
|
||||
@Test
|
||||
void testRegistrarByName_found() {
|
||||
assertThat(generateActualJson("IDN%20Registrar"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("IDN%20Registrar"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"102", "IDN Registrar", "active", null, "rdap_registrar.json"));
|
||||
@@ -364,9 +367,11 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
@Test
|
||||
void testQueryParameter_ignored() {
|
||||
login("evilregistrar");
|
||||
assertThat(generateActualJson(techContact.getRepoId() + "?key=value")).isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
techContact.getRepoId(), "rdap_associated_contact.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson(techContact.getRepoId() + "?key=value"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
techContact.getRepoId(), "rdap_associated_contact.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.loadJsonFile;
|
||||
import static google.registry.rdap.RdapTestHelper.parseJsonObject;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
@@ -27,6 +26,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeAndPersistD
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntry;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarPocs;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
@@ -285,14 +285,16 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
@Nullable String address,
|
||||
String fileName) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJsonWithFullName(queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName(queryString))
|
||||
.isEqualTo(generateExpectedJsonForEntity(handle, fullName, status, address, fileName));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
private void runNotFoundNameTest(String queryString) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJsonWithFullName(queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName(queryString))
|
||||
.isEqualTo(generateExpectedJsonError("No entities found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
@@ -323,14 +325,16 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
@Nullable String address,
|
||||
String fileName) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJsonWithHandle(queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithHandle(queryString))
|
||||
.isEqualTo(generateExpectedJsonForEntity(handle, fullName, status, address, fileName));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
private void runNotFoundHandleTest(String queryString) {
|
||||
rememberWildcardType(queryString);
|
||||
assertThat(generateActualJsonWithHandle(queryString))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithHandle(queryString))
|
||||
.isEqualTo(generateExpectedJsonError("No entities found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
@@ -393,17 +397,18 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
@Test
|
||||
void testInvalidRequest_rejected() {
|
||||
action.run();
|
||||
assertThat(parseJsonObject(response.getPayload()))
|
||||
assertAboutJson()
|
||||
.that(parseJsonObject(response.getPayload()))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"You must specify either fn=XXXX or handle=YYYY", 400));
|
||||
generateExpectedJsonError("You must specify either fn=XXXX or handle=YYYY", 400));
|
||||
assertThat(response.getStatus()).isEqualTo(400);
|
||||
verifyErrorMetrics(Optional.empty(), 400);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNameMatch_suffixRejected() {
|
||||
assertThat(generateActualJsonWithFullName("exam*ple"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("exam*ple"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of the query,"
|
||||
@@ -415,7 +420,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
|
||||
@Test
|
||||
void testHandleMatch_suffixRejected() {
|
||||
assertThat(generateActualJsonWithHandle("exam*ple"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithHandle("exam*ple"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of the query,"
|
||||
@@ -427,7 +433,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
|
||||
@Test
|
||||
void testMultipleWildcards_rejected() {
|
||||
assertThat(generateActualJsonWithHandle("*.*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithHandle("*.*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of the query,"
|
||||
@@ -440,11 +447,10 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
@Test
|
||||
void testNoCharactersToMatch_rejected() {
|
||||
rememberWildcardType("*");
|
||||
assertThat(generateActualJsonWithHandle("*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithHandle("*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Initial search string must be at least 2 characters",
|
||||
422));
|
||||
generateExpectedJsonError("Initial search string must be at least 2 characters", 422));
|
||||
assertThat(response.getStatus()).isEqualTo(422);
|
||||
verifyErrorMetrics(Optional.empty(), 422);
|
||||
}
|
||||
@@ -452,11 +458,10 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
@Test
|
||||
void testFewerThanTwoCharactersToMatch_rejected() {
|
||||
rememberWildcardType("a*");
|
||||
assertThat(generateActualJsonWithHandle("a*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithHandle("a*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Initial search string must be at least 2 characters",
|
||||
422));
|
||||
generateExpectedJsonError("Initial search string must be at least 2 characters", 422));
|
||||
assertThat(response.getStatus()).isEqualTo(422);
|
||||
verifyErrorMetrics(Optional.empty(), 422);
|
||||
}
|
||||
@@ -464,11 +469,11 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
@Test
|
||||
void testInvalidSubtype_rejected() {
|
||||
action.subtypeParam = Optional.of("Space Aliens");
|
||||
assertThat(generateActualJsonWithFullName("Blinky (赤ベイ)"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Blinky (赤ベイ)"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Subtype parameter must specify contacts, registrars or all",
|
||||
400));
|
||||
"Subtype parameter must specify contacts, registrars or all", 400));
|
||||
assertThat(response.getStatus()).isEqualTo(400);
|
||||
metricSearchType = SearchType.NONE; // Error occurs before search type is set.
|
||||
verifyErrorMetrics(Optional.empty(), 400);
|
||||
@@ -569,7 +574,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
void testNameMatchContact_found_wildcardBoth() {
|
||||
login("2-RegistrarTest");
|
||||
rememberWildcardType("Blin*");
|
||||
assertThat(generateActualJsonWithFullName("Blin*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Blin*"))
|
||||
.isEqualTo(generateExpectedJson("rdap_multiple_contacts2.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(2);
|
||||
@@ -661,7 +667,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
createManyContactsAndRegistrars(4, 0, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
// JsonObject foo = generateActualJsonWithFullName("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(generateExpectedJson("rdap_nontruncated_contacts.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(4);
|
||||
@@ -672,7 +679,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
login("2-RegistrarTest");
|
||||
createManyContactsAndRegistrars(5, 0, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(
|
||||
generateExpectedJson(
|
||||
"fn=Entity+*&cursor=YzpFbnRpdHkgNA%3D%3D", "rdap_truncated_contacts.json"));
|
||||
@@ -685,7 +693,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
login("2-RegistrarTest");
|
||||
createManyContactsAndRegistrars(9, 0, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(
|
||||
generateExpectedJson(
|
||||
"fn=Entity+*&cursor=YzpFbnRpdHkgNA%3D%3D", "rdap_truncated_contacts.json"));
|
||||
@@ -717,7 +726,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
void testNameMatchRegistrars_nonTruncated() {
|
||||
createManyContactsAndRegistrars(0, 4, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(generateExpectedJson("rdap_nontruncated_registrars.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(0);
|
||||
@@ -727,7 +737,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
void testNameMatchRegistrars_truncated() {
|
||||
createManyContactsAndRegistrars(0, 5, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(
|
||||
generateExpectedJson(
|
||||
"fn=Entity+*&cursor=cjpFbnRpdHkgNA%3D%3D", "rdap_truncated_registrars.json"));
|
||||
@@ -739,7 +750,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
void testNameMatchRegistrars_reallyTruncated() {
|
||||
createManyContactsAndRegistrars(0, 9, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(
|
||||
generateExpectedJson(
|
||||
"fn=Entity+*&cursor=cjpFbnRpdHkgNA%3D%3D", "rdap_truncated_registrars.json"));
|
||||
@@ -800,7 +812,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
login("2-RegistrarTest");
|
||||
createManyContactsAndRegistrars(3, 3, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(
|
||||
generateExpectedJson(
|
||||
"fn=Entity+*&cursor=cjpFbnRpdHkgNA%3D%3D", "rdap_truncated_mixed_entities.json"));
|
||||
@@ -830,7 +843,8 @@ class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySear
|
||||
action.subtypeParam = Optional.of("contacts");
|
||||
createManyContactsAndRegistrars(4, 4, registrarTest);
|
||||
rememberWildcardType("Entity *");
|
||||
assertThat(generateActualJsonWithFullName("Entity *"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithFullName("Entity *"))
|
||||
.isEqualTo(generateExpectedJson("rdap_nontruncated_contacts.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(4);
|
||||
|
||||
@@ -16,7 +16,6 @@ package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapDataStructures.EventAction.TRANSFER;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static google.registry.testing.DatabaseHelper.persistSimpleResources;
|
||||
@@ -24,6 +23,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeAndPersistH
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeDomain;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntry;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static jakarta.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
@@ -299,57 +299,65 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testRegistrar() {
|
||||
assertThat(rdapJsonFormatter.createRdapRegistrarEntity(registrar, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapRegistrarEntity(registrar, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_registrar.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testRegistrar_summary() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter.createRdapRegistrarEntity(registrar, OutputDataType.SUMMARY).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_registrar_summary.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_ipv4() {
|
||||
assertThat(rdapJsonFormatter.createRdapNameserver(hostIpv4, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapNameserver(hostIpv4, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_ipv4.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_ipv6() {
|
||||
assertThat(rdapJsonFormatter.createRdapNameserver(hostIpv6, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapNameserver(hostIpv6, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_ipv6.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_both() {
|
||||
assertThat(rdapJsonFormatter.createRdapNameserver(hostBoth, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapNameserver(hostBoth, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_both.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_both_summary() {
|
||||
assertThat(rdapJsonFormatter.createRdapNameserver(hostBoth, OutputDataType.SUMMARY).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapNameserver(hostBoth, OutputDataType.SUMMARY).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_both_summary.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_noAddresses() {
|
||||
assertThat(
|
||||
rdapJsonFormatter.createRdapNameserver(hostNoAddresses, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapNameserver(hostNoAddresses, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_no_addresses.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_notLinked() {
|
||||
assertThat(rdapJsonFormatter.createRdapNameserver(hostNotLinked, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapNameserver(hostNotLinked, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_not_linked.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHost_superordinateHasPendingTransfer() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapNameserver(hostSuperordinatePendingTransfer, OutputDataType.FULL)
|
||||
.toJson())
|
||||
@@ -358,7 +366,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testRegistrant() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(
|
||||
contactRegistrant,
|
||||
@@ -370,7 +379,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testRegistrant_summary() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(
|
||||
contactRegistrant,
|
||||
@@ -383,7 +393,8 @@ class RdapJsonFormatterTest {
|
||||
@Test
|
||||
void testRegistrant_loggedOut() {
|
||||
rdapJsonFormatter.rdapAuthorization = RdapAuthorization.PUBLIC_AUTHORIZATION;
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(
|
||||
contactRegistrant,
|
||||
@@ -402,7 +413,8 @@ class RdapJsonFormatterTest {
|
||||
rdapJsonFormatter.fullServletPath =
|
||||
rdapJsonFormatter.fullServletPath.substring(
|
||||
0, rdapJsonFormatter.fullServletPath.length() - 1);
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(
|
||||
contactRegistrant,
|
||||
@@ -414,7 +426,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testAdmin() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(
|
||||
contactAdmin, ImmutableSet.of(RdapEntity.Role.ADMIN), OutputDataType.FULL)
|
||||
@@ -424,7 +437,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testTech() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(
|
||||
contactTech, ImmutableSet.of(RdapEntity.Role.TECH), OutputDataType.FULL)
|
||||
@@ -434,7 +448,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testRolelessContact() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(contactTech, ImmutableSet.of(), OutputDataType.FULL)
|
||||
.toJson())
|
||||
@@ -443,7 +458,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testUnlinkedContact() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapContactEntity(contactNotLinked, ImmutableSet.of(), OutputDataType.FULL)
|
||||
.toJson())
|
||||
@@ -452,13 +468,15 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testDomain_full() {
|
||||
assertThat(rdapJsonFormatter.createRdapDomain(domainFull, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapDomain(domainFull, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_domain_full.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDomain_summary() {
|
||||
assertThat(rdapJsonFormatter.createRdapDomain(domainFull, OutputDataType.SUMMARY).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapDomain(domainFull, OutputDataType.SUMMARY).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_domain_summary.json"));
|
||||
}
|
||||
|
||||
@@ -476,13 +494,15 @@ class RdapJsonFormatterTest {
|
||||
@Test
|
||||
void testDomain_logged_out() {
|
||||
rdapJsonFormatter.rdapAuthorization = RdapAuthorization.PUBLIC_AUTHORIZATION;
|
||||
assertThat(rdapJsonFormatter.createRdapDomain(domainFull, OutputDataType.FULL).toJson())
|
||||
assertAboutJson()
|
||||
.that(rdapJsonFormatter.createRdapDomain(domainFull, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_domain_logged_out.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDomain_noNameserversNoTransfersMultipleRoleContact() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
rdapJsonFormatter
|
||||
.createRdapDomain(domainNoNameserversNoTransfers, OutputDataType.FULL)
|
||||
.toJson())
|
||||
@@ -491,7 +511,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testError() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
RdapObjectClasses.ErrorResponse.create(
|
||||
SC_BAD_REQUEST, "Invalid Domain Name", "Not a valid domain name")
|
||||
.toJson())
|
||||
@@ -500,7 +521,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testTopLevel() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
TopLevelReplyObject.create(
|
||||
new ReplyPayloadBase(BoilerplateType.OTHER) {
|
||||
@JsonableElement public static final String key = "value";
|
||||
@@ -512,7 +534,8 @@ class RdapJsonFormatterTest {
|
||||
|
||||
@Test
|
||||
void testTopLevel_domain() {
|
||||
assertThat(
|
||||
assertAboutJson()
|
||||
.that(
|
||||
TopLevelReplyObject.create(
|
||||
new ReplyPayloadBase(BoilerplateType.DOMAIN) {
|
||||
@JsonableElement public static final String key = "value";
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.loadJsonFile;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
@@ -105,132 +105,149 @@ class RdapNameserverActionTest extends RdapActionBaseTestCase<RdapNameserverActi
|
||||
|
||||
@Test
|
||||
void testInvalidNameserver_returns400() {
|
||||
assertThat(generateActualJson("invalid/host/name"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("invalid/host/name"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"invalid/host/name is not a valid nameserver: Invalid host name",
|
||||
400));
|
||||
"invalid/host/name is not a valid nameserver: Invalid host name", 400));
|
||||
assertThat(response.getStatus()).isEqualTo(400);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUnknownNameserver_returns404() {
|
||||
assertThat(generateActualJson("ns1.missing.com")).isEqualTo(
|
||||
generateExpectedJsonError("ns1.missing.com not found", 404));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.missing.com"))
|
||||
.isEqualTo(generateExpectedJsonError("ns1.missing.com not found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidNameserver_works() {
|
||||
assertThat(generateActualJson("ns1.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testTrailingDot_getsIgnored() {
|
||||
assertThat(generateActualJson("ns1.cat.lol."))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.cat.lol."))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUpperCase_getsCanonicalized() {
|
||||
assertThat(generateActualJson("Ns1.CaT.lOl."))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("Ns1.CaT.lOl."))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryParameter_getsIgnored() {
|
||||
assertThat(generateActualJson("ns1.cat.lol?key=value"))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.cat.lol?key=value"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "2-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "1.2.3.4",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testIdnNameserver_works() {
|
||||
assertThat(generateActualJson("ns1.cat.みんな"))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.みんな",
|
||||
ImmutableMap.of(
|
||||
"PUNYCODENAME", "ns1.cat.xn--q9jyb4c",
|
||||
"HANDLE", "5-ROID",
|
||||
"ADDRESSTYPE", "v6",
|
||||
"ADDRESS", "bad:f00d:cafe::15:beef",
|
||||
"STATUS", "active"),
|
||||
"rdap_host_unicode.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.cat.みんな"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.みんな",
|
||||
ImmutableMap.of(
|
||||
"PUNYCODENAME", "ns1.cat.xn--q9jyb4c",
|
||||
"HANDLE", "5-ROID",
|
||||
"ADDRESSTYPE", "v6",
|
||||
"ADDRESS", "bad:f00d:cafe::15:beef",
|
||||
"STATUS", "active"),
|
||||
"rdap_host_unicode.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPunycodeNameserver_works() {
|
||||
assertThat(generateActualJson("ns1.cat.xn--q9jyb4c"))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.みんな",
|
||||
ImmutableMap.of(
|
||||
"PUNYCODENAME", "ns1.cat.xn--q9jyb4c",
|
||||
"HANDLE", "5-ROID",
|
||||
"ADDRESSTYPE", "v6",
|
||||
"ADDRESS", "bad:f00d:cafe::15:beef",
|
||||
"STATUS", "active"),
|
||||
"rdap_host_unicode.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.cat.xn--q9jyb4c"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.みんな",
|
||||
ImmutableMap.of(
|
||||
"PUNYCODENAME", "ns1.cat.xn--q9jyb4c",
|
||||
"HANDLE", "5-ROID",
|
||||
"ADDRESSTYPE", "v6",
|
||||
"ADDRESS", "bad:f00d:cafe::15:beef",
|
||||
"STATUS", "active"),
|
||||
"rdap_host_unicode.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMultilevelNameserver_works() {
|
||||
assertThat(generateActualJson("ns1.domain.1.tld"))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.domain.1.tld",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "8-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "5.6.7.8",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.domain.1.tld"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.domain.1.tld",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "8-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "5.6.7.8",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testExternalNameserver_works() {
|
||||
assertThat(generateActualJson("ns1.domain.external"))
|
||||
.isEqualTo(generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.domain.external",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "C-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "9.10.11.12",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("ns1.domain.external"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.domain.external",
|
||||
ImmutableMap.of(
|
||||
"HANDLE", "C-ROID",
|
||||
"ADDRESSTYPE", "v4",
|
||||
"ADDRESS", "9.10.11.12",
|
||||
"STATUS", "active"),
|
||||
"rdap_host.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@@ -267,7 +284,8 @@ class RdapNameserverActionTest extends RdapActionBaseTestCase<RdapNameserverActi
|
||||
void testDeletedNameserver_found_loggedInAsCorrectRegistrar() {
|
||||
login("TheRegistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("nsdeleted.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("nsdeleted.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"nsdeleted.cat.lol",
|
||||
@@ -284,7 +302,8 @@ class RdapNameserverActionTest extends RdapActionBaseTestCase<RdapNameserverActi
|
||||
void testDeletedNameserver_found_loggedInAsAdmin() {
|
||||
loginAsAdmin();
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("nsdeleted.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJson("nsdeleted.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"nsdeleted.cat.lol",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.assertThat;
|
||||
import static google.registry.rdap.RdapTestHelper.loadJsonFile;
|
||||
import static google.registry.rdap.RdapTestHelper.parseJsonObject;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
@@ -26,6 +25,7 @@ import static google.registry.testing.DatabaseHelper.persistSimpleResources;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeDomain;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarPocs;
|
||||
import static google.registry.testing.GsonSubject.assertAboutJson;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
@@ -246,7 +246,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testInvalidRequest_rejected() {
|
||||
action.run();
|
||||
assertThat(parseJsonObject(response.getPayload()))
|
||||
assertAboutJson()
|
||||
.that(parseJsonObject(response.getPayload()))
|
||||
.isEqualTo(generateExpectedJsonError("You must specify either name=XXXX or ip=YYYY", 400));
|
||||
assertThat(response.getStatus()).isEqualTo(400);
|
||||
verifyErrorMetrics(Optional.empty(), 400);
|
||||
@@ -254,7 +255,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testInvalidSuffix_rejected() {
|
||||
assertThat(generateActualJsonWithName("exam*ple"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("exam*ple"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of a label, but"
|
||||
@@ -267,7 +269,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNonexistentDomainSuffix_unprocessable() {
|
||||
assertThat(generateActualJsonWithName("exam*.foo.bar"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("exam*.foo.bar"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"A suffix after a wildcard in a nameserver lookup must be an in-bailiwick domain",
|
||||
@@ -278,7 +281,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testMultipleWildcards_rejected() {
|
||||
assertThat(generateActualJsonWithName("*.*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("*.*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError(
|
||||
"Query can only have a single wildcard, and it must be at the end of a label, but"
|
||||
@@ -291,7 +295,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNoCharactersToMatch_rejected() {
|
||||
assertThat(generateActualJsonWithName("*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError("Initial search string must be at least 2 characters", 422));
|
||||
assertThat(response.getStatus()).isEqualTo(422);
|
||||
@@ -300,7 +305,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testFewerThanTwoCharactersToMatch_rejected() {
|
||||
assertThat(generateActualJsonWithName("a*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("a*"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonError("Initial search string must be at least 2 characters", 422));
|
||||
assertThat(response.getStatus()).isEqualTo(422);
|
||||
@@ -309,7 +315,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns1_cat_lol_found() {
|
||||
assertThat(generateActualJsonWithName("ns1.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns1.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.lol", null, "2-ROID", "v4", "1.2.3.4", "rdap_host_linked.json"));
|
||||
@@ -319,7 +326,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns1_cat_lol_foundWithUpperCase() {
|
||||
assertThat(generateActualJsonWithName("Ns1.CaT.lOl"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("Ns1.CaT.lOl"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.lol", null, "2-ROID", "v4", "1.2.3.4", "rdap_host_linked.json"));
|
||||
@@ -345,7 +353,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns2_cat_lol_found() {
|
||||
assertThat(generateActualJsonWithName("ns2.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns2.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns2.cat.lol",
|
||||
@@ -368,7 +377,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns1_cat_external_found() {
|
||||
assertThat(generateActualJsonWithName("ns1.cat.external"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns1.cat.external"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.external", null, "8-ROID", null, null, "rdap_host_external.json"));
|
||||
@@ -378,7 +388,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns1_cat_idn_unicode_found() {
|
||||
assertThat(generateActualJsonWithName("ns1.cat.みんな"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns1.cat.みんな"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.みんな",
|
||||
@@ -395,7 +406,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns1_cat_idn_punycode_found() {
|
||||
assertThat(generateActualJsonWithName("ns1.cat.xn--q9jyb4c"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns1.cat.xn--q9jyb4c"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.みんな",
|
||||
@@ -410,7 +422,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testNameMatch_ns1_cat_1_test_found() {
|
||||
assertThat(generateActualJsonWithName("ns1.cat.1.test"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns1.cat.1.test"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.1.test", null, "E-ROID", "v4", "1.2.3.6", "rdap_host.json"));
|
||||
@@ -502,7 +515,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testNameMatch_nontruncatedResultSet() {
|
||||
createManyHosts(4);
|
||||
assertThat(generateActualJsonWithName("nsx*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("nsx*.cat.lol"))
|
||||
.isEqualTo(loadJsonFile("rdap_nontruncated_hosts.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(4);
|
||||
@@ -511,7 +525,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testNameMatch_truncatedResultSet() {
|
||||
createManyHosts(5);
|
||||
assertThat(generateActualJsonWithName("nsx*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("nsx*.cat.lol"))
|
||||
.isEqualTo(
|
||||
loadJsonFile(
|
||||
"rdap_truncated_hosts.json", "QUERY", "name=nsx*.cat.lol&cursor=bnN4NC5jYXQubG9s"));
|
||||
@@ -522,7 +537,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testNameMatch_reallyTruncatedResultSet() {
|
||||
createManyHosts(9);
|
||||
assertThat(generateActualJsonWithName("nsx*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("nsx*.cat.lol"))
|
||||
.isEqualTo(
|
||||
loadJsonFile(
|
||||
"rdap_truncated_hosts.json", "QUERY", "name=nsx*.cat.lol&cursor=bnN4NC5jYXQubG9s"));
|
||||
@@ -534,7 +550,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testNameMatchDeletedHost_foundTheOtherHost() {
|
||||
persistResource(hostNs1CatLol.asBuilder().setDeletionTime(clock.nowUtc().minusDays(1)).build());
|
||||
assertThat(generateActualJsonWithName("ns*.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns*.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns2.cat.lol",
|
||||
@@ -550,7 +567,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testNameMatchDeletedHost_notFound() {
|
||||
persistResource(hostNs1CatLol.asBuilder().setDeletionTime(clock.nowUtc().minusDays(1)).build());
|
||||
assertThat(generateActualJsonWithName("ns1.cat.lol"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("ns1.cat.lol"))
|
||||
.isEqualTo(generateExpectedJsonError("No nameservers found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
verifyErrorMetrics();
|
||||
@@ -559,7 +577,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testNameMatchDeletedHostWithWildcard_notFound() {
|
||||
persistResource(hostNs1CatLol.asBuilder().setDeletionTime(clock.nowUtc().minusDays(1)).build());
|
||||
assertThat(generateActualJsonWithName("cat.lo*"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithName("cat.lo*"))
|
||||
.isEqualTo(generateExpectedJsonError("No nameservers found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
verifyErrorMetrics();
|
||||
@@ -727,7 +746,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testAddressMatchV4Address_found() {
|
||||
assertThat(generateActualJsonWithIp("1.2.3.4"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithIp("1.2.3.4"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonForNameserver(
|
||||
"ns1.cat.lol", null, "2-ROID", "v4", "1.2.3.4", "rdap_host_linked.json"));
|
||||
@@ -753,7 +773,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
|
||||
@Test
|
||||
void testAddressMatchV6Address_foundMultiple() {
|
||||
assertThat(generateActualJsonWithIp("bad:f00d:cafe::15:beef"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithIp("bad:f00d:cafe::15:beef"))
|
||||
.isEqualTo(loadJsonFile("rdap_multiple_hosts.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(2);
|
||||
@@ -769,7 +790,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testAddressMatchDeletedHost_notFound() {
|
||||
persistResource(hostNs1CatLol.asBuilder().setDeletionTime(clock.nowUtc().minusDays(1)).build());
|
||||
assertThat(generateActualJsonWithIp("1.2.3.4"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithIp("1.2.3.4"))
|
||||
.isEqualTo(generateExpectedJsonError("No nameservers found", 404));
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
verifyErrorMetrics();
|
||||
@@ -778,7 +800,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testAddressMatch_nontruncatedResultSet() {
|
||||
createManyHosts(4);
|
||||
assertThat(generateActualJsonWithIp("5.5.5.1"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithIp("5.5.5.1"))
|
||||
.isEqualTo(loadJsonFile("rdap_nontruncated_hosts.json"));
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
verifyMetrics(4);
|
||||
@@ -787,7 +810,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testAddressMatch_truncatedResultSet() {
|
||||
createManyHosts(5);
|
||||
assertThat(generateActualJsonWithIp("5.5.5.1"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithIp("5.5.5.1"))
|
||||
.isEqualTo(
|
||||
loadJsonFile(
|
||||
"rdap_truncated_hosts.json", "QUERY", "ip=5.5.5.1&cursor=MTctUk9JRA%3D%3D"));
|
||||
@@ -798,7 +822,8 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
|
||||
@Test
|
||||
void testAddressMatch_reallyTruncatedResultSet() {
|
||||
createManyHosts(9);
|
||||
assertThat(generateActualJsonWithIp("5.5.5.1"))
|
||||
assertAboutJson()
|
||||
.that(generateActualJsonWithIp("5.5.5.1"))
|
||||
.isEqualTo(
|
||||
loadJsonFile(
|
||||
"rdap_truncated_hosts.json", "QUERY", "ip=5.5.5.1&cursor=MTctUk9JRA%3D%3D"));
|
||||
|
||||
@@ -20,7 +20,6 @@ import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.google.common.truth.Truth;
|
||||
import com.google.gson.Gson;
|
||||
@@ -30,7 +29,6 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import google.registry.util.Clock;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/** Test helper methods for RDAP tests. */
|
||||
class RdapTestHelper {
|
||||
@@ -242,82 +240,4 @@ class RdapTestHelper {
|
||||
return reply;
|
||||
}
|
||||
|
||||
/** A small utility class to show nicer "huge JSON" diffs. */
|
||||
static final class GsonSubject {
|
||||
private JsonObject actual;
|
||||
|
||||
GsonSubject(JsonObject actual) {
|
||||
this.actual = actual;
|
||||
}
|
||||
|
||||
void isEqualTo(JsonObject expected) {
|
||||
if (actual.equals(expected)) {
|
||||
return;
|
||||
}
|
||||
StringBuilder difference = new StringBuilder();
|
||||
difference.append("Actual JSON different than expected:");
|
||||
diff("", actual, expected, difference);
|
||||
throw new AssertionError(difference.toString());
|
||||
}
|
||||
|
||||
private String jsonifyAndIndent(JsonElement element) {
|
||||
String json = GSON.toJson(element);
|
||||
return json.replaceAll("\n", "\n ");
|
||||
}
|
||||
|
||||
private JsonElement getOrNull(JsonArray jsonArray, int index) {
|
||||
if (index >= jsonArray.size()) {
|
||||
return null;
|
||||
}
|
||||
return jsonArray.get(index);
|
||||
}
|
||||
|
||||
/** Writes down a human-readable diff between actual and expected into the StringBuilder. */
|
||||
private void diff(
|
||||
String name, JsonElement actual, JsonElement expected, StringBuilder builder) {
|
||||
if (Objects.equals(actual, expected)) {
|
||||
return;
|
||||
}
|
||||
if (actual == null) {
|
||||
builder.append(String.format("Missing: %s ->%s\n\n", name, jsonifyAndIndent(expected)));
|
||||
return;
|
||||
}
|
||||
if (expected == null) {
|
||||
builder.append(String.format("Unexpected: %s -> %s\n\n", name, jsonifyAndIndent(actual)));
|
||||
return;
|
||||
}
|
||||
if (actual.isJsonObject() && expected.isJsonObject()) {
|
||||
// We put the "expected" first in the union so that the "expected" keys will all be first
|
||||
// and in order
|
||||
for (String key :
|
||||
Sets.union(expected.getAsJsonObject().keySet(), actual.getAsJsonObject().keySet())) {
|
||||
diff(
|
||||
name + "." + key,
|
||||
actual.getAsJsonObject().get(key),
|
||||
expected.getAsJsonObject().get(key),
|
||||
builder);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (actual.isJsonArray() && expected.isJsonArray()) {
|
||||
int commonSize = Math.max(actual.getAsJsonArray().size(), expected.getAsJsonArray().size());
|
||||
for (int i = 0; i < commonSize; i++) {
|
||||
diff(
|
||||
String.format("%s[%s]", name, i),
|
||||
getOrNull(actual.getAsJsonArray(), i),
|
||||
getOrNull(expected.getAsJsonArray(), i),
|
||||
builder);
|
||||
}
|
||||
return;
|
||||
}
|
||||
builder.append(
|
||||
String.format(
|
||||
"Actual: %s -> %s\nExpected: %s\n\n",
|
||||
name, jsonifyAndIndent(actual), jsonifyAndIndent(expected)));
|
||||
}
|
||||
}
|
||||
|
||||
static GsonSubject assertThat(JsonObject actual) {
|
||||
return new GsonSubject(actual);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ import static org.joda.time.DateTimeConstants.TUESDAY;
|
||||
import static org.joda.time.Duration.standardDays;
|
||||
|
||||
import com.google.common.collect.ImmutableSetMultimap;
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.model.common.Cursor;
|
||||
import google.registry.model.common.Cursor.CursorType;
|
||||
import google.registry.model.tld.Tld;
|
||||
@@ -95,7 +94,7 @@ public class PendingDepositCheckerTest {
|
||||
createTldWithEscrowEnabled("lol");
|
||||
clock.advanceOneMilli();
|
||||
Tld registry = Tld.get("lol");
|
||||
Truth.assertThat(loadByKeyIfPresent(Cursor.createScopedVKey(RDE_STAGING, registry))).isEmpty();
|
||||
assertThat(loadByKeyIfPresent(Cursor.createScopedVKey(RDE_STAGING, registry))).isEmpty();
|
||||
checker.getTldsAndWatermarksPendingDepositForRdeAndBrda();
|
||||
assertThat(loadByKey(Cursor.createScopedVKey(RDE_STAGING, registry)).getCursorTime())
|
||||
.isEqualTo(DateTime.parse("2000-01-01TZ"));
|
||||
@@ -122,9 +121,9 @@ public class PendingDepositCheckerTest {
|
||||
clock.advanceOneMilli();
|
||||
setCursor(registry, RDE_STAGING, DateTime.parse("2000-01-02TZ")); // assume rde is already done
|
||||
clock.advanceOneMilli();
|
||||
Truth.assertThat(loadByKeyIfPresent(Cursor.createScopedVKey(BRDA, registry))).isEmpty();
|
||||
assertThat(loadByKeyIfPresent(Cursor.createScopedVKey(BRDA, registry))).isEmpty();
|
||||
assertThat(checker.getTldsAndWatermarksPendingDepositForRdeAndBrda()).isEmpty();
|
||||
Truth.assertThat(loadByKeyIfPresent(Cursor.createScopedVKey(BRDA, registry))).isEmpty();
|
||||
assertThat(loadByKeyIfPresent(Cursor.createScopedVKey(BRDA, registry))).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -19,7 +19,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.util.Clock;
|
||||
@@ -45,14 +44,13 @@ class ReportingModuleTest {
|
||||
@Test
|
||||
void testEmptyYearMonthParameter_returnsEmptyYearMonthOptional() {
|
||||
when(req.getParameter("yearMonth")).thenReturn("");
|
||||
Truth.assertThat(ReportingModule.provideYearMonthOptional(req)).isEmpty();
|
||||
assertThat(ReportingModule.provideYearMonthOptional(req)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidYearMonthParameter_returnsThatMonth() {
|
||||
when(req.getParameter("yearMonth")).thenReturn("2017-05");
|
||||
Truth.assertThat(ReportingModule.provideYearMonthOptional(req))
|
||||
.hasValue(new YearMonth(2017, 5));
|
||||
assertThat(ReportingModule.provideYearMonthOptional(req)).hasValue(new YearMonth(2017, 5));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -83,13 +81,13 @@ class ReportingModuleTest {
|
||||
@Test
|
||||
void testEmptyDateParameter_returnsEmptyDateOptional() {
|
||||
when(req.getParameter("date")).thenReturn("");
|
||||
Truth.assertThat(ReportingModule.provideDateOptional(req)).isEmpty();
|
||||
assertThat(ReportingModule.provideDateOptional(req)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidDateParameter_returnsThatDate() {
|
||||
when(req.getParameter("date")).thenReturn("2017-05-13");
|
||||
Truth.assertThat(ReportingModule.provideDateOptional(req)).hasValue(new LocalDate(2017, 5, 13));
|
||||
assertThat(ReportingModule.provideDateOptional(req)).hasValue(new LocalDate(2017, 5, 13));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
118
core/src/test/java/google/registry/testing/GsonSubject.java
Normal file
118
core/src/test/java/google/registry/testing/GsonSubject.java
Normal file
@@ -0,0 +1,118 @@
|
||||
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.testing;
|
||||
|
||||
import static com.google.common.truth.Truth.assertAbout;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.truth.FailureMetadata;
|
||||
import com.google.common.truth.SimpleSubjectBuilder;
|
||||
import com.google.common.truth.Subject;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/** A Truth subject to show nicer "huge JSON" diffs. */
|
||||
public class GsonSubject extends Subject {
|
||||
|
||||
private JsonObject actual;
|
||||
|
||||
private static final Gson GSON =
|
||||
new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
|
||||
|
||||
private String customDisplaySubject;
|
||||
|
||||
public GsonSubject(FailureMetadata failureMetadata, JsonObject actual) {
|
||||
super(failureMetadata, actual);
|
||||
this.actual = actual;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String actualCustomStringRepresentation() {
|
||||
return Optional.ofNullable(customDisplaySubject).orElse(String.valueOf(actual));
|
||||
}
|
||||
|
||||
public GsonSubject withCustomDisplaySubject(String customDisplaySubject) {
|
||||
this.customDisplaySubject = customDisplaySubject;
|
||||
return this;
|
||||
}
|
||||
|
||||
private String jsonifyAndIndent(JsonElement element) {
|
||||
String json = GSON.toJson(element);
|
||||
return json.replaceAll("\n", "\n ");
|
||||
}
|
||||
|
||||
private JsonElement getOrNull(JsonArray jsonArray, int index) {
|
||||
if (index >= jsonArray.size()) {
|
||||
return null;
|
||||
}
|
||||
return jsonArray.get(index);
|
||||
}
|
||||
|
||||
/** Writes down a human-readable diff between actual and expected into the StringBuilder. */
|
||||
private void diff(String name, JsonElement actual, JsonElement expected, StringBuilder builder) {
|
||||
if (Objects.equals(actual, expected)) {
|
||||
return;
|
||||
}
|
||||
if (actual == null) {
|
||||
builder.append(String.format("Missing: %s ->%s\n\n", name, jsonifyAndIndent(expected)));
|
||||
return;
|
||||
}
|
||||
if (expected == null) {
|
||||
builder.append(String.format("Unexpected: %s -> %s\n\n", name, jsonifyAndIndent(actual)));
|
||||
return;
|
||||
}
|
||||
if (actual.isJsonObject() && expected.isJsonObject()) {
|
||||
// We put the "expected" first in the union so that the "expected" keys will all be first
|
||||
// and in order
|
||||
for (String key :
|
||||
Sets.union(expected.getAsJsonObject().keySet(), actual.getAsJsonObject().keySet())) {
|
||||
diff(
|
||||
name + "." + key,
|
||||
actual.getAsJsonObject().get(key),
|
||||
expected.getAsJsonObject().get(key),
|
||||
builder);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (actual.isJsonArray() && expected.isJsonArray()) {
|
||||
int commonSize = Math.max(actual.getAsJsonArray().size(), expected.getAsJsonArray().size());
|
||||
for (int i = 0; i < commonSize; i++) {
|
||||
diff(
|
||||
String.format("%s[%s]", name, i),
|
||||
getOrNull(actual.getAsJsonArray(), i),
|
||||
getOrNull(expected.getAsJsonArray(), i),
|
||||
builder);
|
||||
}
|
||||
return;
|
||||
}
|
||||
builder.append(
|
||||
String.format(
|
||||
"Actual: %s -> %s\nExpected: %s\n\n",
|
||||
name, jsonifyAndIndent(actual), jsonifyAndIndent(expected)));
|
||||
}
|
||||
|
||||
public static SimpleSubjectBuilder<GsonSubject, JsonObject> assertAboutJson() {
|
||||
return assertAbout(jsonObject());
|
||||
}
|
||||
|
||||
public static Factory<GsonSubject, JsonObject> jsonObject() {
|
||||
return GsonSubject::new;
|
||||
}
|
||||
}
|
||||
@@ -14,9 +14,9 @@
|
||||
|
||||
package google.registry.tools;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.junit.Assert.assertThrows;
|
||||
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.testing.FakeClock;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
@@ -53,6 +53,6 @@ public class GetEppResourceCommandTest {
|
||||
@Test
|
||||
public void readTimestampNotProvided_setToNow_noException() {
|
||||
commandUnderTest.run();
|
||||
Truth.assertThat(commandUnderTest.readTimestamp).isEqualTo(clock.nowUtc());
|
||||
assertThat(commandUnderTest.readTimestamp).isEqualTo(clock.nowUtc());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.model.billing.BillingBase.RenewalPriceBehavior;
|
||||
import google.registry.model.domain.fee.FeeQueryCommandExtensionItem.CommandName;
|
||||
import google.registry.model.domain.token.AllocationToken;
|
||||
@@ -77,10 +76,10 @@ public class UpdateBulkPricingPackageCommandTest
|
||||
tm().transact(() -> BulkPricingPackage.loadByTokenString("abc123"));
|
||||
assertThat(bulkPricingPackageOptional).isPresent();
|
||||
BulkPricingPackage bulkPricingPackage = bulkPricingPackageOptional.get();
|
||||
Truth.assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
Truth.assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
Truth.assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
Truth.assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
.isEqualTo(DateTime.parse("2013-03-17T00:00:00Z"));
|
||||
assertThat(bulkPricingPackage.getLastNotificationSent()).isEmpty();
|
||||
}
|
||||
@@ -108,7 +107,7 @@ public class UpdateBulkPricingPackageCommandTest
|
||||
"--price=USD 1000.00",
|
||||
"--next_billing_date=2012-03-17T00:00:00Z",
|
||||
"nullPackage"));
|
||||
Truth.assertThat(thrown.getMessage())
|
||||
assertThat(thrown.getMessage())
|
||||
.isEqualTo("BulkPricingPackage with token nullPackage does not exist");
|
||||
}
|
||||
|
||||
@@ -125,10 +124,10 @@ public class UpdateBulkPricingPackageCommandTest
|
||||
tm().transact(() -> BulkPricingPackage.loadByTokenString("abc123"));
|
||||
assertThat(bulkPricingPackageOptional).isPresent();
|
||||
BulkPricingPackage bulkPricingPackage = bulkPricingPackageOptional.get();
|
||||
Truth.assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(100);
|
||||
Truth.assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
Truth.assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
Truth.assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(100);
|
||||
assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
.isEqualTo(DateTime.parse("2013-03-17T00:00:00Z"));
|
||||
assertThat(bulkPricingPackage.getLastNotificationSent()).isEmpty();
|
||||
}
|
||||
@@ -146,10 +145,10 @@ public class UpdateBulkPricingPackageCommandTest
|
||||
tm().transact(() -> BulkPricingPackage.loadByTokenString("abc123"));
|
||||
assertThat(bulkPricingPackageOptional).isPresent();
|
||||
BulkPricingPackage bulkPricingPackage = bulkPricingPackageOptional.get();
|
||||
Truth.assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
Truth.assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
Truth.assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
Truth.assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
.isEqualTo(DateTime.parse("2012-11-12T05:00:00Z"));
|
||||
assertThat(bulkPricingPackage.getLastNotificationSent()).isEmpty();
|
||||
}
|
||||
@@ -167,10 +166,10 @@ public class UpdateBulkPricingPackageCommandTest
|
||||
tm().transact(() -> BulkPricingPackage.loadByTokenString("abc123"));
|
||||
assertThat(bulkPricingPackageOptional).isPresent();
|
||||
BulkPricingPackage bulkPricingPackage = bulkPricingPackageOptional.get();
|
||||
Truth.assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
Truth.assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
Truth.assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 1000));
|
||||
Truth.assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 1000));
|
||||
assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
.isEqualTo(DateTime.parse("2013-03-17T00:00:00Z"));
|
||||
assertThat(bulkPricingPackage.getLastNotificationSent()).isEmpty();
|
||||
}
|
||||
@@ -183,12 +182,12 @@ public class UpdateBulkPricingPackageCommandTest
|
||||
tm().transact(() -> BulkPricingPackage.loadByTokenString("abc123"));
|
||||
assertThat(bulkPricingPackageOptional).isPresent();
|
||||
BulkPricingPackage bulkPricingPackage = bulkPricingPackageOptional.get();
|
||||
Truth.assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
Truth.assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
Truth.assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
Truth.assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
assertThat(bulkPricingPackage.getMaxDomains()).isEqualTo(200);
|
||||
assertThat(bulkPricingPackage.getMaxCreates()).isEqualTo(1000);
|
||||
assertThat(bulkPricingPackage.getBulkPrice()).isEqualTo(Money.of(CurrencyUnit.USD, 2000));
|
||||
assertThat(bulkPricingPackage.getNextBillingDate())
|
||||
.isEqualTo(DateTime.parse("2012-11-12T05:00:00Z"));
|
||||
Truth.assertThat(bulkPricingPackage.getLastNotificationSent().get())
|
||||
assertThat(bulkPricingPackage.getLastNotificationSent().get())
|
||||
.isEqualTo(DateTime.parse("2010-11-12T05:00:00.000Z"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package google.registry.ui.server.registrar;
|
||||
|
||||
import static com.google.common.collect.Iterables.getOnlyElement;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.monitoring.metrics.contrib.LongMetricSubject.assertThat;
|
||||
import static google.registry.request.auth.AuthenticatedRegistrarAccessor.Role.ADMIN;
|
||||
import static google.registry.request.auth.AuthenticatedRegistrarAccessor.Role.OWNER;
|
||||
@@ -32,7 +33,6 @@ import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSetMultimap;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
import com.google.common.truth.Truth;
|
||||
import google.registry.flows.certs.CertificateChecker;
|
||||
import google.registry.groups.GmailClient;
|
||||
import google.registry.model.registrar.RegistrarPoc;
|
||||
@@ -167,7 +167,7 @@ public abstract class RegistrarSettingsActionTestCase {
|
||||
void verifyNotificationEmailsSent() throws Exception {
|
||||
ArgumentCaptor<EmailMessage> captor = ArgumentCaptor.forClass(EmailMessage.class);
|
||||
verify(gmailClient).sendEmail(captor.capture());
|
||||
Truth.assertThat(captor.getValue().recipients())
|
||||
assertThat(captor.getValue().recipients())
|
||||
.containsExactly(
|
||||
new InternetAddress("notification@test.example"),
|
||||
new InternetAddress("notification2@test.example"),
|
||||
|
||||
Reference in New Issue
Block a user