From 5965f0fd2268b67476175f57b470fbab9885e9d5 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Fri, 26 Mar 2021 11:10:56 -0400 Subject: [PATCH] Add a dynamically-configured list of allowed country codes for payments. --- .../dynamic/DynamicConfiguration.java | 8 +++++++ .../dynamic/DynamicPaymentsConfiguration.java | 20 ++++++++++++++++ .../dynamic/DynamicConfigurationTest.java | 24 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicPaymentsConfiguration.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java index f2b2c3dec..0aa94779b 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java @@ -30,6 +30,10 @@ public class DynamicConfiguration { @Valid private DynamicMessageRateConfiguration messageRate = new DynamicMessageRateConfiguration(); + @JsonProperty + @Valid + private DynamicPaymentsConfiguration payments = new DynamicPaymentsConfiguration(); + @JsonProperty private Set featureFlags = Collections.emptySet(); @@ -59,6 +63,10 @@ public class DynamicConfiguration { return messageRate; } + public DynamicPaymentsConfiguration getPaymentsConfiguration() { + return payments; + } + public Set getActiveFeatureFlags() { return featureFlags; } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicPaymentsConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicPaymentsConfiguration.java new file mode 100644 index 000000000..e3ef799b8 --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicPaymentsConfiguration.java @@ -0,0 +1,20 @@ +/* + * Copyright 2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.configuration.dynamic; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collections; +import java.util.Set; + +public class DynamicPaymentsConfiguration { + + @JsonProperty + private Set allowedCountryCodes = Collections.emptySet(); + + public Set getAllowedCountryCodes() { + return allowedCountryCodes; + } +} diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfigurationTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfigurationTest.java index 62e98f99b..c21b261ae 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfigurationTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfigurationTest.java @@ -252,4 +252,28 @@ class DynamicConfigurationTest { assertEquals(List.of("2135551212", "2135551313"), config.getNumbers()); } } + + @Test + public void testParsePaymentsConfiguration() throws JsonProcessingException { + { + final String emptyConfigYaml = "test: true"; + final DynamicConfiguration emptyConfig = DynamicConfigurationManager.OBJECT_MAPPER + .readValue(emptyConfigYaml, DynamicConfiguration.class); + + assertTrue(emptyConfig.getPaymentsConfiguration().getAllowedCountryCodes().isEmpty()); + } + + { + final String paymentsConfigYaml = + "payments:\n" + + " allowedCountryCodes:\n" + + " - 44"; + + final DynamicPaymentsConfiguration config = DynamicConfigurationManager.OBJECT_MAPPER + .readValue(paymentsConfigYaml, DynamicConfiguration.class) + .getPaymentsConfiguration(); + + assertEquals(Set.of("44"), config.getAllowedCountryCodes()); + } + } }