1a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath/* 2a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * Copyright (C) 2013 Square, Inc. 3a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * 4a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 5a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * you may not use this file except in compliance with the License. 6a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * You may obtain a copy of the License at 7a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * 8a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * 10a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * Unless required by applicable law or agreed to in writing, software 11a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * See the License for the specific language governing permissions and 14a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * limitations under the License. 15a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath */ 16a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathpackage com.squareup.okhttp.internal; 17a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 18a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport com.google.mockwebserver.MockResponse; 19a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport com.google.mockwebserver.MockWebServer; 20a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport com.google.mockwebserver.RecordedRequest; 21a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport com.squareup.okhttp.MediaType; 22a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport com.squareup.okhttp.OkHttpClient; 23a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport com.squareup.okhttp.Request; 24a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport org.junit.After; 25a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport org.junit.Test; 26a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 27a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport static org.junit.Assert.assertEquals; 28a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathimport static org.junit.Assert.assertTrue; 29a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 30a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathpublic final class AsyncApiTest { 31a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath private MockWebServer server = new MockWebServer(); 32a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath private OkHttpClient client = new OkHttpClient(); 33a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath private RecordingReceiver receiver = new RecordingReceiver(); 34a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 35a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath @After public void tearDown() throws Exception { 36a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath server.shutdown(); 37a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath } 38a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 39a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath @Test public void get() throws Exception { 40a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath server.enqueue(new MockResponse() 41a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .setBody("abc") 42a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .addHeader("Content-Type: text/plain")); 43a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath server.play(); 44a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 45a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath Request request = new Request.Builder(server.getUrl("/")) 46a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .header("User-Agent", "AsyncApiTest") 47a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .build(); 48a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath client.enqueue(request, receiver); 49a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 50a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath receiver.await(request) 51a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .assertCode(200) 52a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .assertContainsHeaders("Content-Type: text/plain") 53a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .assertBody("abc"); 54a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 55a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath assertTrue(server.takeRequest().getHeaders().contains("User-Agent: AsyncApiTest")); 56a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath } 57a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 58a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath @Test public void post() throws Exception { 59a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath server.enqueue(new MockResponse().setBody("abc")); 60a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath server.play(); 61a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 62a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath Request request = new Request.Builder(server.getUrl("/")) 63a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .post(Request.Body.create(MediaType.parse("text/plain"), "def")) 64a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .build(); 65a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath client.enqueue(request, receiver); 66a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 67a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath receiver.await(request) 68a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .assertCode(200) 69a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath .assertBody("abc"); 70a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath 71a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath RecordedRequest recordedRequest = server.takeRequest(); 72a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath assertEquals("def", recordedRequest.getUtf8Body()); 73a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath assertEquals("3", recordedRequest.getHeader("Content-Length")); 74a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath } 75a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath} 76