Skip to content

Commit ef1ef9a

Browse files
authored
fix: set visibility of ConfigBasedAuthenticatorFactory.createAuthenticator to protected (#165)
This commit changes the visibility of the "ConfigBasedAuthenticatorFactory.createAuthenticator()" method from private to protected to allow SDKs to override this class in order to support alternate configuration sources (e.g. injected spring properties).
1 parent 8a4910f commit ef1ef9a

File tree

3 files changed

+44
-17
lines changed

3 files changed

+44
-17
lines changed

src/main/java/com/ibm/cloud/sdk/core/security/ConfigBasedAuthenticatorFactory.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* (C) Copyright IBM Corp. 2019, 2021.
2+
* (C) Copyright IBM Corp. 2019, 2022.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
55
* the License. You may obtain a copy of the License at
@@ -58,7 +58,7 @@ public static Authenticator getAuthenticator(String serviceName) {
5858
* @param props a Map containing configuration properties
5959
* @return an Authenticator instance
6060
*/
61-
private static Authenticator createAuthenticator(Map<String, String> props) {
61+
protected static Authenticator createAuthenticator(Map<String, String> props) {
6262
Authenticator authenticator = null;
6363

6464
// If auth type was not specified, we'll use "iam" as the default if the "apikey" property

src/test/java/com/ibm/cloud/sdk/core/test/security/BasicAuthenticatorTest.java

-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ public void testCtorGoodConfigMap() {
244244

245245
@Test
246246
public void testSingleAuthHeader() {
247-
String username = "good-username";
248247
Map<String, String> props = new HashMap<>();
249248
props.put(Authenticator.PROPNAME_USERNAME, "good-username");
250249
props.put(Authenticator.PROPNAME_PASSWORD, "good-password");

src/test/java/com/ibm/cloud/sdk/core/test/security/ConfigBasedAuthenticatorFactoryTest.java

+42-14
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,43 @@ public void testNoConfig() {
133133
assertNull(auth);
134134
}
135135

136+
/**
137+
* This class is a subclass of our authenticator factory and is
138+
* simply a test to make sure that the subclass usecase works as expected.
139+
*/
140+
public static class TestAuthFactorySubclass extends ConfigBasedAuthenticatorFactory {
141+
142+
public static Authenticator getAuthenticator(String serviceName) {
143+
// For testing purposes, just hard-code the service properties
144+
// so we can simulate an alternate config source.
145+
Map<String, String> authProps = new HashMap<>();
146+
authProps.put(Authenticator.PROPNAME_AUTH_TYPE, "basic");
147+
authProps.put(Authenticator.PROPNAME_USERNAME, "myuser");
148+
authProps.put(Authenticator.PROPNAME_PASSWORD, "mypassword");
149+
150+
Authenticator authenticator = createAuthenticator(authProps);
151+
152+
return authenticator;
153+
}
154+
}
155+
156+
@Test
157+
public void testFactorySubclass() {
158+
159+
Authenticator auth = TestAuthFactorySubclass.getAuthenticator("dont_care");
160+
assertNotNull(auth);
161+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_BASIC);
162+
}
163+
136164
@Test
137165
public void testFileCredentialsService1() {
138166
PowerMockito.spy(EnvironmentUtils.class);
139167
PowerMockito.when(EnvironmentUtils.getenv("IBM_CREDENTIALS_FILE")).thenReturn(ALTERNATE_CRED_FILENAME);
140-
assertEquals(ALTERNATE_CRED_FILENAME, EnvironmentUtils.getenv("IBM_CREDENTIALS_FILE"));
168+
assertEquals(EnvironmentUtils.getenv("IBM_CREDENTIALS_FILE"), ALTERNATE_CRED_FILENAME);
141169

142170
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service-1");
143171
assertNotNull(auth);
144-
assertEquals(Authenticator.AUTHTYPE_IAM, auth.authenticationType());
172+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_IAM);
145173
}
146174

147175
@Test
@@ -151,7 +179,7 @@ public void testFileCredentialsService2() {
151179

152180
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service2");
153181
assertNotNull(auth);
154-
assertEquals(Authenticator.AUTHTYPE_BASIC, auth.authenticationType());
182+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_BASIC);
155183
}
156184

157185
@Test
@@ -161,7 +189,7 @@ public void testFileCredentialsService3() {
161189

162190
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service3");
163191
assertNotNull(auth);
164-
assertEquals(Authenticator.AUTHTYPE_CP4D, auth.authenticationType());
192+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_CP4D);
165193
}
166194

167195
@Test
@@ -171,7 +199,7 @@ public void testFileCredentialsService4() {
171199

172200
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service4");
173201
assertNotNull(auth);
174-
assertEquals(Authenticator.AUTHTYPE_NOAUTH, auth.authenticationType());
202+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_NOAUTH);
175203
}
176204

177205
@Test
@@ -266,7 +294,7 @@ public void testFileCredentialsService5() {
266294

267295
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service5");
268296
assertNotNull(auth);
269-
assertEquals(Authenticator.AUTHTYPE_BEARER_TOKEN, auth.authenticationType());
297+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_BEARER_TOKEN);
270298
}
271299

272300
@Test(expectedExceptions = IllegalArgumentException.class)
@@ -304,11 +332,11 @@ public void testFileCredentialsError4() {
304332
@Test
305333
public void testFileCredentialsSystemPropService1() {
306334
System.setProperty("IBM_CREDENTIALS_FILE", ALTERNATE_CRED_FILENAME);
307-
assertEquals(ALTERNATE_CRED_FILENAME, System.getProperty("IBM_CREDENTIALS_FILE"));
335+
assertEquals(System.getProperty("IBM_CREDENTIALS_FILE"), ALTERNATE_CRED_FILENAME);
308336

309337
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service-1");
310338
assertNotNull(auth);
311-
assertEquals(Authenticator.AUTHTYPE_IAM, auth.authenticationType());
339+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_IAM);
312340
System.clearProperty("IBM_CREDENTIALS_FILE");
313341
}
314342

@@ -319,7 +347,7 @@ public void testEnvCredentialsService1() {
319347

320348
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service-1");
321349
assertNotNull(auth);
322-
assertEquals(Authenticator.AUTHTYPE_IAM, auth.authenticationType());
350+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_IAM);
323351
IamAuthenticator iamAuth = (IamAuthenticator) auth;
324352
assertEquals(iamAuth.getApiKey(), "my-api-key");
325353
assertEquals(iamAuth.getClientId(), "my-client-id");
@@ -335,7 +363,7 @@ public void testEnvCredentialsService6() {
335363

336364
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service6");
337365
assertNotNull(auth);
338-
assertEquals(Authenticator.AUTHTYPE_CP4D_SERVICE, auth.authenticationType());
366+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_CP4D_SERVICE);
339367
CloudPakForDataServiceAuthenticator cp4dAuth = (CloudPakForDataServiceAuthenticator) auth;
340368
assertEquals(cp4dAuth.getURL(), "https://service1/zen-data/internal");
341369
assertEquals(cp4dAuth.getServiceBrokerSecret(), "f8b7czjt701wy6253be5q8ad8f07kd08");
@@ -349,7 +377,7 @@ public void testEnvCredentialsService7() {
349377

350378
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service7");
351379
assertNotNull(auth);
352-
assertEquals(Authenticator.AUTHTYPE_CONTAINER, auth.authenticationType());
380+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_CONTAINER);
353381
ContainerAuthenticator containerAuth = (ContainerAuthenticator) auth;
354382
assertEquals(containerAuth.getURL(), "https://iam.com/api");
355383
assertEquals(containerAuth.getCrTokenFilename(), "cr-token.txt");
@@ -368,7 +396,7 @@ public void testEnvCredentialsService8() {
368396

369397
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("service8");
370398
assertNotNull(auth);
371-
assertEquals(Authenticator.AUTHTYPE_VPC, auth.authenticationType());
399+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_VPC);
372400
VpcInstanceAuthenticator containerAuth = (VpcInstanceAuthenticator) auth;
373401
assertEquals(containerAuth.getIamProfileCrn(), "crn:iam-profile-1");
374402
assertNull(containerAuth.getIamProfileId());
@@ -413,7 +441,7 @@ public void testVcapCredentialsDiscovery() {
413441

414442
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("discovery");
415443
assertNotNull(auth);
416-
assertEquals(Authenticator.AUTHTYPE_BASIC, auth.authenticationType());
444+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_BASIC);
417445
}
418446

419447
@Test
@@ -422,6 +450,6 @@ public void testVcapCredentialsLT() {
422450

423451
Authenticator auth = ConfigBasedAuthenticatorFactory.getAuthenticator("language_translator");
424452
assertNotNull(auth);
425-
assertEquals(Authenticator.AUTHTYPE_IAM, auth.authenticationType());
453+
assertEquals(auth.authenticationType(), Authenticator.AUTHTYPE_IAM);
426454
}
427455
}

0 commit comments

Comments
 (0)