@ -47,6 +47,7 @@ import java.lang.reflect.Type;
@@ -47,6 +47,7 @@ import java.lang.reflect.Type;
import java.nio.charset.Charset ;
import java.util.Arrays ;
import java.util.Collections ;
import java.util.List ;
import javax.ws.rs.GET ;
import javax.ws.rs.Path ;
import okhttp3.mockwebserver.MockResponse ;
@ -85,10 +86,12 @@ public class ReactiveFeignIntegrationTest {
@@ -85,10 +86,12 @@ public class ReactiveFeignIntegrationTest {
public void testReactorTargetFull ( ) throws Exception {
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "1.0" ) ) ;
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "{ \"username\": \"test\" }" ) ) ;
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "[{ \"username\": \"test\" }]" ) ) ;
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "[{ \"username\": \"test\" }]" ) ) ;
TestReactorService service = ReactorFeign . builder ( )
. encoder ( new JacksonEncoder ( ) )
. decoder ( new JacksonDecoder ( ) )
. decoder ( new ReactorDecoder ( new JacksonDecoder ( ) ) )
. logger ( new ConsoleLogger ( ) )
. dismiss404 ( )
. options ( new Options ( ) )
@ -102,7 +105,6 @@ public class ReactiveFeignIntegrationTest {
@@ -102,7 +105,6 @@ public class ReactiveFeignIntegrationTest {
. verify ( ) ;
assertThat ( webServer . takeRequest ( ) . getPath ( ) ) . isEqualToIgnoringCase ( "/version" ) ;
/* test encoding and decoding */
StepVerifier . create ( service . user ( "test" ) )
. assertNext ( user - > assertThat ( user ) . hasFieldOrPropertyWithValue ( "username" , "test" ) )
@ -110,16 +112,28 @@ public class ReactiveFeignIntegrationTest {
@@ -110,16 +112,28 @@ public class ReactiveFeignIntegrationTest {
. verify ( ) ;
assertThat ( webServer . takeRequest ( ) . getPath ( ) ) . isEqualToIgnoringCase ( "/users/test" ) ;
StepVerifier . create ( service . usersFlux ( ) )
. assertNext ( user - > assertThat ( user ) . hasFieldOrPropertyWithValue ( "username" , "test" ) )
. expectComplete ( )
. verify ( ) ;
assertThat ( webServer . takeRequest ( ) . getPath ( ) ) . isEqualToIgnoringCase ( "/users" ) ;
StepVerifier . create ( service . usersMono ( ) )
. assertNext ( users - > assertThat ( users . get ( 0 ) ) . hasFieldOrPropertyWithValue ( "username" , "test" ) )
. expectComplete ( )
. verify ( ) ;
assertThat ( webServer . takeRequest ( ) . getPath ( ) ) . isEqualToIgnoringCase ( "/users" ) ;
}
@Test
public void testRxJavaTarget ( ) throws Exception {
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "1.0" ) ) ;
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "{ \"username\": \"test\" }" ) ) ;
this . webServer . enqueue ( new MockResponse ( ) . setBody ( "[{ \"username\": \"test\" }]" ) ) ;
TestReactiveXService service = RxJavaFeign . builder ( )
. encoder ( new JacksonEncoder ( ) )
. decoder ( new JacksonDecoder ( ) )
. decoder ( new RxJavaDecoder ( new JacksonDecoder ( ) ) )
. logger ( new ConsoleLogger ( ) )
. logLevel ( Level . FULL )
. target ( TestReactiveXService . class , this . getServerUrl ( ) ) ;
@ -137,6 +151,12 @@ public class ReactiveFeignIntegrationTest {
@@ -137,6 +151,12 @@ public class ReactiveFeignIntegrationTest {
. expectComplete ( )
. verify ( ) ;
assertThat ( webServer . takeRequest ( ) . getPath ( ) ) . isEqualToIgnoringCase ( "/users/test" ) ;
StepVerifier . create ( service . users ( ) )
. assertNext ( users - > assertThat ( users . get ( 0 ) ) . hasFieldOrPropertyWithValue ( "username" , "test" ) )
. expectComplete ( )
. verify ( ) ;
assertThat ( webServer . takeRequest ( ) . getPath ( ) ) . isEqualToIgnoringCase ( "/users" ) ;
}
@Test
@ -163,6 +183,7 @@ public class ReactiveFeignIntegrationTest {
@@ -163,6 +183,7 @@ public class ReactiveFeignIntegrationTest {
RequestInterceptor mockInterceptor = mock ( RequestInterceptor . class ) ;
TestReactorService service = ReactorFeign . builder ( )
. requestInterceptor ( mockInterceptor )
. decoder ( new ReactorDecoder ( new Decoder . Default ( ) ) )
. target ( TestReactorService . class , this . getServerUrl ( ) ) ;
StepVerifier . create ( service . version ( ) )
. expectNext ( "1.0" )
@ -178,6 +199,7 @@ public class ReactiveFeignIntegrationTest {
@@ -178,6 +199,7 @@ public class ReactiveFeignIntegrationTest {
RequestInterceptor mockInterceptor = mock ( RequestInterceptor . class ) ;
TestReactorService service = ReactorFeign . builder ( )
. requestInterceptors ( Arrays . asList ( mockInterceptor , mockInterceptor ) )
. decoder ( new ReactorDecoder ( new Decoder . Default ( ) ) )
. target ( TestReactorService . class , this . getServerUrl ( ) ) ;
StepVerifier . create ( service . version ( ) )
. expectNext ( "1.0" )
@ -216,6 +238,7 @@ public class ReactiveFeignIntegrationTest {
@@ -216,6 +238,7 @@ public class ReactiveFeignIntegrationTest {
given ( encoder . encode ( any ( Object . class ) ) ) . willReturn ( Collections . emptyMap ( ) ) ;
TestReactiveXService service = RxJavaFeign . builder ( )
. queryMapEncoder ( encoder )
. decoder ( new RxJavaDecoder ( new Decoder . Default ( ) ) )
. target ( TestReactiveXService . class , this . getServerUrl ( ) ) ;
StepVerifier . create ( service . search ( new SearchQuery ( ) ) )
. expectNext ( "No Results Found" )
@ -254,6 +277,7 @@ public class ReactiveFeignIntegrationTest {
@@ -254,6 +277,7 @@ public class ReactiveFeignIntegrationTest {
when ( spy . clone ( ) ) . thenReturn ( spy ) ;
TestReactorService service = ReactorFeign . builder ( )
. retryer ( spy )
. decoder ( new ReactorDecoder ( new Decoder . Default ( ) ) )
. target ( TestReactorService . class , this . getServerUrl ( ) ) ;
StepVerifier . create ( service . version ( ) )
. expectNext ( "1.0" )
@ -275,6 +299,7 @@ public class ReactiveFeignIntegrationTest {
@@ -275,6 +299,7 @@ public class ReactiveFeignIntegrationTest {
TestReactorService service = ReactorFeign . builder ( )
. client ( client )
. decoder ( new ReactorDecoder ( new Decoder . Default ( ) ) )
. target ( TestReactorService . class , this . getServerUrl ( ) ) ;
StepVerifier . create ( service . version ( ) )
. expectNext ( "1.0" )
@ -289,6 +314,7 @@ public class ReactiveFeignIntegrationTest {
@@ -289,6 +314,7 @@ public class ReactiveFeignIntegrationTest {
TestJaxRSReactorService service = ReactorFeign . builder ( )
. contract ( new JAXRSContract ( ) )
. decoder ( new ReactorDecoder ( new Decoder . Default ( ) ) )
. target ( TestJaxRSReactorService . class , this . getServerUrl ( ) ) ;
StepVerifier . create ( service . version ( ) )
. expectNext ( "1.0" )
@ -303,7 +329,13 @@ public class ReactiveFeignIntegrationTest {
@@ -303,7 +329,13 @@ public class ReactiveFeignIntegrationTest {
Mono < String > version ( ) ;
@RequestLine ( "GET /users/{username}" )
Flux < User > user ( @Param ( "username" ) String username ) ;
Mono < User > user ( @Param ( "username" ) String username ) ;
@RequestLine ( "GET /users" )
Flux < User > usersFlux ( ) ;
@RequestLine ( "GET /users" )
Mono < List < User > > usersMono ( ) ;
}
@ -314,6 +346,9 @@ public class ReactiveFeignIntegrationTest {
@@ -314,6 +346,9 @@ public class ReactiveFeignIntegrationTest {
@RequestLine ( "GET /users/{username}" )
Flowable < User > user ( @Param ( "username" ) String username ) ;
@RequestLine ( "GET /users" )
Flowable < List < User > > users ( ) ;
@RequestLine ( "GET /users/search" )
Flowable < String > search ( @QueryMap SearchQuery query ) ;
}