@@ -88,13 +88,23 @@ public void shutdown() throws IOException {
8888 mockWebServer .shutdown ();
8989 }
9090
91- private MockResponse handleTokenRequest (final RecordedRequest request ) throws IOException {
91+ private MockResponse handleRequest (final RecordedRequest request ) throws IOException {
9292 requestCount .incrementAndGet ();
9393
94- if (!"/oauth/token" .equals (request .getPath ())) {
94+ final String path = request .getPath ();
95+ LOGGER .debug ("Received request: {} {}" , request .getMethod (), path );
96+
97+ if ("/v2/info" .equals (path )) {
98+ return handleInfoRequest ();
99+ } else if ("/oauth/token" .equals (path )) {
100+ return handleTokenRequest (request );
101+ } else {
102+ LOGGER .debug ("Unknown path requested: {}" , path );
95103 return new MockResponse ().setResponseCode (404 );
96104 }
97-
105+ }
106+
107+ private MockResponse handleTokenRequest (final RecordedRequest request ) throws IOException {
98108 final String requestBody = request .getBody ().readUtf8 ();
99109 LOGGER .debug ("Received token request: {}" , requestBody );
100110
@@ -107,6 +117,29 @@ private MockResponse handleTokenRequest(final RecordedRequest request) throws IO
107117 return handlePrimaryTokenRequest ();
108118 }
109119
120+ private MockResponse handleInfoRequest () throws IOException {
121+ LOGGER .debug ("Handling /v2/info request" );
122+
123+ final Map <String , Object > infoResponse = new HashMap <>();
124+ infoResponse .put ("authorization_endpoint" , getBaseUrl ().replaceAll ("/$" , "" ));
125+ infoResponse .put ("token_endpoint" , getBaseUrl ().replaceAll ("/$" , "" ));
126+ infoResponse .put ("app_ssh_endpoint" , "ssh.localhost:2222" );
127+ infoResponse .put ("app_ssh_host_key_fingerprint" , "test-fingerprint" );
128+ infoResponse .put ("api_version" , "2.165.0" );
129+ infoResponse .put ("name" , "test-cf" );
130+ infoResponse .put ("build" , "test-build" );
131+ infoResponse .put ("version" , 0 );
132+ infoResponse .put ("description" , "Unit Test Cloud Foundry" );
133+
134+ final String responseBody = objectMapper .writeValueAsString (infoResponse );
135+ LOGGER .debug ("Generated info response: {}" , responseBody );
136+
137+ return new MockResponse ()
138+ .setResponseCode (200 )
139+ .setHeader ("Content-Type" , "application/json" )
140+ .setBody (responseBody );
141+ }
142+
110143 /* Warning! synchronized is really necessary here to ensure no concurrent threads are trying to run into a refresh token handling! */
111144 private synchronized MockResponse handleRefreshTokenRequest (final String requestBody ) throws IOException {
112145 // Check if we should fail requests
@@ -189,7 +222,7 @@ private class TokenRequestDispatcher extends Dispatcher {
189222 @ Override
190223 public MockResponse dispatch (final RecordedRequest request ) {
191224 try {
192- return handleTokenRequest (request );
225+ return handleRequest (request );
193226 } catch (final Exception e ) {
194227 LOGGER .error ("Error handling request" , e );
195228 return new MockResponse ().setResponseCode (500 );
0 commit comments