Support fallback to default language without country-specific locale

This commit is contained in:
Moxie Marlinspike 2018-12-20 10:36:51 -08:00
parent 939c46fafd
commit 88353e8748
3 changed files with 46 additions and 1 deletions

View File

@ -65,6 +65,10 @@ public class VoiceVerificationController {
return getLocalizedDescription(code, locale);
}
if (locale != null && locale.split("-").length >= 1 && supportedLocales.contains(locale.split("-")[0])) {
return getLocalizedDescription(code, locale.split("-")[0]);
}
return getLocalizedDescription(code, "en-US");
}

View File

@ -10,7 +10,9 @@ import org.whispersystems.textsecuregcm.tests.util.AuthHelper;
import org.whispersystems.textsecuregcm.util.SystemMapper;
import javax.ws.rs.core.Response;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import io.dropwizard.auth.AuthValueFactoryProvider;
import io.dropwizard.testing.FixtureHelpers;
@ -27,7 +29,7 @@ public class VoiceVerificationControllerTest {
.setMapper(SystemMapper.getMapper())
.setTestContainerFactory(new GrizzlyWebTestContainerFactory())
.addResource(new VoiceVerificationController("https://foo.com/bar",
Collections.singleton("pt-BR")))
new HashSet<>(Arrays.asList("pt-BR", "ru"))))
.build();
@Test
@ -43,6 +45,19 @@ public class VoiceVerificationControllerTest {
assertThat(response.readEntity(String.class)).isXmlEqualTo(FixtureHelpers.fixture("fixtures/voice_verification_pt_br.xml"));
}
@Test
public void testTwimlSplitLocale() {
Response response =
resources.getJerseyTest()
.target("/v1/voice/description/123456")
.queryParam("l", "ru-RU")
.request()
.post(null);
assertThat(response.getStatus()).isEqualTo(200);
assertThat(response.readEntity(String.class)).isXmlEqualTo(FixtureHelpers.fixture("fixtures/voice_verification_ru.xml"));
}
@Test
public void testTwimlUnsupportedLocale() {
Response response =

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play>https://foo.com/bar/ru/verification.mp3</Play>
<Play>https://foo.com/bar/ru/1_middle.mp3</Play>
<Play>https://foo.com/bar/ru/2_middle.mp3</Play>
<Play>https://foo.com/bar/ru/3_middle.mp3</Play>
<Play>https://foo.com/bar/ru/4_middle.mp3</Play>
<Play>https://foo.com/bar/ru/5_middle.mp3</Play>
<Play>https://foo.com/bar/ru/6_falling.mp3</Play>
<Pause length="1"/>
<Play>https://foo.com/bar/ru/verification.mp3</Play>
<Play>https://foo.com/bar/ru/1_middle.mp3</Play>
<Play>https://foo.com/bar/ru/2_middle.mp3</Play>
<Play>https://foo.com/bar/ru/3_middle.mp3</Play>
<Play>https://foo.com/bar/ru/4_middle.mp3</Play>
<Play>https://foo.com/bar/ru/5_middle.mp3</Play>
<Play>https://foo.com/bar/ru/6_falling.mp3</Play>
<Pause length="1"/>
<Play>https://foo.com/bar/ru/verification.mp3</Play>
<Play>https://foo.com/bar/ru/1_middle.mp3</Play>
<Play>https://foo.com/bar/ru/2_middle.mp3</Play>
<Play>https://foo.com/bar/ru/3_middle.mp3</Play>
<Play>https://foo.com/bar/ru/4_middle.mp3</Play>
<Play>https://foo.com/bar/ru/5_middle.mp3</Play>
<Play>https://foo.com/bar/ru/6_falling.mp3</Play>
</Response>