1717import org .apache .http .client .HttpClient ;
1818import org .apache .http .client .methods .HttpGet ;
1919import org .apache .http .conn .ClientConnectionManager ;
20- import org .easymock .Capture ;
21- import org .easymock .EasyMock ;
2220import org .junit .Before ;
2321import org .junit .Test ;
22+ import org .mockito .ArgumentCaptor ;
2423
2524import static com .github .sandrasi .geocoder .components .GeocodeStatus .*;
26- import static org .easymock .EasyMock .*;
2725import static org .hamcrest .CoreMatchers .*;
2826import static org .junit .Assert .*;
27+ import static org .mockito .BDDMockito .*;
28+ import static org .mockito .Matchers .any ;
2929
3030public class GoogleGeocodeRequestTest {
3131
@@ -37,7 +37,7 @@ public class GoogleGeocodeRequestTest {
3737
3838 @ Before
3939 public void setUp () {
40- httpClient = EasyMock . createMock (HttpClient .class );
40+ httpClient = mock (HttpClient .class );
4141 googleGeocoder = GoogleGeocoderFactory .createGoogleGeocoder (httpClient );
4242 }
4343
@@ -48,24 +48,23 @@ public void shouldExecuteAddressGeocoding() throws Exception {
4848 .withRegionBiasing ("us" )
4949 .withViewportBiasing (GeographicLocation .fromValues (0 , 0 ), GeographicLocation .fromValues (1 , 1 ))
5050 .build ();
51- Capture <HttpGet > capturedHttpGet = new Capture <>();
52- HttpResponse httpResponse = EasyMock .createMock (HttpResponse .class );
53- StatusLine statusLine = EasyMock .createMock (StatusLine .class );
54- HttpEntity httpEntity = EasyMock .createMock (HttpEntity .class );
55- ClientConnectionManager clientConnectionManager = EasyMock .createMock (ClientConnectionManager .class );
56-
57- expect (httpClient .execute (capture (capturedHttpGet ))).andReturn (httpResponse );
58- expect (httpResponse .getStatusLine ()).andReturn (statusLine );
59- expect (statusLine .getStatusCode ()).andReturn (HTTP_OK );
60- expect (httpResponse .getEntity ()).andReturn (httpEntity );
61- expect (httpEntity .getContent ()).andReturn (new ByteArrayInputStream ("{\" status\" :\" ZERO_RESULTS\" ,\" results\" :[]}" .getBytes ()));
62- expect (httpClient .getConnectionManager ()).andReturn (clientConnectionManager );
51+ HttpResponse httpResponse = mock (HttpResponse .class );
52+ StatusLine statusLine = mock (StatusLine .class );
53+ HttpEntity httpEntity = mock (HttpEntity .class );
54+ ClientConnectionManager clientConnectionManager = mock (ClientConnectionManager .class );
55+
56+ given (httpClient .execute (any (HttpGet .class ))).willReturn (httpResponse );
57+ given (httpResponse .getStatusLine ()).willReturn (statusLine );
58+ given (statusLine .getStatusCode ()).willReturn (HTTP_OK );
59+ given (httpResponse .getEntity ()).willReturn (httpEntity );
60+ given (httpEntity .getContent ()).willReturn (new ByteArrayInputStream ("{\" status\" :\" ZERO_RESULTS\" ,\" results\" :[]}" .getBytes ()));
61+ given (httpClient .getConnectionManager ()).willReturn (clientConnectionManager );
6362 clientConnectionManager .closeExpiredConnections ();
64- replay (httpClient , httpResponse , statusLine , httpEntity , clientConnectionManager );
6563
6664 GeocodeResponse geocodeResponse = subject .execute ();
6765
68- verify (httpClient , httpResponse , statusLine , httpEntity , clientConnectionManager );
66+ ArgumentCaptor <HttpGet > httpGetCaptor = ArgumentCaptor .forClass (HttpGet .class );
67+ verify (httpClient ).execute (httpGetCaptor .capture ());
6968
7069 URI expectedUri = URI .create ("http://maps.googleapis.com/maps/api/geocode/json?"
7170 + "address=" + URLEncoder .encode ("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" , "UTF-8" )
@@ -74,7 +73,7 @@ public void shouldExecuteAddressGeocoding() throws Exception {
7473 + "&language=en"
7574 + "&sensor=false" );
7675
77- assertThat (capturedHttpGet .getValue ().getURI (), is (expectedUri ));
76+ assertThat (httpGetCaptor .getValue ().getURI (), is (expectedUri ));
7877 assertThat (geocodeResponse .getGeocodeStatus (), is (ZERO_RESULTS ));
7978 assertThat (geocodeResponse .getQueryString (), is ("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" ));
8079 assertThat (geocodeResponse .getGeocodedAddresses (), is (Collections .<GeocodedAddress >emptyList ()));
@@ -87,24 +86,23 @@ public void shouldExecuteAddressLookup() throws Exception {
8786 .withRegionBiasing ("us" )
8887 .withViewportBiasing (GeographicLocation .fromValues (0 , 0 ), GeographicLocation .fromValues (1 , 1 ))
8988 .build ();
90- Capture <HttpGet > capturedHttpGet = new Capture <>();
91- HttpResponse httpResponse = EasyMock .createMock (HttpResponse .class );
92- StatusLine statusLine = EasyMock .createMock (StatusLine .class );
93- HttpEntity httpEntity = EasyMock .createMock (HttpEntity .class );
94- ClientConnectionManager clientConnectionManager = EasyMock .createMock (ClientConnectionManager .class );
95-
96- expect (httpClient .execute (capture (capturedHttpGet ))).andReturn (httpResponse );
97- expect (httpResponse .getStatusLine ()).andReturn (statusLine );
98- expect (statusLine .getStatusCode ()).andReturn (HTTP_OK );
99- expect (httpResponse .getEntity ()).andReturn (httpEntity );
100- expect (httpEntity .getContent ()).andReturn (new ByteArrayInputStream ("{\" status\" :\" ZERO_RESULTS\" ,\" results\" :[]}" .getBytes ()));
101- expect (httpClient .getConnectionManager ()).andReturn (clientConnectionManager );
89+ HttpResponse httpResponse = mock (HttpResponse .class );
90+ StatusLine statusLine = mock (StatusLine .class );
91+ HttpEntity httpEntity = mock (HttpEntity .class );
92+ ClientConnectionManager clientConnectionManager = mock (ClientConnectionManager .class );
93+
94+ given (httpClient .execute (any (HttpGet .class ))).willReturn (httpResponse );
95+ given (httpResponse .getStatusLine ()).willReturn (statusLine );
96+ given (statusLine .getStatusCode ()).willReturn (HTTP_OK );
97+ given (httpResponse .getEntity ()).willReturn (httpEntity );
98+ given (httpEntity .getContent ()).willReturn (new ByteArrayInputStream ("{\" status\" :\" ZERO_RESULTS\" ,\" results\" :[]}" .getBytes ()));
99+ given (httpClient .getConnectionManager ()).willReturn (clientConnectionManager );
102100 clientConnectionManager .closeExpiredConnections ();
103- replay (httpClient , httpResponse , statusLine , httpEntity , clientConnectionManager );
104101
105102 GeocodeResponse geocodeResponse = subject .execute ();
106103
107- verify (httpClient , httpResponse , statusLine , httpEntity , clientConnectionManager );
104+ ArgumentCaptor <HttpGet > httpGetCaptor = ArgumentCaptor .forClass (HttpGet .class );
105+ verify (httpClient ).execute (httpGetCaptor .capture ());
108106
109107 URI expectedUri = URI .create ("http://maps.googleapis.com/maps/api/geocode/json?"
110108 + "latlng=" + URLEncoder .encode ("37.422782,-122.085099" , "UTF-8" )
@@ -113,7 +111,7 @@ public void shouldExecuteAddressLookup() throws Exception {
113111 + "&language=en"
114112 + "&sensor=false" );
115113
116- assertThat (capturedHttpGet .getValue ().getURI (), is (expectedUri ));
114+ assertThat (httpGetCaptor .getValue ().getURI (), is (expectedUri ));
117115 assertThat (geocodeResponse .getGeocodeStatus (), is (ZERO_RESULTS ));
118116 assertThat (geocodeResponse .getQueryString (), is ("37.422782, -122.085099" ));
119117 assertThat (geocodeResponse .getGeocodedAddresses (), is (Collections .<GeocodedAddress >emptyList ()));
@@ -122,56 +120,53 @@ public void shouldExecuteAddressLookup() throws Exception {
122120 @ Test (expected = GeocodeException .class )
123121 public void shouldThrowExceptionIfHttpProtocolErrorOccurs () throws Exception {
124122 GoogleGeocodeRequest subject = googleGeocoder .newGeocodeRequestBuilder ("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" ).build ();
125- ClientConnectionManager clientConnectionManager = EasyMock . createMock (ClientConnectionManager .class );
123+ ClientConnectionManager clientConnectionManager = mock (ClientConnectionManager .class );
126124
127- expect (httpClient .execute (anyObject (HttpGet .class ))).andThrow ( new ClientProtocolException ( "test exception" ) );
128- expect (httpClient .getConnectionManager ()).andReturn (clientConnectionManager );
125+ given (httpClient .execute (any (HttpGet .class ))).willThrow ( ClientProtocolException . class );
126+ given (httpClient .getConnectionManager ()).willReturn (clientConnectionManager );
129127 clientConnectionManager .closeExpiredConnections ();
130- replay (httpClient , clientConnectionManager );
131128
132129 subject .execute ();
133130 }
134131
135132 @ Test (expected = GeocodeException .class )
136133 public void shouldThrowExceptionIfTheGoogleGeocodeServiceReturnsAnErrorCode () throws Exception {
137134 GoogleGeocodeRequest subject = googleGeocoder .newGeocodeRequestBuilder ("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" ).build ();
138- HttpResponse httpResponse = EasyMock . createMock (HttpResponse .class );
139- StatusLine statusLine = EasyMock . createMock (StatusLine .class );
140- HttpEntity httpEntity = EasyMock . createMock (HttpEntity .class );
141- ClientConnectionManager clientConnectionManager = EasyMock . createMock (ClientConnectionManager .class );
142-
143- expect (httpClient .execute (anyObject (HttpGet .class ))).andReturn (httpResponse );
144- expect (httpResponse .getStatusLine ()).andReturn (statusLine );
145- expect (statusLine .getStatusCode ()).andReturn (HTTP_FORBIDDEN );
146- expect (httpResponse .getStatusLine ()).andReturn (statusLine );
147- expect (statusLine .getStatusCode ()).andReturn (HTTP_FORBIDDEN );
148- expect (httpResponse .getStatusLine ()).andReturn (statusLine );
149- expect (statusLine .getReasonPhrase ()).andReturn ("Forbidden" );
150- expect (httpResponse .getEntity ()).andReturn (httpEntity );
151- expect (httpEntity .getContent ()).andReturn (new ByteArrayInputStream ("Unable to authenticate the supplied URL. Please check your client and signature parameters." .getBytes ()));
152- expect (httpClient .getConnectionManager ()).andReturn (clientConnectionManager );
135+ HttpResponse httpResponse = mock (HttpResponse .class );
136+ StatusLine statusLine = mock (StatusLine .class );
137+ HttpEntity httpEntity = mock (HttpEntity .class );
138+ ClientConnectionManager clientConnectionManager = mock (ClientConnectionManager .class );
139+
140+ given (httpClient .execute (any (HttpGet .class ))).willReturn (httpResponse );
141+ given (httpResponse .getStatusLine ()).willReturn (statusLine );
142+ given (statusLine .getStatusCode ()).willReturn (HTTP_FORBIDDEN );
143+ given (httpResponse .getStatusLine ()).willReturn (statusLine );
144+ given (statusLine .getStatusCode ()).willReturn (HTTP_FORBIDDEN );
145+ given (httpResponse .getStatusLine ()).willReturn (statusLine );
146+ given (statusLine .getReasonPhrase ()).willReturn ("Forbidden" );
147+ given (httpResponse .getEntity ()).willReturn (httpEntity );
148+ given (httpEntity .getContent ()).willReturn (new ByteArrayInputStream ("Unable to authenticate the supplied URL. Please check your client and signature parameters." .getBytes ()));
149+ given (httpClient .getConnectionManager ()).willReturn (clientConnectionManager );
153150 clientConnectionManager .closeExpiredConnections ();
154- replay (httpClient , httpResponse , statusLine , httpEntity , clientConnectionManager );
155151
156152 subject .execute ();
157153 }
158154
159155 @ Test (expected = GeocodeException .class )
160156 public void shouldThrowExceptionIfResponseCanNotBeRead () throws Exception {
161157 GoogleGeocodeRequest subject = googleGeocoder .newGeocodeRequestBuilder ("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" ).build ();
162- HttpResponse httpResponse = EasyMock . createMock (HttpResponse .class );
163- StatusLine statusLine = EasyMock . createMock (StatusLine .class );
164- HttpEntity httpEntity = EasyMock . createMock (HttpEntity .class );
165- ClientConnectionManager clientConnectionManager = EasyMock . createMock (ClientConnectionManager .class );
166-
167- expect (httpClient .execute (anyObject (HttpGet .class ))).andReturn (httpResponse );
168- expect (httpResponse .getStatusLine ()).andReturn (statusLine );
169- expect (statusLine .getStatusCode ()).andReturn (HTTP_OK );
170- expect (httpResponse .getEntity ()).andReturn (httpEntity );
171- expect (httpEntity .getContent ()).andThrow ( new IOException ( "test exception" ) );
172- expect (httpClient .getConnectionManager ()).andReturn (clientConnectionManager );
158+ HttpResponse httpResponse = mock (HttpResponse .class );
159+ StatusLine statusLine = mock (StatusLine .class );
160+ HttpEntity httpEntity = mock (HttpEntity .class );
161+ ClientConnectionManager clientConnectionManager = mock (ClientConnectionManager .class );
162+
163+ given (httpClient .execute (any (HttpGet .class ))).willReturn (httpResponse );
164+ given (httpResponse .getStatusLine ()).willReturn (statusLine );
165+ given (statusLine .getStatusCode ()).willReturn (HTTP_OK );
166+ given (httpResponse .getEntity ()).willReturn (httpEntity );
167+ given (httpEntity .getContent ()).willThrow ( IOException . class );
168+ given (httpClient .getConnectionManager ()).willReturn (clientConnectionManager );
173169 clientConnectionManager .closeExpiredConnections ();
174- replay (httpClient , httpResponse , statusLine , httpEntity , clientConnectionManager );
175170
176171 subject .execute ();
177172 }
0 commit comments