1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
// Copyright 2017 Yahoo Holdings. 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());
}
}
|