From b4bab09673f7f6bd721b881a00c16cf7e88f0a12 Mon Sep 17 00:00:00 2001 From: gbrodman Date: Mon, 2 Mar 2020 12:49:09 -0500 Subject: [PATCH] Handle both ways the UI passes in booleans (#500) * Handle both ways the UI passes in booleans * fix the JS test * Quote the value --- .../registry/ui/server/RegistrarFormFields.java | 9 +++++++-- .../registry/ui/soy/registrar/ContactSettings.soy | 11 +++++++---- .../registry/ui/js/registrar/contact_settings_test.js | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java b/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java index 292d3442a..61ff2a12c 100644 --- a/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java +++ b/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java @@ -37,6 +37,7 @@ import google.registry.util.X509Utils; import java.security.cert.CertificateParsingException; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import javax.annotation.Nullable; @@ -204,8 +205,10 @@ public final class RegistrarFormFields { public static final FormField CONTACT_GAE_USER_ID_FIELD = FormFields.NAME.asBuilderNamed("gaeUserId").build(); - public static final FormField CONTACT_ALLOWED_TO_SET_REGISTRY_LOCK_PASSWORD = - FormField.named("allowedToSetRegistryLockPassword", Boolean.class).build(); + public static final FormField CONTACT_ALLOWED_TO_SET_REGISTRY_LOCK_PASSWORD = + FormField.named("allowedToSetRegistryLockPassword", Object.class) + .transform(Boolean.class, b -> Boolean.valueOf(Objects.toString(b))) + .build(); public static final FormField CONTACT_REGISTRY_LOCK_PASSWORD_FIELD = FormFields.NAME.asBuilderNamed("registryLockPassword").build(); @@ -384,6 +387,8 @@ public final class RegistrarFormFields { builder.setFaxNumber(CONTACT_FAX_NUMBER_FIELD.extractUntyped(args).orElse(null)); builder.setTypes(CONTACT_TYPES.extractUntyped(args).orElse(ImmutableSet.of())); builder.setGaeUserId(CONTACT_GAE_USER_ID_FIELD.extractUntyped(args).orElse(null)); + // The parser is inconsistent with whether it retrieves boolean values as strings or booleans. + // As a result, use a potentially-redundant converter that can deal with both. builder.setAllowedToSetRegistryLockPassword( CONTACT_ALLOWED_TO_SET_REGISTRY_LOCK_PASSWORD.extractUntyped(args).orElse(false)); diff --git a/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy b/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy index 3c98e77b4..4d8f32f79 100644 --- a/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy +++ b/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy @@ -256,10 +256,13 @@ {param placeholder: $placeholder /} {/call} {/if} - {if isNonnull($item['allowedToSetRegistryLockPassword'])} - - {/if} +
diff --git a/core/src/test/javascript/google/registry/ui/js/registrar/contact_settings_test.js b/core/src/test/javascript/google/registry/ui/js/registrar/contact_settings_test.js index d679d2388..68dbc7732 100644 --- a/core/src/test/javascript/google/registry/ui/js/registrar/contact_settings_test.js +++ b/core/src/test/javascript/google/registry/ui/js/registrar/contact_settings_test.js @@ -335,7 +335,8 @@ describe("contact settings test", function() { visibleInWhoisAsAdmin: false, visibleInWhoisAsTech: false, visibleInDomainWhoisAsAbuse: false, - types: 'ADMIN' + types: 'ADMIN', + allowedToSetRegistryLockPassword: 'false' }; }