|
42 | 42 | import org.junit.Test; |
43 | 43 | import org.junit.runner.RunWith; |
44 | 44 | import org.junit.runners.JUnit4; |
| 45 | +import org.mockito.ArgumentMatchers; |
45 | 46 | import org.mockito.Mock; |
46 | 47 | import org.mockito.Mockito; |
47 | 48 | import org.mockito.junit.MockitoJUnit; |
@@ -325,4 +326,37 @@ public void testAwaitReplicationCallablePolling() throws Exception { |
325 | 326 |
|
326 | 327 | consistentFuture.get(1, TimeUnit.SECONDS); |
327 | 328 | } |
| 329 | + |
| 330 | + @Test |
| 331 | + public void testWithProvidedToken() throws Exception { |
| 332 | + // 1. Setup: Request with a pre-existing token |
| 333 | + String existingToken = "existing-token"; |
| 334 | + ConsistencyRequest consistencyRequest = |
| 335 | + ConsistencyRequest.forReplication(TABLE_ID, existingToken); |
| 336 | + |
| 337 | + // 2. Setup: Mock the check operation to succeed immediately |
| 338 | + CheckConsistencyRequest expectedCheckRequest = |
| 339 | + CheckConsistencyRequest.newBuilder() |
| 340 | + .setName(TABLE_NAME.toString()) |
| 341 | + .setConsistencyToken(existingToken) |
| 342 | + .setStandardReadRemoteWrites(StandardReadRemoteWrites.newBuilder().build()) |
| 343 | + .build(); |
| 344 | + CheckConsistencyResponse expectedResponse = |
| 345 | + CheckConsistencyResponse.newBuilder().setConsistent(true).build(); |
| 346 | + |
| 347 | + Mockito.when(mockCheckConsistencyCallable.futureCall(expectedCheckRequest, CALL_CONTEXT)) |
| 348 | + .thenReturn(ApiFutures.immediateFuture(expectedResponse)); |
| 349 | + |
| 350 | + // 3. Execute |
| 351 | + ApiFuture<Void> future = awaitConsistencyCallable.futureCall(consistencyRequest, CALL_CONTEXT); |
| 352 | + future.get(1, TimeUnit.SECONDS); |
| 353 | + |
| 354 | + // 4. Verify: Generate was NEVER called, Check WAS called |
| 355 | + Mockito.verify(mockGenerateConsistencyTokenCallable, Mockito.never()) |
| 356 | + .futureCall( |
| 357 | + ArgumentMatchers.any(GenerateConsistencyTokenRequest.class), |
| 358 | + ArgumentMatchers.any(ApiCallContext.class)); |
| 359 | + Mockito.verify(mockCheckConsistencyCallable, Mockito.times(1)) |
| 360 | + .futureCall(expectedCheckRequest, CALL_CONTEXT); |
| 361 | + } |
328 | 362 | } |
0 commit comments