From 71e43517432cc540919fb60a658bdd206d125c3f Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 10 Nov 2023 09:13:51 -0800 Subject: [PATCH] Add `sepaMaximumEuros` field to subscription configuration --- service/config/sample.yml | 2 +- .../configuration/OneTimeDonationConfiguration.java | 2 +- .../controllers/SubscriptionController.java | 9 +++++---- .../controllers/SubscriptionControllerTest.java | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/service/config/sample.yml b/service/config/sample.yml index 02afbf74b..660441ca9 100644 --- a/service/config/sample.yml +++ b/service/config/sample.yml @@ -342,7 +342,7 @@ subscription: # configuration for Stripe subscriptions BRAINTREE: plan_example # braintree Plan ID oneTimeDonations: - sepaMaxTransactionSizeEuros: '10000' + sepaMaximumEuros: '10000' boost: level: 1 expiration: P90D diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/OneTimeDonationConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/OneTimeDonationConfiguration.java index a128b0270..8c1a1e2d5 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/OneTimeDonationConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/OneTimeDonationConfiguration.java @@ -20,7 +20,7 @@ import javax.validation.constraints.Positive; public record OneTimeDonationConfiguration(@Valid ExpiringLevelConfiguration boost, @Valid ExpiringLevelConfiguration gift, Map currencies, - BigDecimal sepaMaxTransactionSizeEuros) { + BigDecimal sepaMaximumEuros) { /** * @param badge the numeric donation level ID diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/SubscriptionController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/SubscriptionController.java index 617eced01..28d35fe05 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/SubscriptionController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/SubscriptionController.java @@ -229,7 +229,7 @@ public class SubscriptionController { giftBadge, oneTimeDonationConfiguration.gift().expiration()))); - return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels); + return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels, oneTimeDonationConfiguration.sepaMaximumEuros().toString()); } @DELETE @@ -537,7 +537,8 @@ public class SubscriptionController { * @param levels map of numeric level IDs to level-specific configuration */ public record GetSubscriptionConfigurationResponse(Map currencies, - Map levels) { + Map levels, + String sepaMaximumEuros) { } @@ -712,11 +713,11 @@ public class SubscriptionController { if (request.paymentMethod == PaymentMethod.SEPA_DEBIT && amount.compareTo(SubscriptionCurrencyUtil.convertConfiguredAmountToApiAmount( EURO_CURRENCY_CODE, - oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros())) > 0) { + oneTimeDonationConfiguration.sepaMaximumEuros())) > 0) { throw new BadRequestException(Response.status(Status.BAD_REQUEST) .entity(Map.of( "error", "amount_above_sepa_limit", - "maximum", oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros().toString())).build()); + "maximum", oneTimeDonationConfiguration.sepaMaximumEuros().toString())).build()); } } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/SubscriptionControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/SubscriptionControllerTest.java index 86251cd4b..c18b119f2 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/SubscriptionControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/SubscriptionControllerTest.java @@ -802,6 +802,7 @@ class SubscriptionControllerTest { .header(HttpHeaders.USER_AGENT, userAgent) .get(GetSubscriptionConfigurationResponse.class); + assertThat(response.sepaMaximumEuros()).isEqualTo("10000"); assertThat(response.currencies()).containsKeys("usd", "jpy", "bif", "eur").satisfies(currencyMap -> { assertThat(currencyMap).extractingByKey("usd").satisfies(currency -> { assertThat(currency.minimum()).isEqualByComparingTo( @@ -1087,7 +1088,7 @@ class SubscriptionControllerTest { - '8000' - '9000' - '10000' - sepaMaxTransactionSizeEuros: '10000' + sepaMaximumEuros: '10000' """; }