diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index cfd0d71f8..4789d2424 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -1132,7 +1132,7 @@ public class WhisperServerService extends Application authenticatedServiceStub().sendMessage( generateRequest(serviceIdentifier, false, true, messages))); @@ -682,7 +693,6 @@ class MessagesGrpcServiceTest extends SimpleBaseGrpcTest authenticatedServiceStub().sendSyncMessage(generateRequest(true, messages))); @@ -719,7 +729,6 @@ class MessagesGrpcServiceTest extends SimpleBaseGrpcTest messages = @@ -783,7 +792,7 @@ class MessagesGrpcServiceTest extends SimpleBaseGrpcTest { Flux ackArg = invocation.getArgument(4); // use mapNotNull instead of `then` because there is an interaction between the blocking client and @@ -793,7 +802,7 @@ class MessagesGrpcServiceTest extends SimpleBaseGrpcTest blockingCall = authenticatedServiceStub().getMessages(); - final CompletableFuture reader = CompletableFuture.supplyAsync(() -> assertThrows(StatusException.class, () -> blockingCall.read())); + final CompletableFuture reader = CompletableFuture.supplyAsync(() -> assertThrows(StatusException.class, blockingCall::read)); blockingCall.write(GetMessagesRequest.newBuilder().setOptions(GetMessagesRequest.GetMessageOptions.getDefaultInstance()).build()); blockingCall.write(request); @@ -814,6 +823,55 @@ class MessagesGrpcServiceTest extends SimpleBaseGrpcTest maybeToken.map(token -> Arrays.equals(token, reportSpamToken)).orElse(false)), + any(), + eq(true)); + } + + @Test + void reportMessageNoToken() throws StatusException { + final AciServiceIdentifier sourceServiceIdentifier = new AciServiceIdentifier(UUID.randomUUID()); + final UUID messageGuid = UUID.randomUUID(); + + //noinspection ResultOfMethodCallIgnored + authenticatedServiceStub().reportMessage(ReportMessageRequest.newBuilder() + .setSourceServiceIdentifier(GrpcServiceIdentifierUtil.toGrpcServiceIdentifier(sourceServiceIdentifier)) + .setMessageGuid(UUIDUtil.toByteString(messageGuid)) + .build()); + + verify(reportMessageManager).report(eq(Optional.empty()), + eq(sourceServiceIdentifier.uuid()), + eq(Optional.empty()), + eq(messageGuid), + eq(AUTHENTICATED_ACI), + eq(Optional.empty()), + any(), + eq(true)); + } + } + private static ThrowingSupplier convertStatusException(final ThrowingSupplier serviceCall) { return () -> { try {