Skip to content

Commit 87e3901

Browse files
committed
WebHdfs: tweak tests and BasicAuthConfigurator instantiation
1 parent 5babfbc commit 87e3901

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/BasicAuthConfigurator.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ public class BasicAuthConfigurator implements ConnectionConfigurator {
3333
private final ConnectionConfigurator parent;
3434
private final String credentials;
3535

36+
static public ConnectionConfigurator getConfigurator(
37+
ConnectionConfigurator configurator, String basicAuthCred
38+
) {
39+
if (basicAuthCred != null && !basicAuthCred.isEmpty()) {
40+
return new BasicAuthConfigurator(configurator, basicAuthCred);
41+
} else {
42+
return configurator;
43+
}
44+
}
45+
3646
/**
3747
* @param credentials a string of the form "username:password"
3848
*/

hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/URLConnectionFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public HttpURLConnection configure(HttpURLConnection connection)
136136
}
137137
}
138138

139-
return new BasicAuthConfigurator(conn, basicAuthCredentials);
139+
return BasicAuthConfigurator.getConfigurator(conn, basicAuthCredentials);
140140
}
141141

142142
/**
@@ -166,7 +166,7 @@ public static URLConnectionFactory newOAuth2URLConnectionFactory(
166166
} catch (Exception e) {
167167
throw new IOException("Unable to load OAuth2 connection factory.", e);
168168
}
169-
conn = new BasicAuthConfigurator(conn, basicAuthCredentials);
169+
conn = BasicAuthConfigurator.getConfigurator(conn, basicAuthCredentials);
170170
return new URLConnectionFactory(conn);
171171
}
172172

hadoop-hdfs-project/hadoop-hdfs-client/src/test/java/org/apache/hadoop/hdfs/web/TestBasicAuthConfigurator.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
import java.io.IOException;
2525
import java.net.HttpURLConnection;
26+
import java.nio.charset.StandardCharsets;
27+
import java.util.Base64;
2628

2729
public class TestBasicAuthConfigurator {
2830
@Test
@@ -43,25 +45,39 @@ public void testEmptyCredentials() throws IOException {
4345

4446
@Test
4547
public void testCredentialsSet() throws IOException {
46-
ConnectionConfigurator conf = new BasicAuthConfigurator(null, "user:pass");
48+
String credentials = "user:pass";
49+
ConnectionConfigurator conf = new BasicAuthConfigurator(null, credentials);
4750
HttpURLConnection conn = Mockito.mock(HttpURLConnection.class);
4851
conf.configure(conn);
4952
Mockito.verify(conn, Mockito.times(1)).setRequestProperty(
5053
"AUTHORIZATION",
51-
"Basic dXNlcjpwYXNz"
54+
"Basic " + Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8))
5255
);
5356
}
5457

5558
@Test
5659
public void testParentConfigurator() throws IOException {
5760
ConnectionConfigurator parent = Mockito.mock(ConnectionConfigurator.class);
58-
ConnectionConfigurator conf = new BasicAuthConfigurator(parent, "user:pass");
61+
String credentials = "user:pass";
62+
ConnectionConfigurator conf = new BasicAuthConfigurator(parent, credentials);
5963
HttpURLConnection conn = Mockito.mock(HttpURLConnection.class);
6064
conf.configure(conn);
6165
Mockito.verify(conn, Mockito.times(1)).setRequestProperty(
6266
"AUTHORIZATION",
63-
"Basic dXNlcjpwYXNz"
67+
"Basic " + Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8))
6468
);
6569
Mockito.verify(parent, Mockito.times(1)).configure(conn);
6670
}
71+
72+
@Test
73+
public void testCredentialsSetWithUtfAndSpecialCharacters() throws IOException {
74+
String credentials = "\uD80C\uDD04@ą:pass";
75+
ConnectionConfigurator conf = new BasicAuthConfigurator(null, credentials);
76+
HttpURLConnection conn = Mockito.mock(HttpURLConnection.class);
77+
conf.configure(conn);
78+
Mockito.verify(conn, Mockito.times(1)).setRequestProperty(
79+
"AUTHORIZATION",
80+
"Basic " + Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8))
81+
);
82+
}
6783
}

0 commit comments

Comments
 (0)