|
14 | 14 |
|
15 | 15 | import static org.junit.Assert.*;
|
16 | 16 |
|
| 17 | +import io.kubernetes.client.util.authenticators.Authenticator; |
17 | 18 | import io.kubernetes.client.util.authenticators.AzureActiveDirectoryAuthenticator;
|
18 | 19 | import io.kubernetes.client.util.authenticators.GCPAuthenticator;
|
19 | 20 | import java.io.File;
|
|
22 | 23 | import java.io.IOException;
|
23 | 24 | import java.io.StringReader;
|
24 | 25 | import java.nio.file.Files;
|
| 26 | +import java.util.Map; |
25 | 27 | import org.junit.Rule;
|
26 | 28 | import org.junit.Test;
|
27 | 29 | import org.junit.rules.TemporaryFolder;
|
@@ -106,6 +108,45 @@ public void testGCPAuthProvider() {
|
106 | 108 | }
|
107 | 109 | }
|
108 | 110 |
|
| 111 | + private static String GCP_TEST_DATE_STRING = |
| 112 | + "apiVersion: v1\n" |
| 113 | + + "contexts:\n" |
| 114 | + + "- context:\n" |
| 115 | + + " user: gke-cluster\n" |
| 116 | + + " name: foo-context\n" |
| 117 | + + "current-context: foo-context\n" |
| 118 | + + "users:\n" |
| 119 | + + "- name: gke-cluster\n" |
| 120 | + + " user:\n" |
| 121 | + + " auth-provider:\n" |
| 122 | + + " config:\n" |
| 123 | + + " access-token: fake-token\n" |
| 124 | + + " cmd-args: config config-helper --format=json\n" |
| 125 | + + " cmd-path: /usr/lib/google-cloud-sdk/bin/gcloud\n" |
| 126 | + + " expiry: \"2117-06-22T18:27:02Z\"\n" |
| 127 | + + " expiry-key: '{.credential.token_expiry}'\n" |
| 128 | + + " token-key: '{.credential.access_token}'\n" |
| 129 | + + " name: gcp\n"; |
| 130 | + |
| 131 | + @Test |
| 132 | + public void testGCPAuthProviderStringDate() { |
| 133 | + KubeConfig.registerAuthenticator(new GCPAuthenticator()); |
| 134 | + |
| 135 | + try { |
| 136 | + File config = folder.newFile("config"); |
| 137 | + FileWriter writer = new FileWriter(config); |
| 138 | + writer.write(GCP_TEST_DATE_STRING); |
| 139 | + writer.flush(); |
| 140 | + writer.close(); |
| 141 | + |
| 142 | + KubeConfig kc = KubeConfig.loadKubeConfig(new FileReader(config)); |
| 143 | + assertEquals("fake-token", kc.getAccessToken()); |
| 144 | + } catch (Exception ex) { |
| 145 | + ex.printStackTrace(); |
| 146 | + fail("Unexpected exception: " + ex); |
| 147 | + } |
| 148 | + } |
| 149 | + |
109 | 150 | @Test
|
110 | 151 | public void testGCPAuthProviderExpiredToken() {
|
111 | 152 | String gcpConfigExpiredToken =
|
@@ -178,4 +219,58 @@ public void testNullNamespace() {
|
178 | 219 | KubeConfig config = KubeConfig.loadKubeConfig(new StringReader(GCP_CONFIG));
|
179 | 220 | assertNull(config.getNamespace());
|
180 | 221 | }
|
| 222 | + |
| 223 | + class FakeAuthenticator implements Authenticator { |
| 224 | + public String token; |
| 225 | + public String refresh; |
| 226 | + public boolean expired; |
| 227 | + |
| 228 | + public String getName() { |
| 229 | + return "fake"; |
| 230 | + } |
| 231 | + |
| 232 | + public String getToken(Map<String, Object> config) { |
| 233 | + return (String) config.get("access-token"); |
| 234 | + } |
| 235 | + |
| 236 | + public boolean isExpired(Map<String, Object> config) { |
| 237 | + return expired; |
| 238 | + } |
| 239 | + |
| 240 | + public Map<String, Object> refresh(Map<String, Object> config) { |
| 241 | + config.put("access-token", token); |
| 242 | + config.put("refresh-token", refresh); |
| 243 | + return config; |
| 244 | + } |
| 245 | + } |
| 246 | + |
| 247 | + public static String KUBECONFIG_FAKE = |
| 248 | + "apiVersion: v1\n" |
| 249 | + + "contexts:\n" |
| 250 | + + "- context:\n" |
| 251 | + + " user: fake-cluster\n" |
| 252 | + + " name: foo-context\n" |
| 253 | + + "current-context: foo-context\n" |
| 254 | + + "users:\n" |
| 255 | + + "- name: fake-cluster\n" |
| 256 | + + " user:\n" |
| 257 | + + " auth-provider:\n" |
| 258 | + + " config:\n" |
| 259 | + + " access-token: fake-token\n" |
| 260 | + + " name: fake\n"; |
| 261 | + |
| 262 | + @Test |
| 263 | + public void testRefreshToken() { |
| 264 | + FakeAuthenticator fake = new FakeAuthenticator(); |
| 265 | + KubeConfig.registerAuthenticator(fake); |
| 266 | + |
| 267 | + KubeConfig config = KubeConfig.loadKubeConfig(new StringReader(KUBECONFIG_FAKE)); |
| 268 | + |
| 269 | + fake.expired = true; |
| 270 | + fake.token = "someNewToken"; |
| 271 | + fake.refresh = "refreshToken"; |
| 272 | + |
| 273 | + String token = config.getAccessToken(); |
| 274 | + assertEquals(token, fake.token); |
| 275 | + } |
181 | 276 | }
|
0 commit comments