Allow iOS callers to specify whether they're providing a VOIP token for preauth.

This commit is contained in:
Jon Chambers 2021-05-24 15:29:13 -04:00 committed by Chris Eager
parent 1cf9397bbd
commit 3131bd3dd9
2 changed files with 48 additions and 2 deletions

View File

@ -170,7 +170,8 @@ public class AccountController {
@Path("/{type}/preauth/{token}/{number}") @Path("/{type}/preauth/{token}/{number}")
public Response getPreAuth(@PathParam("type") String pushType, public Response getPreAuth(@PathParam("type") String pushType,
@PathParam("token") String pushToken, @PathParam("token") String pushToken,
@PathParam("number") String number) @PathParam("number") String number,
@QueryParam("voip") Optional<Boolean> useVoip)
{ {
if (!"apn".equals(pushType) && !"fcm".equals(pushType)) { if (!"apn".equals(pushType) && !"fcm".equals(pushType)) {
return Response.status(400).build(); return Response.status(400).build();
@ -190,7 +191,7 @@ public class AccountController {
if ("fcm".equals(pushType)) { if ("fcm".equals(pushType)) {
gcmSender.sendMessage(new GcmMessage(pushToken, number, 0, GcmMessage.Type.CHALLENGE, Optional.of(storedVerificationCode.getPushCode()))); gcmSender.sendMessage(new GcmMessage(pushToken, number, 0, GcmMessage.Type.CHALLENGE, Optional.of(storedVerificationCode.getPushCode())));
} else if ("apn".equals(pushType)) { } else if ("apn".equals(pushType)) {
apnSender.sendMessage(new ApnMessage(pushToken, number, 0, true, ApnMessage.Type.CHALLENGE, Optional.of(storedVerificationCode.getPushCode()))); apnSender.sendMessage(new ApnMessage(pushToken, number, 0, useVoip.orElse(true), ApnMessage.Type.CHALLENGE, Optional.of(storedVerificationCode.getPushCode())));
} else { } else {
throw new AssertionError(); throw new AssertionError();
} }

View File

@ -322,6 +322,51 @@ class AccountControllerTest {
assertThat(captor.getValue().getChallengeData().isPresent()).isTrue(); assertThat(captor.getValue().getChallengeData().isPresent()).isTrue();
assertThat(captor.getValue().getChallengeData().get().length()).isEqualTo(32); assertThat(captor.getValue().getChallengeData().get().length()).isEqualTo(32);
assertThat(captor.getValue().getMessage()).contains("\"challenge\" : \"" + captor.getValue().getChallengeData().get() + "\""); assertThat(captor.getValue().getMessage()).contains("\"challenge\" : \"" + captor.getValue().getChallengeData().get() + "\"");
assertThat(captor.getValue().isVoip()).isTrue();
verifyNoMoreInteractions(gcmSender);
}
@Test
void testGetApnPreauthExplicitVoip() throws Exception {
Response response = resources.getJerseyTest()
.target("/v1/accounts/apn/preauth/mytoken/+14152222222")
.queryParam("voip", "true")
.request()
.get();
assertThat(response.getStatus()).isEqualTo(200);
ArgumentCaptor<ApnMessage> captor = ArgumentCaptor.forClass(ApnMessage.class);
verify(apnSender, times(1)).sendMessage(captor.capture());
assertThat(captor.getValue().getApnId()).isEqualTo("mytoken");
assertThat(captor.getValue().getChallengeData().isPresent()).isTrue();
assertThat(captor.getValue().getChallengeData().get().length()).isEqualTo(32);
assertThat(captor.getValue().getMessage()).contains("\"challenge\" : \"" + captor.getValue().getChallengeData().get() + "\"");
assertThat(captor.getValue().isVoip()).isTrue();
verifyNoMoreInteractions(gcmSender);
}
@Test
void testGetApnPreauthExplicitNoVoip() throws Exception {
Response response = resources.getJerseyTest()
.target("/v1/accounts/apn/preauth/mytoken/+14152222222")
.queryParam("voip", "false")
.request()
.get();
assertThat(response.getStatus()).isEqualTo(200);
ArgumentCaptor<ApnMessage> captor = ArgumentCaptor.forClass(ApnMessage.class);
verify(apnSender, times(1)).sendMessage(captor.capture());
assertThat(captor.getValue().getApnId()).isEqualTo("mytoken");
assertThat(captor.getValue().getChallengeData().isPresent()).isTrue();
assertThat(captor.getValue().getChallengeData().get().length()).isEqualTo(32);
assertThat(captor.getValue().getMessage()).contains("\"challenge\" : \"" + captor.getValue().getChallengeData().get() + "\"");
assertThat(captor.getValue().isVoip()).isFalse();
verifyNoMoreInteractions(gcmSender); verifyNoMoreInteractions(gcmSender);
} }