diff options
Diffstat (limited to 'clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java')
-rw-r--r-- | clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java new file mode 100644 index 00000000000..8bd9cfe5dbe --- /dev/null +++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java @@ -0,0 +1,121 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.clustercontroller.utils.communication.http; + +import junit.framework.TestCase; + +public class HttpRequestTest extends TestCase { + + private HttpRequest createRequest() { + return new HttpRequest() + .setHost("local") + .setPort(20) + .addHttpHeader("x-foo", "bar") + .setPath("/bah") + .setHttpOperation(HttpRequest.HttpOp.PUT) + .addUrlOption("urk", "arg") + .setTimeout(25); + } + + public void testEquality() { + assertEquals(createRequest(), createRequest()); + assertNotSame(createRequest(), createRequest().setHost("localhost")); + assertNotSame(createRequest(), createRequest().setPort(40)); + assertNotSame(createRequest(), createRequest().setPath("/hmm")); + assertNotSame(createRequest(), createRequest().addHttpHeader("dsf", "fs")); + assertNotSame(createRequest(), createRequest().setHttpOperation(HttpRequest.HttpOp.DELETE)); + } + + public void testVerifyComplete() { + // To be a complete request, an HTTP request must include: + // - A path + // - The HTTP operation type + try{ + new HttpRequest().setPath("/foo").verifyComplete(); + assertTrue(false); + } catch (IllegalStateException e) { + } + try{ + new HttpRequest().setHttpOperation(HttpRequest.HttpOp.GET).verifyComplete(); + assertTrue(false); + } catch (IllegalStateException e) { + } + new HttpRequest().setHttpOperation(HttpRequest.HttpOp.GET).setPath("/bar").verifyComplete(); + } + + public void testMerge() { + { + HttpRequest base = new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.POST) + .addUrlOption("hmm", "arg") + .addHttpHeader("x-foo", "bar"); + HttpRequest req = new HttpRequest() + .addUrlOption("hmm", "arg") + .addHttpHeader("x-foo", "bar"); + HttpRequest merged = base.merge(req); + + HttpRequest expected = new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.POST) + .addUrlOption("hmm", "arg") + .addHttpHeader("x-foo", "bar"); + assertEquals(expected, merged); + } + { + HttpRequest base = new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.POST) + .addHttpHeader("x-foo", "bar") + .addUrlOption("hmm", "arg"); + HttpRequest req = new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.PUT) + .setPath("/gohere") + .addHttpHeader("Content-Type", "whatevah") + .addUrlOption("tit", "tat") + .setPostContent("foo"); + HttpRequest merged = base.merge(req); + + HttpRequest expected = new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.PUT) + .setPath("/gohere") + .addHttpHeader("x-foo", "bar") + .addHttpHeader("Content-Type", "whatevah") + .addUrlOption("hmm", "arg") + .addUrlOption("tit", "tat") + .setPostContent("foo"); + assertEquals(expected, merged); + } + } + + public void testNonExistingHeader() { + assertEquals("foo", new HttpRequest().getHeader("asd", "foo")); + assertEquals("foo", new HttpRequest().addHttpHeader("bar", "foo").getHeader("asd", "foo")); + } + + public void testOption() { + assertEquals("bar", new HttpRequest().addUrlOption("foo", "bar").getOption("foo", "foo")); + assertEquals("foo", new HttpRequest().getOption("asd", "foo")); + } + + public void testToString() { + assertEquals("GET? http://localhost:8080/", + new HttpRequest() + .setHost("localhost") + .setPort(8080) + .toString(true)); + assertEquals("POST http://localhost/", + new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.POST) + .setHost("localhost") + .toString(true)); + assertEquals("GET http://localhost/?foo=bar", + new HttpRequest() + .setHttpOperation(HttpRequest.HttpOp.GET) + .addUrlOption("foo", "bar") + .setHost("localhost") + .toString(true)); + } + + public void testNothingButGetCoverage() { + assertEquals(false, new HttpRequest().equals(new Object())); + new HttpRequest().getHeaders(); + new HttpRequest().setUrlOptions(new HttpRequest().getUrlOptions()); + } +} |