13c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller/*
23c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * Copyright (C) 2014 Square, Inc.
33c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller *
43c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * Licensed under the Apache License, Version 2.0 (the "License");
53c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * you may not use this file except in compliance with the License.
63c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * You may obtain a copy of the License at
73c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller *
83c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller *      http://www.apache.org/licenses/LICENSE-2.0
93c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller *
103c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * Unless required by applicable law or agreed to in writing, software
113c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * distributed under the License is distributed on an "AS IS" BASIS,
123c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * See the License for the specific language governing permissions and
143c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller * limitations under the License.
153c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller */
163c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerpackage com.squareup.okhttp.curl;
173c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
183c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport com.squareup.okhttp.Request;
193c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport java.io.IOException;
203c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport okio.OkBuffer;
213c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport org.junit.Test;
223c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
233c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport static com.squareup.okhttp.curl.Main.fromArgs;
243c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport static org.junit.Assert.assertEquals;
253c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerimport static org.junit.Assert.assertNull;
263c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
273c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerpublic class MainTest {
283c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void simple() {
293c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("http://example.com").createRequest();
303c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("GET", request.method());
313c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
323c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertNull(request.body());
333c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
343c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
353c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void put() {
363c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("-X", "PUT", "http://example.com").createRequest();
373c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("PUT", request.method());
383c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
393c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertNull(request.body());
403c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
413c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
423c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void dataPost() {
433c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("-d", "foo", "http://example.com").createRequest();
443c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request.Body body = request.body();
453c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("POST", request.method());
463c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
473c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("application/x-form-urlencoded; charset=utf-8", body.contentType().toString());
483c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("foo", bodyAsString(body));
493c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
503c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
513c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void dataPut() {
523c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("-d", "foo", "-X", "PUT", "http://example.com").createRequest();
533c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request.Body body = request.body();
543c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("PUT", request.method());
553c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
563c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("application/x-form-urlencoded; charset=utf-8", body.contentType().toString());
573c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("foo", bodyAsString(body));
583c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
593c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
603c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void contentTypeHeader() {
613c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("-d", "foo", "-H", "Content-Type: application/json",
623c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        "http://example.com").createRequest();
633c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request.Body body = request.body();
643c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("POST", request.method());
653c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
663c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("application/json; charset=utf-8", body.contentType().toString());
673c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("foo", bodyAsString(body));
683c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
693c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
703c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void referer() {
713c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("-e", "foo", "http://example.com").createRequest();
723c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("GET", request.method());
733c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
743c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("foo", request.header("Referer"));
753c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertNull(request.body());
763c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
773c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
783c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  @Test public void userAgent() {
793c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    Request request = fromArgs("-A", "foo", "http://example.com").createRequest();
803c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("GET", request.method());
813c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("http://example.com", request.urlString());
823c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertEquals("foo", request.header("User-Agent"));
833c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    assertNull(request.body());
843c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
853c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
863c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  private static String bodyAsString(Request.Body body) {
873c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    try {
883c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller      OkBuffer buffer = new OkBuffer();
893c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller      body.writeTo(buffer);
903c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller      return new String(buffer.readByteString(buffer.size()).toByteArray(),
913c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller          body.contentType().charset());
923c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    } catch (IOException e) {
933c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller      throw new RuntimeException(e);
943c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
953c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller  }
963c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller}
97