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 package org.apache.hc.client5.http.auth;
28
29 import org.apache.hc.core5.http.HttpHost;
30 import org.junit.jupiter.api.Assertions;
31 import org.junit.jupiter.api.Test;
32
33
34
35
36 class TestAuthScope {
37
38 @Test
39 void testBasics() {
40 final AuthScope authscope = new AuthScope("http", "somehost", 80, "somerealm", "SomeScheme");
41 Assertions.assertEquals("SOMESCHEME", authscope.getSchemeName());
42 Assertions.assertEquals("http", authscope.getProtocol());
43 Assertions.assertEquals("somehost", authscope.getHost());
44 Assertions.assertEquals(80, authscope.getPort());
45 Assertions.assertEquals("somerealm", authscope.getRealm());
46 Assertions.assertEquals("SOMESCHEME 'somerealm' http://somehost:80", authscope.toString());
47 }
48
49 @Test
50 void testByOrigin() {
51 final HttpHost host = new HttpHost("http", "somehost", 8080);
52 final AuthScope authscope = new AuthScope(host);
53 Assertions.assertNull(authscope.getSchemeName());
54 Assertions.assertEquals("somehost", authscope.getHost());
55 Assertions.assertEquals(8080, authscope.getPort());
56 Assertions.assertNull(authscope.getRealm());
57 Assertions.assertEquals("http", authscope.getProtocol());
58 Assertions.assertEquals("<any auth scheme> <any realm> http://somehost:8080", authscope.toString());
59 }
60
61 @Test
62 void testMixedCaseHostname() {
63 final AuthScope authscope = new AuthScope("SomeHost", 80);
64 Assertions.assertNull(authscope.getSchemeName());
65 Assertions.assertEquals("somehost", authscope.getHost());
66 Assertions.assertEquals(80, authscope.getPort());
67 Assertions.assertNull(authscope.getRealm());
68 Assertions.assertEquals("<any auth scheme> <any realm> <any protocol>://somehost:80", authscope.toString());
69 }
70
71 @Test
72 void testByOriginMixedCaseHostname() {
73 final HttpHost host = new HttpHost("http", "SomeHost", 8080);
74 final AuthScope authscope = new AuthScope(host);
75 Assertions.assertEquals("somehost", authscope.getHost());
76 }
77
78 @Test
79 void testBasicsAllOptional() {
80 final AuthScope authscope = new AuthScope(null, null, -1, null, null);
81 Assertions.assertNull(authscope.getSchemeName());
82 Assertions.assertNull(authscope.getHost());
83 Assertions.assertEquals(-1, authscope.getPort());
84 Assertions.assertNull(authscope.getRealm());
85 Assertions.assertEquals("<any auth scheme> <any realm> <any protocol>://<any host>:<any port>", authscope.toString());
86 }
87
88 @Test
89 void testScopeMatching() {
90 final AuthScope authscope1 = new AuthScope("http", "somehost", 80, "somerealm", "somescheme");
91 final AuthScope authscope2 = new AuthScope("http", "someotherhost", 80, "somerealm", "somescheme");
92 Assertions.assertTrue(authscope1.match(authscope2) < 0);
93
94 int m1 = authscope1.match(new AuthScope(null, null, -1, null, "somescheme"));
95 int m2 = authscope1.match(new AuthScope(null, null, -1, "somerealm", null));
96 Assertions.assertTrue(m2 > m1);
97
98 m1 = authscope1.match(new AuthScope(null, null, -1, null, "somescheme"));
99 m2 = authscope1.match(new AuthScope(null, null, -1, "somerealm", null));
100 Assertions.assertTrue(m2 > m1);
101
102 m1 = authscope1.match(new AuthScope(null, null, -1, "somerealm", "somescheme"));
103 m2 = authscope1.match(new AuthScope(null, null, 80, null, null));
104 Assertions.assertTrue(m2 > m1);
105
106 m1 = authscope1.match(new AuthScope(null, null, 80, "somerealm", "somescheme"));
107 m2 = authscope1.match(new AuthScope(null, "somehost", -1, null, null));
108 Assertions.assertTrue(m2 > m1);
109
110 m1 = authscope1.match(new AuthScope(null, null, 80, "somerealm", "somescheme"));
111 m2 = authscope1.match(new AuthScope(null, "somehost", -1, null, null));
112 Assertions.assertTrue(m2 > m1);
113
114 m1 = authscope1.match(new AuthScope(null, null, -1, null, null));
115 m2 = authscope1.match(new AuthScope(null, null, -1, null, "somescheme"));
116 Assertions.assertTrue(m2 > m1);
117 }
118
119 @Test
120 void testEquals() {
121 final AuthScope authscope1 = new AuthScope("http", "somehost", 80, "somerealm", "somescheme");
122 final AuthScope authscope2 = new AuthScope("http", "someotherhost", 80, "somerealm", "somescheme");
123 final AuthScope authscope3 = new AuthScope("http", "somehost", 80, "somerealm", "somescheme");
124 final AuthScope authscope4 = new AuthScope("http", "somehost", 8080, "somerealm", "somescheme");
125 final AuthScope authscope5 = new AuthScope("http", "somehost", 80, "someotherrealm", "somescheme");
126 final AuthScope authscope6 = new AuthScope("http", "somehost", 80, "somerealm", "someotherscheme");
127 final AuthScope authscope7 = new AuthScope("https", "somehost", 80, "somerealm", "somescheme");
128 final AuthScope authscope8 = new AuthScope("https", "somehost", 80, "somerealm", "SomeScheme");
129 Assertions.assertEquals(authscope1, authscope1);
130 Assertions.assertNotEquals(authscope1, authscope2);
131 Assertions.assertEquals(authscope1, authscope3);
132 Assertions.assertNotEquals(authscope1, authscope4);
133 Assertions.assertNotEquals(authscope1, authscope5);
134 Assertions.assertNotEquals(authscope1, authscope6);
135 Assertions.assertNotEquals(authscope1, authscope7);
136 Assertions.assertEquals(authscope7, authscope8);
137 }
138
139 @Test
140 void testHash() {
141 final AuthScope authscope1 = new AuthScope("http", "somehost", 80, "somerealm", "somescheme");
142 final AuthScope authscope2 = new AuthScope("http", "someotherhost", 80, "somerealm", "somescheme");
143 final AuthScope authscope3 = new AuthScope("http", "somehost", 80, "somerealm", "somescheme");
144 final AuthScope authscope4 = new AuthScope("http", "somehost", 8080, "somerealm", "somescheme");
145 final AuthScope authscope5 = new AuthScope("http", "somehost", 80, "someotherrealm", "somescheme");
146 final AuthScope authscope6 = new AuthScope("http", "somehost", 80, "somerealm", "someotherscheme");
147 final AuthScope authscope7 = new AuthScope("https", "somehost", 80, "somerealm", "somescheme");
148 final AuthScope authscope8 = new AuthScope("https", "somehost", 80, "somerealm", "SomeScheme");
149 Assertions.assertEquals(authscope1.hashCode(), authscope1.hashCode());
150 Assertions.assertNotEquals(authscope1.hashCode(), authscope2.hashCode());
151 Assertions.assertEquals(authscope1.hashCode(), authscope3.hashCode());
152 Assertions.assertNotEquals(authscope1.hashCode(), authscope4.hashCode());
153 Assertions.assertNotEquals(authscope1.hashCode(), authscope5.hashCode());
154 Assertions.assertNotEquals(authscope1.hashCode(), authscope6.hashCode());
155 Assertions.assertNotEquals(authscope1.hashCode(), authscope7.hashCode());
156 Assertions.assertEquals(authscope7.hashCode(), authscope8.hashCode());
157 }
158
159 }