1616package software .amazon .awssdk .core .internal .async ;
1717
1818import static org .assertj .core .api .Assertions .assertThat ;
19+ import static org .assertj .core .api .Assertions .fail ;
1920import static org .mockito .Mockito .mock ;
2021import static org .mockito .Mockito .when ;
2122
2930import java .util .Arrays ;
3031import java .util .Collections ;
3132import java .util .List ;
33+ import java .util .Optional ;
3234import java .util .concurrent .CompletableFuture ;
3335import java .util .concurrent .CountDownLatch ;
3436import java .util .concurrent .TimeUnit ;
@@ -64,10 +66,11 @@ void tearDown() throws Exception {
6466 @ Test
6567 void happyPath_singleOnNext () throws Exception {
6668 // Given
67- AsyncResponseTransformer <Object , Object > initialTransformer = AsyncResponseTransformer .toFile (testFile );
69+ FileAsyncResponseTransformer <SdkResponse > initialTransformer =
70+ (FileAsyncResponseTransformer <SdkResponse >) AsyncResponseTransformer .<SdkResponse >toFile (testFile );
6871
6972 FileAsyncResponseTransformerPublisher <SdkResponse > publisher =
70- new FileAsyncResponseTransformerPublisher <>(( FileAsyncResponseTransformer <?>) initialTransformer );
73+ new FileAsyncResponseTransformerPublisher <>(initialTransformer );
7174
7275 CountDownLatch latch = new CountDownLatch (1 );
7376 AtomicReference <AsyncResponseTransformer <SdkResponse , SdkResponse >> receivedTransformer = new AtomicReference <>();
@@ -79,16 +82,18 @@ void happyPath_singleOnNext() throws Exception {
7982
8083 @ Override
8184 public void onSubscribe (Subscription s ) {
85+ System .out .println ("onSubscribe" );
8286 this .subscription = s ;
8387 s .request (1 );
8488 }
8589
8690 @ Override
8791 public void onNext (AsyncResponseTransformer <SdkResponse , SdkResponse > transformer ) {
92+ System .out .println ("onNext" );
8893 receivedTransformer .set (transformer );
8994
9095 // Simulate response with content-range header
91- SdkResponse mockResponse = createMockResponse ( );
96+ SdkResponse mockResponse = createMockResponseWithRange ( "bytes 0-9/10" );
9297 CompletableFuture <SdkResponse > prepareFuture = transformer .prepare ();
9398 CompletableFutureUtils .forwardResultTo (prepareFuture , future );
9499 transformer .onResponse (mockResponse );
@@ -102,11 +107,12 @@ public void onNext(AsyncResponseTransformer<SdkResponse, SdkResponse> transforme
102107
103108 @ Override
104109 public void onError (Throwable t ) {
105- latch . countDown ( );
110+ fail ( "Unexpected error with esception: " + t . getMessage () );
106111 }
107112
108113 @ Override
109114 public void onComplete () {
115+ System .out .println ("onComplete" );
110116 latch .countDown ();
111117 }
112118 });
@@ -118,18 +124,6 @@ public void onComplete() {
118124 assertThat (future ).isCompleted ();
119125 }
120126
121- private SdkResponse createMockResponse () {
122- SdkResponse mockResponse = mock (SdkResponse .class );
123- SdkHttpResponse mockHttpResponse = mock (SdkHttpResponse .class );
124-
125- when (mockResponse .sdkHttpResponse ()).thenReturn (mockHttpResponse );
126- when (mockHttpResponse .headers ()).thenReturn (
127- Collections .singletonMap ("x-amz-content-range" , Collections .singletonList ("bytes 0-9/10" ))
128- );
129-
130- return mockResponse ;
131- }
132-
133127 private SdkPublisher <ByteBuffer > createMockPublisher () {
134128 return s -> s .onSubscribe (new Subscription () {
135129 @ Override
@@ -225,9 +219,7 @@ private SdkResponse createMockResponseWithRange(String contentRange) {
225219 SdkHttpResponse mockHttpResponse = mock (SdkHttpResponse .class );
226220
227221 when (mockResponse .sdkHttpResponse ()).thenReturn (mockHttpResponse );
228- when (mockHttpResponse .headers ()).thenReturn (
229- Collections .singletonMap ("x-amz-content-range" , Collections .singletonList (contentRange ))
230- );
222+ when (mockHttpResponse .firstMatchingHeader ("x-amz-content-range" )).thenReturn (Optional .of (contentRange ));
231223
232224 return mockResponse ;
233225 }
0 commit comments