Remove vestiges of per-country sender ID logic/configuration.
This commit is contained in:
		
							parent
							
								
									fb2fc2335a
								
							
						
					
					
						commit
						efe7f2e4c1
					
				| 
						 | 
					@ -14,22 +14,6 @@ twilio: # Twilio gateway configuration
 | 
				
			||||||
  androidNgVerificationText: # Text to use for the verification message on android-ng client types. Will be passed to String.format with the verification code as argument 1.
 | 
					  androidNgVerificationText: # Text to use for the verification message on android-ng client types. Will be passed to String.format with the verification code as argument 1.
 | 
				
			||||||
  android202001VerificationText: # Text to use for the verification message on android-2020-01 client types. Will be passed to String.format with the verification code as argument 1.
 | 
					  android202001VerificationText: # Text to use for the verification message on android-2020-01 client types. Will be passed to String.format with the verification code as argument 1.
 | 
				
			||||||
  genericVerificationText: # Text to use when the client type is unrecognized. Will be passed to String.format with the verification code as argument 1.
 | 
					  genericVerificationText: # Text to use when the client type is unrecognized. Will be passed to String.format with the verification code as argument 1.
 | 
				
			||||||
  senderId:
 | 
					 | 
				
			||||||
    defaultSenderId: # Sender ID to use for country codes not found in either the overrides or omitted lists.
 | 
					 | 
				
			||||||
    countryCodesWithoutSenderId:
 | 
					 | 
				
			||||||
      - # First country code
 | 
					 | 
				
			||||||
      - # Second country code
 | 
					 | 
				
			||||||
      - # ...
 | 
					 | 
				
			||||||
      - # Nth country code
 | 
					 | 
				
			||||||
    countrySpecificSenderIds:
 | 
					 | 
				
			||||||
      - countryCode: # First country code
 | 
					 | 
				
			||||||
        senderId: # Sender ID to use for this country
 | 
					 | 
				
			||||||
      - countryCode: # Second country code
 | 
					 | 
				
			||||||
        senderId: # Sender ID to use for this country
 | 
					 | 
				
			||||||
      - countryCode: # ...
 | 
					 | 
				
			||||||
        senderId: # ...
 | 
					 | 
				
			||||||
      - countryCode: # Nth country code
 | 
					 | 
				
			||||||
        senderId: # Sender ID to use for this country
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
push:
 | 
					push:
 | 
				
			||||||
  queueSize: # Size of push pending queue
 | 
					  queueSize: # Size of push pending queue
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,10 +39,6 @@ public class TwilioConfiguration {
 | 
				
			||||||
  @Valid
 | 
					  @Valid
 | 
				
			||||||
  private RetryConfiguration retry = new RetryConfiguration();
 | 
					  private RetryConfiguration retry = new RetryConfiguration();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @NotNull
 | 
					 | 
				
			||||||
  @Valid
 | 
					 | 
				
			||||||
  private TwilioSenderIdConfiguration senderId = new TwilioSenderIdConfiguration();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @NotEmpty
 | 
					  @NotEmpty
 | 
				
			||||||
  private String iosVerificationText;
 | 
					  private String iosVerificationText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -127,15 +123,6 @@ public class TwilioConfiguration {
 | 
				
			||||||
    this.retry = retry;
 | 
					    this.retry = retry;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public TwilioSenderIdConfiguration getSenderId() {
 | 
					 | 
				
			||||||
    return senderId;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @VisibleForTesting
 | 
					 | 
				
			||||||
  public void setSenderId(TwilioSenderIdConfiguration senderId) {
 | 
					 | 
				
			||||||
    this.senderId = senderId;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public String getIosVerificationText() {
 | 
					  public String getIosVerificationText() {
 | 
				
			||||||
    return iosVerificationText;
 | 
					    return iosVerificationText;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,56 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Copyright 2013-2020 Signal Messenger, LLC
 | 
					 | 
				
			||||||
 * SPDX-License-Identifier: AGPL-3.0-only
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package org.whispersystems.textsecuregcm.configuration;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.google.common.annotations.VisibleForTesting;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import javax.validation.Valid;
 | 
					 | 
				
			||||||
import javax.validation.constraints.NotEmpty;
 | 
					 | 
				
			||||||
import javax.validation.constraints.NotNull;
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.HashSet;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class TwilioSenderIdConfiguration {
 | 
					 | 
				
			||||||
  @NotEmpty
 | 
					 | 
				
			||||||
  private String defaultSenderId;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @NotNull
 | 
					 | 
				
			||||||
  @Valid
 | 
					 | 
				
			||||||
  private List<TwilioCountrySenderIdConfiguration> countrySpecificSenderIds = new ArrayList<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @NotNull
 | 
					 | 
				
			||||||
  @Valid
 | 
					 | 
				
			||||||
  private Set<String> countryCodesWithoutSenderId = new HashSet<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public String getDefaultSenderId() {
 | 
					 | 
				
			||||||
    return defaultSenderId;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @VisibleForTesting
 | 
					 | 
				
			||||||
  public void setDefaultSenderId(String defaultSenderId) {
 | 
					 | 
				
			||||||
    this.defaultSenderId = defaultSenderId;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public List<TwilioCountrySenderIdConfiguration> getCountrySpecificSenderIds() {
 | 
					 | 
				
			||||||
    return countrySpecificSenderIds;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @VisibleForTesting
 | 
					 | 
				
			||||||
  public void setCountrySpecificSenderIds(List<TwilioCountrySenderIdConfiguration> countrySpecificSenderIds) {
 | 
					 | 
				
			||||||
    this.countrySpecificSenderIds = countrySpecificSenderIds;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public Set<String> getCountryCodesWithoutSenderId() {
 | 
					 | 
				
			||||||
    return countryCodesWithoutSenderId;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @VisibleForTesting
 | 
					 | 
				
			||||||
  public void setCountryCodesWithoutSenderId(Set<String> countryCodesWithoutSenderId) {
 | 
					 | 
				
			||||||
    this.countryCodesWithoutSenderId = countryCodesWithoutSenderId;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -5,23 +5,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.whispersystems.textsecuregcm.tests.sms;
 | 
					package org.whispersystems.textsecuregcm.tests.sms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.github.tomakehurst.wiremock.junit.WireMockRule;
 | 
					 | 
				
			||||||
import org.junit.Ignore;
 | 
					 | 
				
			||||||
import org.junit.Rule;
 | 
					 | 
				
			||||||
import org.junit.Test;
 | 
					 | 
				
			||||||
import org.whispersystems.textsecuregcm.configuration.TwilioConfiguration;
 | 
					 | 
				
			||||||
import org.whispersystems.textsecuregcm.configuration.TwilioCountrySenderIdConfiguration;
 | 
					 | 
				
			||||||
import org.whispersystems.textsecuregcm.configuration.TwilioSenderIdConfiguration;
 | 
					 | 
				
			||||||
import org.whispersystems.textsecuregcm.sms.TwilioSmsSender;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import javax.annotation.Nonnull;
 | 
					 | 
				
			||||||
import java.net.URLEncoder;
 | 
					 | 
				
			||||||
import java.nio.charset.StandardCharsets;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import java.util.Optional;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
import java.util.function.Supplier;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 | 
					import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 | 
				
			||||||
import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
 | 
					import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
 | 
				
			||||||
import static com.github.tomakehurst.wiremock.client.WireMock.matching;
 | 
					import static com.github.tomakehurst.wiremock.client.WireMock.matching;
 | 
				
			||||||
| 
						 | 
					@ -32,6 +15,15 @@ import static com.github.tomakehurst.wiremock.client.WireMock.verify;
 | 
				
			||||||
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
 | 
					import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
 | 
				
			||||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
 | 
					import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.tomakehurst.wiremock.junit.WireMockRule;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					import javax.annotation.Nonnull;
 | 
				
			||||||
 | 
					import org.junit.Rule;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.whispersystems.textsecuregcm.configuration.TwilioConfiguration;
 | 
				
			||||||
 | 
					import org.whispersystems.textsecuregcm.sms.TwilioSmsSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TwilioSmsSenderTest {
 | 
					public class TwilioSmsSenderTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private static final String       ACCOUNT_ID                  = "test_account_id";
 | 
					  private static final String       ACCOUNT_ID                  = "test_account_id";
 | 
				
			||||||
| 
						 | 
					@ -190,67 +182,6 @@ public class TwilioSmsSenderTest {
 | 
				
			||||||
    assertThat(success).isFalse();
 | 
					    assertThat(success).isFalse();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private void runSenderIdTest(String destination,
 | 
					 | 
				
			||||||
                               String expectedSenderId,
 | 
					 | 
				
			||||||
                               Supplier<TwilioSenderIdConfiguration> senderIdConfigurationSupplier) {
 | 
					 | 
				
			||||||
    setupSuccessStubForSms();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    TwilioConfiguration configuration = createTwilioConfiguration();
 | 
					 | 
				
			||||||
    configuration.setSenderId(senderIdConfigurationSupplier.get());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    TwilioSmsSender sender  = new TwilioSmsSender("http://localhost:" + wireMockRule.port(), configuration);
 | 
					 | 
				
			||||||
    boolean         success = sender.deliverSmsVerification(destination, Optional.of("android-ng"), "987-654").join();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    assertThat(success).isTrue();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final String requestBodyToParam = "To=" + URLEncoder.encode(destination, StandardCharsets.UTF_8);
 | 
					 | 
				
			||||||
    final String requestBodySuffix  = "&Body=%3C%23%3E+Verify+on+AndroidNg%3A+987-654%0A%0Acharacters";
 | 
					 | 
				
			||||||
    final String expectedRequestBody;
 | 
					 | 
				
			||||||
    if (expectedSenderId != null) {
 | 
					 | 
				
			||||||
      expectedRequestBody = requestBodyToParam + "&From=" + expectedSenderId + requestBodySuffix;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      expectedRequestBody = "MessagingServiceSid=" + MESSAGING_SERVICE_SID + "&" + requestBodyToParam + requestBodySuffix;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    verify(1, postRequestedFor(urlEqualTo("/2010-04-01/Accounts/" + ACCOUNT_ID + "/Messages.json"))
 | 
					 | 
				
			||||||
            .withHeader("Content-Type", equalTo("application/x-www-form-urlencoded"))
 | 
					 | 
				
			||||||
            .withRequestBody(equalTo(expectedRequestBody)));
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @Test
 | 
					 | 
				
			||||||
  @Ignore
 | 
					 | 
				
			||||||
  public void testSendAlphaIdByCountryCode() {
 | 
					 | 
				
			||||||
    runSenderIdTest("+85278675309", "SIGNAL", () -> {
 | 
					 | 
				
			||||||
      TwilioSenderIdConfiguration        senderIdConfiguration              = new TwilioSenderIdConfiguration();
 | 
					 | 
				
			||||||
      TwilioCountrySenderIdConfiguration twilioCountrySenderIdConfiguration = new TwilioCountrySenderIdConfiguration();
 | 
					 | 
				
			||||||
      twilioCountrySenderIdConfiguration.setCountryCode("852");
 | 
					 | 
				
			||||||
      twilioCountrySenderIdConfiguration.setSenderId("SIGNAL");
 | 
					 | 
				
			||||||
      senderIdConfiguration.setCountrySpecificSenderIds(List.of(twilioCountrySenderIdConfiguration));
 | 
					 | 
				
			||||||
      return senderIdConfiguration;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @Test
 | 
					 | 
				
			||||||
  @Ignore
 | 
					 | 
				
			||||||
  public void testSenderIdWithAllFieldsPopulated() {
 | 
					 | 
				
			||||||
    final Supplier<TwilioSenderIdConfiguration> senderIdConfigurationSupplier = () -> {
 | 
					 | 
				
			||||||
      TwilioSenderIdConfiguration        senderIdConfiguration               = new TwilioSenderIdConfiguration();
 | 
					 | 
				
			||||||
      TwilioCountrySenderIdConfiguration twilioCountrySenderIdConfiguration1 = new TwilioCountrySenderIdConfiguration();
 | 
					 | 
				
			||||||
      TwilioCountrySenderIdConfiguration twilioCountrySenderIdConfiguration2 = new TwilioCountrySenderIdConfiguration();
 | 
					 | 
				
			||||||
      twilioCountrySenderIdConfiguration1.setCountryCode("1");
 | 
					 | 
				
			||||||
      twilioCountrySenderIdConfiguration1.setSenderId("KNOWYOUREOUTTHERE");
 | 
					 | 
				
			||||||
      twilioCountrySenderIdConfiguration2.setCountryCode("61");
 | 
					 | 
				
			||||||
      twilioCountrySenderIdConfiguration2.setSenderId("SOMEWHERE");
 | 
					 | 
				
			||||||
      senderIdConfiguration.setDefaultSenderId("SOMEHOW");
 | 
					 | 
				
			||||||
      senderIdConfiguration.setCountrySpecificSenderIds(List.of(twilioCountrySenderIdConfiguration1, twilioCountrySenderIdConfiguration2));
 | 
					 | 
				
			||||||
      senderIdConfiguration.setCountryCodesWithoutSenderId(Set.of("7"));
 | 
					 | 
				
			||||||
      return senderIdConfiguration;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    runSenderIdTest("+15128675309", "KNOWYOUREOUTTHERE", senderIdConfigurationSupplier);
 | 
					 | 
				
			||||||
    runSenderIdTest("+610998765432", "SOMEWHERE", senderIdConfigurationSupplier);
 | 
					 | 
				
			||||||
    runSenderIdTest("+74991234567", null, senderIdConfigurationSupplier);
 | 
					 | 
				
			||||||
    runSenderIdTest("+85278675309", "SOMEHOW", senderIdConfigurationSupplier);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @Test
 | 
					  @Test
 | 
				
			||||||
  public void testRetrySmsOnUnreachableErrorCodeIsTriedOnlyOnceWithoutSenderId() {
 | 
					  public void testRetrySmsOnUnreachableErrorCodeIsTriedOnlyOnceWithoutSenderId() {
 | 
				
			||||||
    wireMockRule.stubFor(post(urlEqualTo("/2010-04-01/Accounts/" + ACCOUNT_ID + "/Messages.json"))
 | 
					    wireMockRule.stubFor(post(urlEqualTo("/2010-04-01/Accounts/" + ACCOUNT_ID + "/Messages.json"))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue