author | chegar |
Sat, 03 Mar 2018 20:21:35 +0000 | |
branch | http-client-branch |
changeset 56235 | 6218673d7fa0 |
parent 56167 | 96fa4f49a9ff |
child 56265 | ec34ae013fbe |
permissions | -rw-r--r-- |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
1 |
/* |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
2 |
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
4 |
* |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
8 |
* |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
13 |
* accompanied this code). |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
14 |
* |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
18 |
* |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
21 |
* questions. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
22 |
*/ |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
23 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
24 |
package jdk.internal.net.http; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
25 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
26 |
import jdk.internal.net.http.common.HttpHeadersImpl; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
27 |
import org.testng.annotations.DataProvider; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
28 |
import org.testng.annotations.Test; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
29 |
import org.testng.annotations.AfterClass; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
30 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
31 |
import java.lang.ref.Reference; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
32 |
import java.net.Authenticator; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
33 |
import java.net.InetSocketAddress; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
34 |
import java.net.PasswordAuthentication; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
35 |
import java.net.ProxySelector; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
36 |
import java.net.URI; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
37 |
import java.net.URL; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
38 |
import java.net.http.HttpClient; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
39 |
import java.net.http.HttpHeaders; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
40 |
import java.net.http.HttpResponse; |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
41 |
import java.net.http.HttpResponse.BodyHandlers; |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
42 |
import java.security.AccessController; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
43 |
import java.util.Arrays; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
44 |
import java.util.Base64; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
45 |
import java.util.concurrent.ConcurrentHashMap; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
46 |
import java.util.concurrent.ConcurrentMap; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
47 |
import java.util.concurrent.atomic.AtomicLong; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
48 |
import java.net.http.HttpClient.Version; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
49 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
50 |
import static java.lang.String.format; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
51 |
import static java.lang.System.out; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
52 |
import static java.nio.charset.StandardCharsets.US_ASCII; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
53 |
import static java.util.stream.Collectors.joining; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
54 |
import static java.net.http.HttpClient.Version.HTTP_1_1; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
55 |
import static java.net.http.HttpClient.Version.HTTP_2; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
56 |
import static java.net.http.HttpClient.Builder.NO_PROXY; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
57 |
import static org.testng.Assert.*; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
58 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
59 |
public class AuthenticationFilterTest { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
60 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
61 |
@DataProvider(name = "uris") |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
62 |
public Object[][] responses() { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
63 |
return new Object[][] { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
64 |
{ "http://foo.com", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
65 |
{ "http://foo.com", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
66 |
{ "http://foo.com#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
67 |
{ "http://foo.com#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
68 |
{ "http://foo.com/x/y/z", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
69 |
{ "http://foo.com/x/y/z", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
70 |
{ "http://foo.com/x/y/z#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
71 |
{ "http://foo.com/x/y/z#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
72 |
{ "http://foo.com:80", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
73 |
{ "http://foo.com:80", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
74 |
{ "http://foo.com:80#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
75 |
{ "http://foo.com:80#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
76 |
{ "http://foo.com", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
77 |
{ "http://foo.com", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
78 |
{ "http://foo.com#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
79 |
{ "http://foo.com#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
80 |
{ "http://foo.com:8080", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
81 |
{ "http://foo.com:8080", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
82 |
{ "http://foo.com:8080#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
83 |
{ "http://foo.com:8080#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
84 |
{ "https://foo.com", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
85 |
{ "https://foo.com", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
86 |
{ "https://foo.com#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
87 |
{ "https://foo.com#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
88 |
{ "https://foo.com:443", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
89 |
{ "https://foo.com:443", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
90 |
{ "https://foo.com:443#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
91 |
{ "https://foo.com:443#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
92 |
{ "https://foo.com", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
93 |
{ "https://foo.com", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
94 |
{ "https://foo.com#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
95 |
{ "https://foo.com#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
96 |
{ "https://foo.com:8080", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
97 |
{ "https://foo.com:8080", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
98 |
{ "https://foo.com:8080#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
99 |
{ "https://foo.com:8080#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
100 |
{ "http://foo.com:80/x/y/z", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
101 |
{ "http://foo.com:80/x/y/z", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
102 |
{ "http://foo.com:80/x/y/z#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
103 |
{ "http://foo.com:80/x/y/z#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
104 |
{ "http://foo.com/x/y/z", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
105 |
{ "http://foo.com/x/y/z", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
106 |
{ "http://foo.com/x/y/z#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
107 |
{ "http://foo.com/x/y/z#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
108 |
{ "http://foo.com:8080/x/y/z", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
109 |
{ "http://foo.com:8080/x/y/z", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
110 |
{ "http://foo.com:8080/x/y/z#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
111 |
{ "http://foo.com:8080/x/y/z#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
112 |
{ "https://foo.com/x/y/z", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
113 |
{ "https://foo.com/x/y/z", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
114 |
{ "https://foo.com/x/y/z#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
115 |
{ "https://foo.com/x/y/z#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
116 |
{ "https://foo.com:443/x/y/z", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
117 |
{ "https://foo.com:443/x/y/z", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
118 |
{ "https://foo.com:443/x/y/z#blah", HTTP_1_1, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
119 |
{ "https://foo.com:443/x/y/z#blah", HTTP_2, null }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
120 |
{ "https://foo.com/x/y/z", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
121 |
{ "https://foo.com/x/y/z", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
122 |
{ "https://foo.com/x/y/z#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
123 |
{ "https://foo.com/x/y/z#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
124 |
{ "https://foo.com:8080/x/y/z", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
125 |
{ "https://foo.com:8080/x/y/z", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
126 |
{ "https://foo.com:8080/x/y/z#blah", HTTP_1_1, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
127 |
{ "https://foo.com:8080/x/y/z#blah", HTTP_2, "127.0.0.1:8080" }, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
128 |
}; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
129 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
130 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
131 |
static final ConcurrentMap<String,Throwable> FAILED = new ConcurrentHashMap<>(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
132 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
133 |
static boolean isNullOrEmpty(String s) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
134 |
return s == null || s.isEmpty(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
135 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
136 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
137 |
@Test(dataProvider = "uris") |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
138 |
public void testAuthentication(String uri, Version v, String proxy) throws Exception { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
139 |
String test = format("testAuthentication: {\"%s\", %s, \"%s\"}", uri, v, proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
140 |
try { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
141 |
doTestAuthentication(uri, v, proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
142 |
} catch(Exception | Error x) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
143 |
FAILED.putIfAbsent(test, x); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
144 |
throw x; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
145 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
146 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
147 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
148 |
@AfterClass |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
149 |
public void printDiagnostic() { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
150 |
if (FAILED.isEmpty()) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
151 |
out.println("All tests passed"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
152 |
return; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
153 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
154 |
// make sure failures don't disappear in the overflow |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
155 |
out.println("Failed tests: "); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
156 |
FAILED.keySet().forEach(s -> |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
157 |
out.println("\t " + s.substring(s.indexOf(':')+1) + ",")); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
158 |
out.println(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
159 |
FAILED.entrySet().forEach(e -> { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
160 |
System.err.println("\n" + e.getKey() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
161 |
+ " FAILED: " + e.getValue()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
162 |
e.getValue().printStackTrace(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
163 |
}); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
164 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
165 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
166 |
private void doTestAuthentication(String uri, Version v, String proxy) throws Exception { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
167 |
int colon = proxy == null ? -1 : proxy.lastIndexOf(":"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
168 |
ProxySelector ps = proxy == null ? NO_PROXY |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
169 |
: ProxySelector.of(InetSocketAddress.createUnresolved( |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
170 |
proxy.substring(0, colon), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
171 |
Integer.parseInt(proxy.substring(colon+1)))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
172 |
int unauthorized = proxy == null ? 401 : 407; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
173 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
174 |
TestAuthenticator authenticator = new TestAuthenticator(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
175 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
176 |
// Creates a HttpClientImpl |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
177 |
HttpClientBuilderImpl clientBuilder = new HttpClientBuilderImpl() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
178 |
.authenticator(authenticator).proxy(ps); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
179 |
HttpClientFacade facade = HttpClientImpl.create(clientBuilder); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
180 |
HttpClientImpl client = facade.impl; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
181 |
AuthenticationFilter filter = new AuthenticationFilter(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
182 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
183 |
assertEquals(authenticator.COUNTER.get(), 0); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
184 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
185 |
// Creates the first HttpRequestImpl, and call filter.request() with |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
186 |
// it. The expectation is that the filter will not add any credentials, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
187 |
// because the cache is empty and we don't know which auth schemes the |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
188 |
// server supports yet. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
189 |
URI reqURI = URI.create(uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
190 |
HttpRequestBuilderImpl reqBuilder = |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
191 |
new HttpRequestBuilderImpl(reqURI); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
192 |
HttpRequestImpl origReq = new HttpRequestImpl(reqBuilder); |
56235 | 193 |
HttpRequestImpl req = new HttpRequestImpl(origReq, ps); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
194 |
MultiExchange<?> multi = new MultiExchange<Void>(origReq, req, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
195 |
BodyHandlers.replacing(null), |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
196 |
null, AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
197 |
Exchange<?> exchange = new Exchange<>(req, multi); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
198 |
out.println("\nSimulating unauthenticated request to " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
199 |
filter.request(req, multi); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
200 |
assertFalse(req.getSystemHeaders().firstValue(authorization(true)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
201 |
assertFalse(req.getSystemHeaders().firstValue(authorization(false)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
202 |
assertEquals(authenticator.COUNTER.get(), 0); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
203 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
204 |
// Creates the Response to the first request, and call filter.response |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
205 |
// with it. That response has a 401 or 407 status code. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
206 |
// The expectation is that the filter will return a new request containing |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
207 |
// credentials, and will also cache the credentials in the multi exchange. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
208 |
// The credentials shouldn't be put in the cache until the 200 response |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
209 |
// for that request arrives. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
210 |
HttpHeadersImpl headers = new HttpHeadersImpl(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
211 |
headers.addHeader(authenticate(proxy!=null), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
212 |
"Basic realm=\"earth\""); |
56126
86e628130926
http-client-branch: fixed TLS hostname checking issue, SSL session reuse, and changed HttpResponse to return SSLSession
michaelm
parents:
56103
diff
changeset
|
213 |
Response response = new Response(req, exchange, headers, null, unauthorized, v); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
214 |
out.println("Simulating " + unauthorized |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
215 |
+ " response from " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
216 |
HttpRequestImpl next = filter.response(response); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
217 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
218 |
out.println("Checking filter's response to " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
219 |
+ unauthorized + " from " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
220 |
assertTrue(next != null, "next should not be null"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
221 |
String[] up = check(reqURI, next.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
222 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
223 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
224 |
// Now simulate a new successful exchange to get the credentials in the cache |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
225 |
// We first call filter.request with the request that was previously |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
226 |
// returned by the filter, then create a new Response with a 200 status |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
227 |
// code, and feed that to the filter with filter.response. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
228 |
// At this point, the credentials will be added to the cache. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
229 |
out.println("Simulating next request with credentials to " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
230 |
exchange = new Exchange<>(next, multi); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
231 |
filter.request(next, multi); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
232 |
out.println("Checking credentials in request header after filter for " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
233 |
check(reqURI, next.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
234 |
check(next.uri(), next.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
235 |
out.println("Simulating successful response 200 from " + uri); |
56126
86e628130926
http-client-branch: fixed TLS hostname checking issue, SSL session reuse, and changed HttpResponse to return SSLSession
michaelm
parents:
56103
diff
changeset
|
236 |
response = new Response(next, exchange, new HttpHeadersImpl(), null, 200, v); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
237 |
next = filter.response(response); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
238 |
assertTrue(next == null, "next should be null"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
239 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
240 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
241 |
// Now verify that the cache is used for the next request to the same server. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
242 |
// We're going to create a request to the same server by appending "/bar" to |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
243 |
// the original request path. Then we're going to feed that to filter.request |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
244 |
// The expectation is that filter.request will add the credentials to the |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
245 |
// request system headers, because it should find them in the cache. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
246 |
int fragmentIndex = uri.indexOf('#'); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
247 |
String subpath = "/bar"; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
248 |
String prefix = uri; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
249 |
String fragment = ""; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
250 |
if (fragmentIndex > -1) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
251 |
prefix = uri.substring(0, fragmentIndex); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
252 |
fragment = uri.substring(fragmentIndex); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
253 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
254 |
URI reqURI2 = URI.create(prefix + subpath + fragment); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
255 |
out.println("Simulating new request to " + reqURI2); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
256 |
HttpRequestBuilderImpl reqBuilder2 = |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
257 |
new HttpRequestBuilderImpl(reqURI2); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
258 |
HttpRequestImpl origReq2 = new HttpRequestImpl(reqBuilder2); |
56235 | 259 |
HttpRequestImpl req2 = new HttpRequestImpl(origReq2, ps); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
260 |
MultiExchange<?> multi2 = new MultiExchange<Void>(origReq2, req2, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
261 |
HttpResponse.BodyHandlers.replacing(null), |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
262 |
null, AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
263 |
filter.request(req2, multi2); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
264 |
out.println("Check that filter has added credentials from cache for " + reqURI2 |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
265 |
+ " with proxy " + req2.proxy()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
266 |
String[] up2 = check(reqURI, req2.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
267 |
assertTrue(Arrays.deepEquals(up, up2), format("%s:%s != %s:%s", up2[0], up2[1], up[0], up[1])); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
268 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
269 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
270 |
// Now verify that the cache is not used if we send a request to a different server. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
271 |
// We're going to append ".bar" to the original request host name, and feed that |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
272 |
// to filter.request. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
273 |
// There are actually two cases: if we were using a proxy, then the new request |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
274 |
// should contain proxy credentials. If we were not using a proxy, then it should |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
275 |
// not contain any credentials at all. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
276 |
URI reqURI3; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
277 |
if (isNullOrEmpty(reqURI.getPath()) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
278 |
&& isNullOrEmpty(reqURI.getFragment()) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
279 |
&& reqURI.getPort() == -1) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
280 |
reqURI3 = URI.create(uri + ".bar"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
281 |
} else { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
282 |
reqURI3 = new URI(reqURI.getScheme(), reqURI.getUserInfo(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
283 |
reqURI.getHost() + ".bar", reqURI.getPort(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
284 |
reqURI.getPath(), reqURI.getQuery(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
285 |
reqURI.getFragment()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
286 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
287 |
out.println("Simulating new request to " + reqURI3); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
288 |
HttpRequestBuilderImpl reqBuilder3 = |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
289 |
new HttpRequestBuilderImpl(reqURI3); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
290 |
HttpRequestImpl origReq3 = new HttpRequestImpl(reqBuilder3); |
56235 | 291 |
HttpRequestImpl req3 = new HttpRequestImpl(origReq3, ps); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
292 |
MultiExchange<?> multi3 = new MultiExchange<Void>(origReq3, req3, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
293 |
HttpResponse.BodyHandlers.replacing(null), |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
294 |
null, AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
295 |
filter.request(req3, multi3); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
296 |
if (proxy == null) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
297 |
out.println("Check that filter has not added proxy credentials from cache for " + reqURI3); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
298 |
assert !req3.getSystemHeaders().firstValue(authorization(true)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
299 |
: format("Unexpected proxy credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
300 |
java.util.stream.Stream.of(getAuthorization(req3.getSystemHeaders(), true)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
301 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
302 |
assertFalse(req3.getSystemHeaders().firstValue(authorization(true)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
303 |
} else { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
304 |
out.println("Check that filter has added proxy credentials from cache for " + reqURI3); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
305 |
String[] up3 = check(reqURI, req3.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
306 |
assertTrue(Arrays.deepEquals(up, up3), format("%s:%s != %s:%s", up3[0], up3[1], up[0], up[1])); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
307 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
308 |
out.println("Check that filter has not added server credentials from cache for " + reqURI3); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
309 |
assert !req3.getSystemHeaders().firstValue(authorization(false)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
310 |
: format("Unexpected server credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
311 |
java.util.stream.Stream.of(getAuthorization(req3.getSystemHeaders(), false)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
312 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
313 |
assertFalse(req3.getSystemHeaders().firstValue(authorization(false)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
314 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
315 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
316 |
// Now we will verify that credentials for proxies are not used for servers and |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
317 |
// conversely. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
318 |
// If we were using a proxy, we're now going to send a request to the proxy host, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
319 |
// without using a proxy, and verify that filter.request neither add proxy credential |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
320 |
// or server credential to that host. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
321 |
// I we were not using a proxy, we're going to send a request to the original |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
322 |
// server, using a proxy whose address matches the original server. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
323 |
// We expect that the cache will add server credentials, but not proxy credentials. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
324 |
int port = reqURI.getPort(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
325 |
port = port == -1 ? defaultPort(reqURI.getScheme()) : port; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
326 |
ProxySelector fakeProxy = proxy == null |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
327 |
? ProxySelector.of(InetSocketAddress.createUnresolved( |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
328 |
reqURI.getHost(), port)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
329 |
: NO_PROXY; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
330 |
URI reqURI4 = proxy == null ? reqURI : new URI("http", null, req.proxy().getHostName(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
331 |
req.proxy().getPort(), "/", null, null); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
332 |
HttpRequestBuilderImpl reqBuilder4 = new HttpRequestBuilderImpl(reqURI4); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
333 |
HttpRequestImpl origReq4 = new HttpRequestImpl(reqBuilder4); |
56235 | 334 |
HttpRequestImpl req4 = new HttpRequestImpl(origReq4, fakeProxy); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
335 |
MultiExchange<?> multi4 = new MultiExchange<Void>(origReq4, req4, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
336 |
HttpResponse.BodyHandlers.replacing(null), null, |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
337 |
AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
338 |
out.println("Simulating new request to " + reqURI4 + " with a proxy " + req4.proxy()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
339 |
assertTrue((req4.proxy() == null) == (proxy != null), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
340 |
"(req4.proxy() == null) == (proxy != null) should be true"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
341 |
filter.request(req4, multi4); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
342 |
out.println("Check that filter has not added proxy credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
343 |
+ reqURI4 + " (proxy: " + req4.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
344 |
assert !req4.getSystemHeaders().firstValue(authorization(true)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
345 |
: format("Unexpected proxy credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
346 |
java.util.stream.Stream.of(getAuthorization(req4.getSystemHeaders(), true)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
347 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
348 |
assertFalse(req4.getSystemHeaders().firstValue(authorization(true)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
349 |
if (proxy != null) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
350 |
out.println("Check that filter has not added server credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
351 |
+ reqURI4 + " (proxy: " + req4.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
352 |
assert !req4.getSystemHeaders().firstValue(authorization(false)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
353 |
: format("Unexpected server credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
354 |
java.util.stream.Stream.of(getAuthorization(req4.getSystemHeaders(), false)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
355 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
356 |
assertFalse(req4.getSystemHeaders().firstValue(authorization(false)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
357 |
} else { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
358 |
out.println("Check that filter has added server credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
359 |
+ reqURI4 + " (proxy: " + req4.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
360 |
String[] up4 = check(reqURI, req4.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
361 |
assertTrue(Arrays.deepEquals(up, up4), format("%s:%s != %s:%s", up4[0], up4[1], up[0], up[1])); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
362 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
363 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
364 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
365 |
if (proxy != null) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
366 |
// Now if we were using a proxy, we're going to send the same request than |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
367 |
// the original request, but without a proxy, and verify that this time |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
368 |
// the cache does not add any server or proxy credential. It should not |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
369 |
// add server credential because it should not have them (we only used |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
370 |
// proxy authentication so far) and it should not add proxy credentials |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
371 |
// because the request has no proxy. |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
372 |
HttpRequestBuilderImpl reqBuilder5 = new HttpRequestBuilderImpl(reqURI); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
373 |
HttpRequestImpl origReq5 = new HttpRequestImpl(reqBuilder5); |
56235 | 374 |
HttpRequestImpl req5 = new HttpRequestImpl(origReq5, NO_PROXY); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
375 |
MultiExchange<?> multi5 = new MultiExchange<Void>(origReq5, req5, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
376 |
HttpResponse.BodyHandlers.replacing(null), null, |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
377 |
AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
378 |
out.println("Simulating new request to " + reqURI + " with a proxy " + req5.proxy()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
379 |
assertTrue(req5.proxy() == null, "req5.proxy() should be null"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
380 |
Exchange<?> exchange5 = new Exchange<>(req5, multi5); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
381 |
filter.request(req5, multi5); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
382 |
out.println("Check that filter has not added server credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
383 |
+ reqURI + " (proxy: " + req5.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
384 |
assert !req5.getSystemHeaders().firstValue(authorization(false)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
385 |
: format("Unexpected server credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
386 |
java.util.stream.Stream.of(getAuthorization(req5.getSystemHeaders(), false)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
387 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
388 |
assertFalse(req5.getSystemHeaders().firstValue(authorization(false)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
389 |
out.println("Check that filter has not added proxy credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
390 |
+ reqURI + " (proxy: " + req5.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
391 |
assert !req5.getSystemHeaders().firstValue(authorization(true)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
392 |
: format("Unexpected proxy credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
393 |
java.util.stream.Stream.of(getAuthorization(req5.getSystemHeaders(), true)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
394 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
395 |
assertFalse(req5.getSystemHeaders().firstValue(authorization(true)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
396 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
397 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
398 |
// Now simulate a 401 response from the server |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
399 |
HttpHeadersImpl headers5 = new HttpHeadersImpl(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
400 |
headers5.addHeader(authenticate(false), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
401 |
"Basic realm=\"earth\""); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
402 |
unauthorized = 401; |
56126
86e628130926
http-client-branch: fixed TLS hostname checking issue, SSL session reuse, and changed HttpResponse to return SSLSession
michaelm
parents:
56103
diff
changeset
|
403 |
Response response5 = new Response(req5, exchange5, headers5, null, unauthorized, v); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
404 |
out.println("Simulating " + unauthorized |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
405 |
+ " response from " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
406 |
HttpRequestImpl next5 = filter.response(response5); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
407 |
assertEquals(authenticator.COUNTER.get(), 2); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
408 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
409 |
out.println("Checking filter's response to " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
410 |
+ unauthorized + " from " + uri); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
411 |
assertTrue(next5 != null, "next5 should not be null"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
412 |
String[] up5 = check(reqURI, next5.getSystemHeaders(), null); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
413 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
414 |
// now simulate a 200 response from the server |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
415 |
exchange5 = new Exchange<>(next5, multi5); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
416 |
filter.request(next5, multi5); |
56126
86e628130926
http-client-branch: fixed TLS hostname checking issue, SSL session reuse, and changed HttpResponse to return SSLSession
michaelm
parents:
56103
diff
changeset
|
417 |
response5 = new Response(next5, exchange5, new HttpHeadersImpl(), null, 200, v); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
418 |
filter.response(response5); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
419 |
assertEquals(authenticator.COUNTER.get(), 2); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
420 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
421 |
// now send the request again, with proxy this time, and it should have both |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
422 |
// server auth and proxy auth |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
423 |
HttpRequestBuilderImpl reqBuilder6 = new HttpRequestBuilderImpl(reqURI); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
424 |
HttpRequestImpl origReq6 = new HttpRequestImpl(reqBuilder6); |
56235 | 425 |
HttpRequestImpl req6 = new HttpRequestImpl(origReq6, ps); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
426 |
MultiExchange<?> multi6 = new MultiExchange<Void>(origReq6, req6, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
427 |
HttpResponse.BodyHandlers.replacing(null), null, |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
428 |
AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
429 |
out.println("Simulating new request to " + reqURI + " with a proxy " + req6.proxy()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
430 |
assertTrue(req6.proxy() != null, "req6.proxy() should not be null"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
431 |
Exchange<?> exchange6 = new Exchange<>(req6, multi6); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
432 |
filter.request(req6, multi6); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
433 |
out.println("Check that filter has added server credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
434 |
+ reqURI + " (proxy: " + req6.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
435 |
check(reqURI, req6.getSystemHeaders(), null); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
436 |
out.println("Check that filter has added proxy credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
437 |
+ reqURI + " (proxy: " + req6.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
438 |
String[] up6 = check(reqURI, req6.getSystemHeaders(), proxy); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
439 |
assertTrue(Arrays.deepEquals(up, up6), format("%s:%s != %s:%s", up6[0], up6[1], up[0], up[1])); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
440 |
assertEquals(authenticator.COUNTER.get(), 2); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
441 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
442 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
443 |
if (proxy == null && uri.contains("x/y/z")) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
444 |
URI reqURI7 = URI.create(prefix + "/../../w/z" + fragment); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
445 |
assertTrue(reqURI7.getPath().contains("../../")); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
446 |
HttpRequestBuilderImpl reqBuilder7 = new HttpRequestBuilderImpl(reqURI7); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
447 |
HttpRequestImpl origReq7 = new HttpRequestImpl(reqBuilder7); |
56235 | 448 |
HttpRequestImpl req7 = new HttpRequestImpl(origReq7, ps); |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
449 |
MultiExchange<?> multi7 = new MultiExchange<Void>(origReq7, req7, client, |
56167
96fa4f49a9ff
http-client-branch: CSR review commet - outboard pre-defined BP/BH/BS
chegar
parents:
56126
diff
changeset
|
450 |
HttpResponse.BodyHandlers.replacing(null), null, |
56103
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
451 |
AccessController.getContext()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
452 |
out.println("Simulating new request to " + reqURI7 + " with a proxy " + req7.proxy()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
453 |
assertTrue(req7.proxy() == null, "req7.proxy() should be null"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
454 |
Exchange<?> exchange7 = new Exchange<>(req7, multi7); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
455 |
filter.request(req7, multi7); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
456 |
out.println("Check that filter has not added server credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
457 |
+ reqURI7 + " (proxy: " + req7.proxy() + ") [resolved uri: " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
458 |
+ reqURI7.resolve(".") + " should not match " + reqURI.resolve(".") + "]"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
459 |
assert !req7.getSystemHeaders().firstValue(authorization(false)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
460 |
: format("Unexpected server credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
461 |
java.util.stream.Stream.of(getAuthorization(req7.getSystemHeaders(), false)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
462 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
463 |
assertFalse(req7.getSystemHeaders().firstValue(authorization(false)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
464 |
out.println("Check that filter has not added proxy credentials from cache for " |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
465 |
+ reqURI7 + " (proxy: " + req7.proxy() + ")"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
466 |
assert !req7.getSystemHeaders().firstValue(authorization(true)).isPresent() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
467 |
: format("Unexpected proxy credentials found: %s", |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
468 |
java.util.stream.Stream.of(getAuthorization(req7.getSystemHeaders(), true)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
469 |
.collect(joining(":"))); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
470 |
assertFalse(req7.getSystemHeaders().firstValue(authorization(true)).isPresent()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
471 |
assertEquals(authenticator.COUNTER.get(), 1); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
472 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
473 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
474 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
475 |
Reference.reachabilityFence(facade); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
476 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
477 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
478 |
static int defaultPort(String protocol) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
479 |
if ("http".equalsIgnoreCase(protocol)) return 80; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
480 |
if ("https".equalsIgnoreCase(protocol)) return 443; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
481 |
return -1; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
482 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
483 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
484 |
static String authenticate(boolean proxy) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
485 |
return proxy ? "Proxy-Authenticate" : "WWW-Authenticate"; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
486 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
487 |
static String authorization(boolean proxy) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
488 |
return proxy ? "Proxy-Authorization" : "Authorization"; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
489 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
490 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
491 |
static String[] getAuthorization(HttpHeaders headers, boolean proxy) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
492 |
String auth = headers.firstValue(authorization(proxy)).get().substring(6); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
493 |
String pw = new String(Base64.getDecoder().decode(auth), US_ASCII); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
494 |
String[] up = pw.split(":"); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
495 |
up[1] = new String(Base64.getDecoder().decode(up[1]), US_ASCII); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
496 |
return up; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
497 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
498 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
499 |
static Authenticator.RequestorType requestorType(boolean proxy) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
500 |
return proxy ? Authenticator.RequestorType.PROXY |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
501 |
: Authenticator.RequestorType.SERVER; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
502 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
503 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
504 |
static String[] check(URI reqURI, HttpHeaders headers, String proxy) throws Exception { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
505 |
out.println("Next request headers: " + headers.map()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
506 |
String[] up = getAuthorization(headers, proxy != null); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
507 |
String u = up[0]; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
508 |
String p = up[1]; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
509 |
out.println("user:password: " + u + ":" + p); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
510 |
String protocol = proxy != null ? "http" : reqURI.getScheme(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
511 |
String expectedUser = "u." + protocol; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
512 |
assertEquals(u, expectedUser); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
513 |
String host = proxy == null ? reqURI.getHost() : |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
514 |
proxy.substring(0, proxy.lastIndexOf(':')); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
515 |
int port = proxy == null ? reqURI.getPort() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
516 |
: Integer.parseInt(proxy.substring(proxy.lastIndexOf(':')+1)); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
517 |
String expectedPw = concat(requestorType(proxy!=null), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
518 |
"basic", protocol, host, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
519 |
port, "earth", reqURI.toURL()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
520 |
assertEquals(p, expectedPw); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
521 |
return new String[] {u, p}; |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
522 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
523 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
524 |
static String concat(Authenticator.RequestorType reqType, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
525 |
String authScheme, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
526 |
String requestingProtocol, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
527 |
String requestingHost, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
528 |
int requestingPort, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
529 |
String realm, |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
530 |
URL requestingURL) { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
531 |
return new StringBuilder() |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
532 |
.append(reqType).append(":") |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
533 |
.append(authScheme).append(":") |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
534 |
.append(String.valueOf(realm)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
535 |
.append("[") |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
536 |
.append(requestingProtocol).append(':') |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
537 |
.append(requestingHost).append(':') |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
538 |
.append(requestingPort).append("]") |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
539 |
.append("/").append(String.valueOf(requestingURL)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
540 |
.toString(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
541 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
542 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
543 |
static class TestAuthenticator extends Authenticator { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
544 |
final AtomicLong COUNTER = new AtomicLong(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
545 |
@Override |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
546 |
public PasswordAuthentication getPasswordAuthentication() { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
547 |
COUNTER.incrementAndGet(); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
548 |
return new PasswordAuthentication("u."+getRequestingProtocol(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
549 |
Base64.getEncoder().encodeToString(concat().getBytes(US_ASCII)) |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
550 |
.toCharArray()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
551 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
552 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
553 |
String concat() { |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
554 |
return AuthenticationFilterTest.concat( |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
555 |
getRequestorType(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
556 |
getRequestingScheme(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
557 |
getRequestingProtocol(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
558 |
getRequestingHost(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
559 |
getRequestingPort(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
560 |
getRequestingPrompt(), |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
561 |
getRequestingURL()); |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
562 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
563 |
|
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
564 |
} |
d5f70938e399
http-client-branch: Add whitebox tests for AuthenticationFilter.
dfuchs
parents:
diff
changeset
|
565 |
} |