aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java
diff options
context:
space:
mode:
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.java121
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());
+ }
+}