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