private MockResponse createContentResponse(String contentType, byte[] content) { MockResponse response = new MockResponse(); response.setHeader("content-type", contentType); Buffer body = new Buffer(); body.write(content); response.setBody(body); return response; }
/** Creates a new mock response with an empty body. */ public MockResponse() { setHeader("Content-Length", 0); }
/** * Attempts to perform a web socket upgrade on the connection. This will overwrite any previously * set status or body. */ public MockResponse withWebSocketUpgrade(WebSocketListener listener) { setStatus("HTTP/1.1 101 Switching Protocols"); setHeader("Connection", "Upgrade"); setHeader("Upgrade", "websocket"); body = null; webSocketListener = listener; return this; }
public MockResponse setBody(Buffer body) { setHeader("Content-Length", body.size()); this.body = body.clone(); // Defensive copy. return this; }
public void testGetSystemInfo() throws Exception { MockWebServer server = mockWebServer(); server.enqueue( new MockResponse().setHeader("X-Hudson", "1.395").setHeader("X-Jenkins", JenkinsApiMetadata.BUILD_VERSION) .setHeader("X-Jenkins-Session", "cc323b8d").setHeader("X-Hudson-CLI-Port", "50000") .setHeader("X-Jenkins-CLI-Port", "50000").setHeader("X-Jenkins-CLI2-Port", "50000") .setHeader("X-Instance-Identity", "fdsa").setHeader("X-SSH-Endpoint", "127.0.1.1:46126") .setHeader("Server", "Jetty(winstone-2.9)").setResponseCode(200)); JenkinsApi jenkinsApi = api(server.getUrl("/")); SystemApi api = jenkinsApi.systemApi(); try { final SystemInfo version = api.systemInfo(); assertNotNull(version); assertTrue(version.jenkinsVersion().equalsIgnoreCase(JenkinsApiMetadata.BUILD_VERSION)); assertSent(server, "HEAD", "/"); } finally { jenkinsApi.close(); server.shutdown(); } }
String key = request.getHeader("Sec-WebSocket-Key"); String acceptKey = Util.shaBase64(key + WebSocketProtocol.ACCEPT_MAGIC); response.setHeader("Sec-WebSocket-Accept", acceptKey);
public void testBuildJobWithParams() throws Exception { MockWebServer server = mockWebServer(); server.enqueue( new MockResponse().setHeader("Location", "http://127.0.1.1:8080/queue/item/1/").setResponseCode(201)); JenkinsApi jenkinsApi = api(server.getUrl("/")); JobsApi api = jenkinsApi.jobsApi(); try { Map<String, List<String>> params = new HashMap<>(); params.put("SomeKey", Lists.newArrayList("SomeVeryNewValue")); IntegerResponse output = api.buildWithParameters(null, "DevTest", params); assertNotNull(output); assertTrue(output.value() == 1); assertTrue(output.errors().size() == 0); assertSentAccept(server, "POST", "/job/DevTest/buildWithParameters", "application/unknown"); } finally { jenkinsApi.close(); server.shutdown(); } }
@Test public void testPatchRedirect() throws Exception { MockWebServer redirectTarget = mockWebServer(new MockResponse().setBody("fooPATCHREDIRECT")); redirectTarget.useHttps(sslContext.getSocketFactory(), false); MockWebServer server = mockWebServer(new MockResponse().setResponseCode(302).setHeader("Location", redirectTarget.getUrl("/").toString())); PatchApi api = api(PatchApi.class, server.getUrl("/").toString()); try { String result = api.patch("", "foo"); assertEquals(result, "fooPATCHREDIRECT"); assertEquals(server.getRequestCount(), 1); assertEquals(redirectTarget.getRequestCount(), 1); // Verify that the body was populated after the redirect RecordedRequest request = server.takeRequest(); assertEquals(request.getMethod(), "PATCH"); assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo"); request = redirectTarget.takeRequest(); assertEquals(request.getMethod(), "PATCH"); assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo"); } finally { closeQuietly(api); redirectTarget.shutdown(); server.shutdown(); } }
public void testBuildJobWithEmptyParamsMap() throws Exception { MockWebServer server = mockWebServer(); server.enqueue( new MockResponse().setHeader("Location", "http://127.0.1.1:8080/queue/item/1/").setResponseCode(201)); JenkinsApi jenkinsApi = api(server.getUrl("/")); JobsApi api = jenkinsApi.jobsApi(); try { IntegerResponse output = api.buildWithParameters(null, "DevTest", new HashMap<>()); assertNotNull(output); assertTrue(output.value() == 1); assertTrue(output.errors().size() == 0); assertSentAccept(server, "POST", "/job/DevTest/buildWithParameters", "application/unknown"); } finally { jenkinsApi.close(); server.shutdown(); } }
@Test public void testGetStringRedirect() throws Exception { MockWebServer redirectTarget = mockWebServer(new MockResponse().setBody(XML2)); redirectTarget.useHttps(sslContext.getSocketFactory(), false); MockWebServer server = mockWebServer(new MockResponse().setResponseCode(302).setHeader("Location", redirectTarget.getUrl("/").toString())); IntegrationTestClient client = client(server.getUrl("/").toString()); try { String result = client.download("redirect"); assertEquals(result, XML2); assertEquals(server.getRequestCount(), 1); assertEquals(redirectTarget.getRequestCount(), 1); } finally { closeQuietly(client); redirectTarget.shutdown(); server.shutdown(); } }
@Test public void testPostRedirect() throws Exception { MockWebServer redirectTarget = mockWebServer(new MockResponse().setBody("fooPOSTREDIRECT")); redirectTarget.useHttps(sslContext.getSocketFactory(), false); MockWebServer server = mockWebServer(new MockResponse().setResponseCode(302).setHeader("Location", redirectTarget.getUrl("/").toString())); IntegrationTestClient client = client(server.getUrl("/").toString()); try { String result = client.post("redirect", "foo"); assertEquals(result, "fooPOSTREDIRECT"); assertEquals(server.getRequestCount(), 1); assertEquals(redirectTarget.getRequestCount(), 1); // Verify that the body was populated after the redirect RecordedRequest request = server.takeRequest(); assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo"); request = redirectTarget.takeRequest(); assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo"); } finally { closeQuietly(client); redirectTarget.shutdown(); server.shutdown(); } }
@Test public void testPutRedirect() throws Exception { MockWebServer redirectTarget = mockWebServer(new MockResponse().setBody("fooPUTREDIRECT")); redirectTarget.useHttps(sslContext.getSocketFactory(), false); MockWebServer server = mockWebServer(new MockResponse().setResponseCode(302).setHeader("Location", redirectTarget.getUrl("/").toString())); IntegrationTestClient client = client(server.getUrl("/").toString()); try { String result = client.upload("redirect", "foo"); assertEquals(result, "fooPUTREDIRECT"); assertEquals(server.getRequestCount(), 1); assertEquals(redirectTarget.getRequestCount(), 1); // Verify that the body was populated after the redirect RecordedRequest request = server.takeRequest(); assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo"); request = redirectTarget.takeRequest(); assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo"); } finally { closeQuietly(client); redirectTarget.shutdown(); server.shutdown(); } }
@Test public void testBothProtocolsSucceedIfSSLAndHTTPConfigured() throws Exception { MockWebServer redirectTarget = mockWebServer(new MockResponse()); MockWebServer server = mockWebServer(new MockResponse().setResponseCode(302).setHeader("Location", redirectTarget.getUrl("/").toString())); server.useHttps(sslContext.getSocketFactory(), false); Module httpConfigModule = new ConnectionSpecModule(ConnectionSpec.CLEARTEXT, ConnectionSpec.MODERN_TLS); PatchApi api = api(PatchApi.class, server.getUrl("/").toString(), httpConfigModule); try { api.patchNothing(""); assertEquals(server.getRequestCount(), 1); assertEquals(redirectTarget.getRequestCount(), 1); } finally { closeQuietly(api); server.shutdown(); redirectTarget.shutdown(); } }
public void testBuildJob() throws Exception { MockWebServer server = mockWebServer(); server.enqueue( new MockResponse().setHeader("Location", "http://127.0.1.1:8080/queue/item/1/").setResponseCode(201)); JenkinsApi jenkinsApi = api(server.getUrl("/")); JobsApi api = jenkinsApi.jobsApi(); try { IntegerResponse output = api.build(null,"DevTest"); assertNotNull(output); assertTrue(output.value() == 1); assertTrue(output.errors().size() == 0); assertSentAccept(server, "POST", "/job/DevTest/build", "application/unknown"); } finally { jenkinsApi.close(); server.shutdown(); } }
public void testBuildJobWithNullParamsMap() throws Exception { MockWebServer server = mockWebServer(); server.enqueue( new MockResponse().setHeader("Location", "http://127.0.1.1:8080/queue/item/1/").setResponseCode(201)); JenkinsApi jenkinsApi = api(server.getUrl("/")); JobsApi api = jenkinsApi.jobsApi(); try { IntegerResponse output = api.buildWithParameters(null, "DevTest", null); assertNotNull(output); assertTrue(output.value() == 1); assertTrue(output.errors().size() == 0); assertSentAccept(server, "POST", "/job/DevTest/buildWithParameters", "application/unknown"); } finally { jenkinsApi.close(); server.shutdown(); } }
@Test public void test2CookiesReset() { server.enqueue(new MockResponse().setResponseCode(200).setHeader("Set-Cookie", TestResponsesUT.UUID_COOKIE_RESET).setBody(TestResponsesUT.banner())); requestManager.execute(); Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); String wvcookie = WebviewUtil.getCookie(); System.out.println(wvcookie); assertEquals(getUUId2(wvcookie), getUUId2(TestResponsesUT.UUID_COOKIE_RESET)); }
public void testCreateJobAlreadyExists() throws Exception { MockWebServer server = mockWebServer(); String configXML = payloadFromResource("/freestyle-project.xml"); server.enqueue(new MockResponse().setHeader("X-Error", "A job already exists with the name ?DevTest?") .setResponseCode(400)); JenkinsApi jenkinsApi = api(server.getUrl("/")); JobsApi api = jenkinsApi.jobsApi(); try { RequestStatus success = api.create(null, "DevTest", configXML); assertNotNull(success); assertFalse(success.value()); assertFalse(success.errors().isEmpty()); assertSentWithXMLFormDataAccept(server, "POST", "/createItem?name=DevTest", configXML, MediaType.WILDCARD); } finally { jenkinsApi.close(); server.shutdown(); } }
public void testGetProgressiveText() throws Exception { MockWebServer server = mockWebServer(); String body = payloadFromResource("/progressive-text.txt"); server.enqueue(new MockResponse().setHeader("X-Text-Size", "123").setBody(body).setResponseCode(200)); JenkinsApi jenkinsApi = api(server.getUrl("/")); JobsApi api = jenkinsApi.jobsApi(); try { ProgressiveText output = api.progressiveText(null,"DevTest", 0); assertNotNull(output); assertTrue(output.size() == 123); assertFalse(output.hasMoreData()); assertSentAcceptText(server, "GET", "/job/DevTest/lastBuild/logText/progressiveText?start=0"); } finally { jenkinsApi.close(); server.shutdown(); } }
@Test public void test1CookiesSync() { server.enqueue(new MockResponse().setResponseCode(200).setHeader("Set-Cookie", TestResponsesUT.UUID_COOKIE_1).setBody(TestResponsesUT.banner())); requestManager.execute(); Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); String wvcookie = WebviewUtil.getCookie(); //Asserts the Cookie stored in the device is the same as that of the one we sent back in the response. assertEquals(getUUId2(wvcookie), getUUId2(TestResponsesUT.UUID_COOKIE_1)); }