mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 16:07:15 +02:00
Add visibleInWhoisAsAbuse field in RegistrarContact
Also added corresponding getters and setters for the new field. Note that nothing has changed on the RDAP front for now, as the CL&D only concerns WHOIS. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=155116134
This commit is contained in:
parent
354e1fb8b2
commit
7a3852b5a5
6 changed files with 145 additions and 83 deletions
|
@ -123,15 +123,22 @@ public class RegistrarContact extends ImmutableObject implements Jsonifiable {
|
||||||
String gaeUserId;
|
String gaeUserId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether this contact is publicly visible in WHOIS results as an Admin contact.
|
* Whether this contact is publicly visible in WHOIS registrar query results as an Admin contact.
|
||||||
*/
|
*/
|
||||||
boolean visibleInWhoisAsAdmin = false;
|
boolean visibleInWhoisAsAdmin = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether this contact is publicly visible in WHOIS results as a Technical contact.
|
* Whether this contact is publicly visible in WHOIS registrar query results as a Technical
|
||||||
|
* contact.
|
||||||
*/
|
*/
|
||||||
boolean visibleInWhoisAsTech = false;
|
boolean visibleInWhoisAsTech = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether this contact's phone number and email address is publicly visible in WHOIS domain query
|
||||||
|
* results as registrar abuse contact info.
|
||||||
|
*/
|
||||||
|
boolean visibleInDomainWhoisAsAbuse = false;
|
||||||
|
|
||||||
public static ImmutableSet<Type> typesFromCSV(String csv) {
|
public static ImmutableSet<Type> typesFromCSV(String csv) {
|
||||||
return typesFromStrings(Arrays.asList(csv.split(",")));
|
return typesFromStrings(Arrays.asList(csv.split(",")));
|
||||||
}
|
}
|
||||||
|
@ -193,6 +200,10 @@ public class RegistrarContact extends ImmutableObject implements Jsonifiable {
|
||||||
return visibleInWhoisAsTech;
|
return visibleInWhoisAsTech;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getVisibleInDomainWhoisAsAbuse() {
|
||||||
|
return visibleInDomainWhoisAsAbuse;
|
||||||
|
}
|
||||||
|
|
||||||
public String getGaeUserId() {
|
public String getGaeUserId() {
|
||||||
return gaeUserId;
|
return gaeUserId;
|
||||||
}
|
}
|
||||||
|
@ -225,12 +236,20 @@ public class RegistrarContact extends ImmutableObject implements Jsonifiable {
|
||||||
result.append("Fax: ").append(getFaxNumber()).append('\n');
|
result.append("Fax: ").append(getFaxNumber()).append('\n');
|
||||||
}
|
}
|
||||||
result.append("Types: ").append(getTypes()).append('\n');
|
result.append("Types: ").append(getTypes()).append('\n');
|
||||||
result.append("Visible in WHOIS as Admin contact: ")
|
result
|
||||||
|
.append("Visible in registrar WHOIS query as Admin contact: ")
|
||||||
.append(getVisibleInWhoisAsAdmin() ? "Yes" : "No")
|
.append(getVisibleInWhoisAsAdmin() ? "Yes" : "No")
|
||||||
.append("\n");
|
.append("\n");
|
||||||
result.append("Visible in WHOIS as Technical contact: ")
|
result
|
||||||
|
.append("Visible in registrar WHOIS query as Technical contact: ")
|
||||||
.append(getVisibleInWhoisAsTech() ? "Yes" : "No")
|
.append(getVisibleInWhoisAsTech() ? "Yes" : "No")
|
||||||
.append("\n");
|
.append("\n");
|
||||||
|
result
|
||||||
|
.append(
|
||||||
|
"Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: ")
|
||||||
|
.append(getVisibleInDomainWhoisAsAbuse() ? "Yes" : "No")
|
||||||
|
.append("\n");
|
||||||
if (getGaeUserId() != null) {
|
if (getGaeUserId() != null) {
|
||||||
result.append("GAE-UserID: ").append(getGaeUserId()).append('\n');
|
result.append("GAE-UserID: ").append(getGaeUserId()).append('\n');
|
||||||
}
|
}
|
||||||
|
@ -247,6 +266,7 @@ public class RegistrarContact extends ImmutableObject implements Jsonifiable {
|
||||||
.put("types", Joiner.on(',').join(transform(getTypes(), toStringFunction())))
|
.put("types", Joiner.on(',').join(transform(getTypes(), toStringFunction())))
|
||||||
.put("visibleInWhoisAsAdmin", visibleInWhoisAsAdmin)
|
.put("visibleInWhoisAsAdmin", visibleInWhoisAsAdmin)
|
||||||
.put("visibleInWhoisAsTech", visibleInWhoisAsTech)
|
.put("visibleInWhoisAsTech", visibleInWhoisAsTech)
|
||||||
|
.put("visibleInDomainWhoisAsAbuse", visibleInDomainWhoisAsAbuse)
|
||||||
.put("gaeUserId", gaeUserId)
|
.put("gaeUserId", gaeUserId)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
@ -311,6 +331,11 @@ public class RegistrarContact extends ImmutableObject implements Jsonifiable {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder setVisibleInDomainWhoisAsAbuse(boolean visible) {
|
||||||
|
getInstance().visibleInDomainWhoisAsAbuse = visible;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder setGaeUserId(String gaeUserId) {
|
public Builder setGaeUserId(String gaeUserId) {
|
||||||
getInstance().gaeUserId = gaeUserId;
|
getInstance().gaeUserId = gaeUserId;
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -208,6 +208,10 @@ public final class RegistrarFormFields {
|
||||||
FormField.named("visibleInWhoisAsTech", Boolean.class)
|
FormField.named("visibleInWhoisAsTech", Boolean.class)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
public static final FormField<Boolean, Boolean>
|
||||||
|
PHONE_AND_EMAIL_VISIBLE_IN_DOMAIN_WHOIS_AS_ABUSE_FIELD =
|
||||||
|
FormField.named("visibleInDomainWhoisAsAbuse", Boolean.class).build();
|
||||||
|
|
||||||
public static final FormField<String, String> CONTACT_PHONE_NUMBER_FIELD =
|
public static final FormField<String, String> CONTACT_PHONE_NUMBER_FIELD =
|
||||||
FormFields.PHONE_NUMBER.asBuilder()
|
FormFields.PHONE_NUMBER.asBuilder()
|
||||||
.build();
|
.build();
|
||||||
|
@ -228,7 +232,8 @@ public final class RegistrarFormFields {
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public static final Function<Map<String, ?>, RegistrarContact.Builder>
|
public static final Function<Map<String, ?>, RegistrarContact.Builder>
|
||||||
REGISTRAR_CONTACT_TRANSFORM = new Function<Map<String, ?>, RegistrarContact.Builder>() {
|
REGISTRAR_CONTACT_TRANSFORM =
|
||||||
|
new Function<Map<String, ?>, RegistrarContact.Builder>() {
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public RegistrarContact.Builder apply(@Nullable Map<String, ?> args) {
|
public RegistrarContact.Builder apply(@Nullable Map<String, ?> args) {
|
||||||
|
@ -250,6 +255,12 @@ public final class RegistrarFormFields {
|
||||||
CONTACT_VISIBLE_IN_WHOIS_AS_TECH_FIELD.extractUntyped(args).asSet()) {
|
CONTACT_VISIBLE_IN_WHOIS_AS_TECH_FIELD.extractUntyped(args).asSet()) {
|
||||||
builder.setVisibleInWhoisAsTech(visible);
|
builder.setVisibleInWhoisAsTech(visible);
|
||||||
}
|
}
|
||||||
|
for (Boolean visible :
|
||||||
|
PHONE_AND_EMAIL_VISIBLE_IN_DOMAIN_WHOIS_AS_ABUSE_FIELD
|
||||||
|
.extractUntyped(args)
|
||||||
|
.asSet()) {
|
||||||
|
builder.setVisibleInDomainWhoisAsAbuse(visible);
|
||||||
|
}
|
||||||
for (String phoneNumber : CONTACT_PHONE_NUMBER_FIELD.extractUntyped(args).asSet()) {
|
for (String phoneNumber : CONTACT_PHONE_NUMBER_FIELD.extractUntyped(args).asSet()) {
|
||||||
builder.setPhoneNumber(phoneNumber);
|
builder.setPhoneNumber(phoneNumber);
|
||||||
}
|
}
|
||||||
|
@ -263,7 +274,8 @@ public final class RegistrarFormFields {
|
||||||
builder.setGaeUserId(gaeUserId);
|
builder.setGaeUserId(gaeUserId);
|
||||||
}
|
}
|
||||||
return builder;
|
return builder;
|
||||||
}};
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public static final FormField<List<Map<String, ?>>, List<RegistrarContact.Builder>>
|
public static final FormField<List<Map<String, ?>>, List<RegistrarContact.Builder>>
|
||||||
CONTACTS_FIELD = FormField.mapNamed("contacts")
|
CONTACTS_FIELD = FormField.mapNamed("contacts")
|
||||||
|
|
|
@ -203,48 +203,70 @@ public class SyncRegistrarsSheetTest {
|
||||||
assertThat(row).containsEntry("state", "SUSPENDED");
|
assertThat(row).containsEntry("state", "SUSPENDED");
|
||||||
assertThat(row).containsEntry("ianaIdentifier", "8");
|
assertThat(row).containsEntry("ianaIdentifier", "8");
|
||||||
assertThat(row).containsEntry("billingIdentifier", "");
|
assertThat(row).containsEntry("billingIdentifier", "");
|
||||||
assertThat(row).containsEntry("primaryContacts", ""
|
assertThat(row)
|
||||||
|
.containsEntry(
|
||||||
|
"primaryContacts",
|
||||||
|
""
|
||||||
+ "Jane Doe\n"
|
+ "Jane Doe\n"
|
||||||
+ "contact@example.com\n"
|
+ "contact@example.com\n"
|
||||||
+ "Tel: +1.1234567890\n"
|
+ "Tel: +1.1234567890\n"
|
||||||
+ "Types: [ADMIN, BILLING]\n"
|
+ "Types: [ADMIN, BILLING]\n"
|
||||||
+ "Visible in WHOIS as Admin contact: No\n"
|
+ "Visible in registrar WHOIS query as Admin contact: No\n"
|
||||||
+ "Visible in WHOIS as Technical contact: No\n"
|
+ "Visible in registrar WHOIS query as Technical contact: No\n"
|
||||||
|
+ "Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: No\n"
|
||||||
+ "\n"
|
+ "\n"
|
||||||
+ "John Doe\n"
|
+ "John Doe\n"
|
||||||
+ "john.doe@example.tld\n"
|
+ "john.doe@example.tld\n"
|
||||||
+ "Tel: +1.1234567890\n"
|
+ "Tel: +1.1234567890\n"
|
||||||
+ "Fax: +1.1234567891\n"
|
+ "Fax: +1.1234567891\n"
|
||||||
+ "Types: [ADMIN]\n"
|
+ "Types: [ADMIN]\n"
|
||||||
+ "Visible in WHOIS as Admin contact: No\n"
|
+ "Visible in registrar WHOIS query as Admin contact: No\n"
|
||||||
+ "Visible in WHOIS as Technical contact: Yes\n"
|
+ "Visible in registrar WHOIS query as Technical contact: Yes\n"
|
||||||
|
+ "Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: No\n"
|
||||||
+ "GAE-UserID: light\n");
|
+ "GAE-UserID: light\n");
|
||||||
assertThat(row).containsEntry("techContacts", ""
|
assertThat(row)
|
||||||
|
.containsEntry(
|
||||||
|
"techContacts",
|
||||||
|
""
|
||||||
+ "Jane Smith\n"
|
+ "Jane Smith\n"
|
||||||
+ "pride@example.net\n"
|
+ "pride@example.net\n"
|
||||||
+ "Types: [TECH]\n"
|
+ "Types: [TECH]\n"
|
||||||
+ "Visible in WHOIS as Admin contact: No\n"
|
+ "Visible in registrar WHOIS query as Admin contact: No\n"
|
||||||
+ "Visible in WHOIS as Technical contact: No\n");
|
+ "Visible in registrar WHOIS query as Technical contact: No\n"
|
||||||
|
+ "Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: No\n");
|
||||||
assertThat(row).containsEntry("marketingContacts", "");
|
assertThat(row).containsEntry("marketingContacts", "");
|
||||||
assertThat(row).containsEntry("abuseContacts", "");
|
assertThat(row).containsEntry("abuseContacts", "");
|
||||||
assertThat(row).containsEntry("whoisInquiryContacts", "");
|
assertThat(row).containsEntry("whoisInquiryContacts", "");
|
||||||
assertThat(row).containsEntry("legalContacts", "");
|
assertThat(row).containsEntry("legalContacts", "");
|
||||||
assertThat(row).containsEntry("billingContacts", ""
|
assertThat(row)
|
||||||
|
.containsEntry(
|
||||||
|
"billingContacts",
|
||||||
|
""
|
||||||
+ "Jane Doe\n"
|
+ "Jane Doe\n"
|
||||||
+ "contact@example.com\n"
|
+ "contact@example.com\n"
|
||||||
+ "Tel: +1.1234567890\n"
|
+ "Tel: +1.1234567890\n"
|
||||||
+ "Types: [ADMIN, BILLING]\n"
|
+ "Types: [ADMIN, BILLING]\n"
|
||||||
+ "Visible in WHOIS as Admin contact: No\n"
|
+ "Visible in registrar WHOIS query as Admin contact: No\n"
|
||||||
+ "Visible in WHOIS as Technical contact: No\n");
|
+ "Visible in registrar WHOIS query as Technical contact: No\n"
|
||||||
|
+ "Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: No\n");
|
||||||
assertThat(row).containsEntry("contactsMarkedAsWhoisAdmin", "");
|
assertThat(row).containsEntry("contactsMarkedAsWhoisAdmin", "");
|
||||||
assertThat(row).containsEntry("contactsMarkedAsWhoisTech", ""
|
assertThat(row)
|
||||||
|
.containsEntry(
|
||||||
|
"contactsMarkedAsWhoisTech",
|
||||||
|
""
|
||||||
+ "John Doe\n"
|
+ "John Doe\n"
|
||||||
+ "john.doe@example.tld\n"
|
+ "john.doe@example.tld\n"
|
||||||
+ "Tel: +1.1234567890\n"
|
+ "Tel: +1.1234567890\n"
|
||||||
+ "Fax: +1.1234567891\n"
|
+ "Fax: +1.1234567891\n"
|
||||||
+ "Types: [ADMIN]\n"
|
+ "Types: [ADMIN]\n"
|
||||||
+ "Visible in WHOIS as Admin contact: No\n"
|
+ "Visible in registrar WHOIS query as Admin contact: No\n"
|
||||||
+ "Visible in WHOIS as Technical contact: Yes\n"
|
+ "Visible in registrar WHOIS query as Technical contact: Yes\n"
|
||||||
|
+ "Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: No\n"
|
||||||
+ "GAE-UserID: light\n");
|
+ "GAE-UserID: light\n");
|
||||||
assertThat(row).containsEntry("emailAddress", "nowhere@example.org");
|
assertThat(row).containsEntry("emailAddress", "nowhere@example.org");
|
||||||
assertThat(row).containsEntry(
|
assertThat(row).containsEntry(
|
||||||
|
|
|
@ -659,6 +659,7 @@ class google.registry.model.registrar.RegistrarAddress {
|
||||||
class google.registry.model.registrar.RegistrarContact {
|
class google.registry.model.registrar.RegistrarContact {
|
||||||
@Id java.lang.String emailAddress;
|
@Id java.lang.String emailAddress;
|
||||||
@Parent com.googlecode.objectify.Key<google.registry.model.registrar.Registrar> parent;
|
@Parent com.googlecode.objectify.Key<google.registry.model.registrar.Registrar> parent;
|
||||||
|
boolean visibleInDomainWhoisAsAbuse;
|
||||||
boolean visibleInWhoisAsAdmin;
|
boolean visibleInWhoisAsAdmin;
|
||||||
boolean visibleInWhoisAsTech;
|
boolean visibleInWhoisAsTech;
|
||||||
java.lang.String faxNumber;
|
java.lang.String faxNumber;
|
||||||
|
|
|
@ -61,8 +61,10 @@ public class RegistrarContactCommandTest extends CommandTestCase<RegistrarContac
|
||||||
"John Doe",
|
"John Doe",
|
||||||
"john.doe@example.com",
|
"john.doe@example.com",
|
||||||
"Types: [ADMIN]",
|
"Types: [ADMIN]",
|
||||||
"Visible in WHOIS as Admin contact: Yes",
|
"Visible in registrar WHOIS query as Admin contact: Yes",
|
||||||
"Visible in WHOIS as Technical contact: No");
|
"Visible in registrar WHOIS query as Technical contact: No",
|
||||||
|
"Phone number and email visible in domain WHOIS query as "
|
||||||
|
+ "Registrar Abuse contact info: No");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -9,8 +9,8 @@ phoneNumber -> [+1.2223334444, +1.2223335555]
|
||||||
emailAddress -> [new.registrar@example.com, thase@the.registrar]
|
emailAddress -> [new.registrar@example.com, thase@the.registrar]
|
||||||
contacts ->
|
contacts ->
|
||||||
ADDED:
|
ADDED:
|
||||||
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=Extra Terrestrial, emailAddress=etphonehome@example.com, phoneNumber=null, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false}
|
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=Extra Terrestrial, emailAddress=etphonehome@example.com, phoneNumber=null, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false}
|
||||||
REMOVED:
|
REMOVED:
|
||||||
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=John Doe, emailAddress=johndoe@theregistrar.com, phoneNumber=+1.1234567890, faxNumber=null, types=[ADMIN], gaeUserId=31337, visibleInWhoisAsAdmin=false, visibleInWhoisAsTech=false}
|
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=John Doe, emailAddress=johndoe@theregistrar.com, phoneNumber=+1.1234567890, faxNumber=null, types=[ADMIN], gaeUserId=31337, visibleInWhoisAsAdmin=false, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false}
|
||||||
FINAL CONTENTS:
|
FINAL CONTENTS:
|
||||||
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=Extra Terrestrial, emailAddress=etphonehome@example.com, phoneNumber=null, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false}
|
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=Extra Terrestrial, emailAddress=etphonehome@example.com, phoneNumber=null, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue