shunping commented on code in PR #39940:
URL: https://github.com/apache/beam/pull/39940#discussion_r3927239910


##########
sdks/java/core/src/test/java/org/apache/beam/sdk/util/SecretTest.java:
##########
@@ -245,4 +258,88 @@ public void testSerialization() {
     GcpHsmGeneratedSecret deserializedHsm = SerializableUtils.clone(hsm);
     assertEquals(hsm, deserializedHsm);
   }
+
+  @Test
+  public void testLoadSecretFactoriesNullList() {
+    Map<String, SecretRegistrar.SecretFactory> factories = 
Secret.loadSecretFactories(null);
+    assertTrue(factories.isEmpty());
+  }
+
+  @Test
+  public void testLoadSecretFactoriesHandlesNullRegistrarAndNullFactories() {
+    SecretRegistrar nullFactoriesRegistrar = () -> null;
+    Map<String, SecretRegistrar.SecretFactory> factories =
+        Secret.loadSecretFactories(java.util.Arrays.asList(null, 
nullFactoriesRegistrar));
+    assertTrue(factories.isEmpty());
+  }
+
+  @Test
+  public void testLoadSecretFactoriesHandlesThrowingRegistrar() {
+    SecretRegistrar throwingRegistrar =
+        () -> {
+          throw new RuntimeException("Simulated failure in registrar");
+        };
+    SecretRegistrar validRegistrar =
+        () -> Collections.singletonMap("valid", spec -> new RawSecret("test"));
+
+    Map<String, SecretRegistrar.SecretFactory> factories =
+        Secret.loadSecretFactories(java.util.Arrays.asList(throwingRegistrar, 
validRegistrar));
+    assertEquals(1, factories.size());
+    assertTrue(factories.containsKey("valid"));
+  }
+
+  @Test
+  public void testLoadSecretFactoriesHandlesMalformedEntries() {
+    Map<String, SecretRegistrar.SecretFactory> malformedMap = new HashMap<>();
+    malformedMap.put(null, spec -> new RawSecret("val"));
+    malformedMap.put("", spec -> new RawSecret("val"));
+    malformedMap.put("   ", spec -> new RawSecret("val"));
+    malformedMap.put("null_factory", null);
+    malformedMap.put("good", spec -> new RawSecret("good_val"));
+
+    SecretRegistrar registrar = () -> malformedMap;
+    Map<String, SecretRegistrar.SecretFactory> factories =
+        Secret.loadSecretFactories(Collections.singletonList(registrar));
+    assertEquals(1, factories.size());
+    assertTrue(factories.containsKey("good"));
+  }
+
+  @Test
+  public void testLoadSecretFactoriesDuplicateKeysFirstWins() {
+    SecretRegistrar.SecretFactory factory1 = spec -> new RawSecret("first");
+    SecretRegistrar.SecretFactory factory2 = spec -> new RawSecret("second");
+
+    SecretRegistrar registrar1 = () -> 
Collections.singletonMap("duplicate_key", factory1);
+    SecretRegistrar registrar2 = () -> 
Collections.singletonMap("DUPLICATE_KEY", factory2);
+
+    Set<String> supportedTypes = new TreeSet<>();
+    Map<String, SecretRegistrar.SecretFactory> factories =
+        Secret.loadSecretFactories(java.util.Arrays.asList(registrar1, 
registrar2), supportedTypes);
+    assertEquals(1, factories.size());
+    assertEquals(factory1, factories.get("duplicate_key"));
+    assertEquals(Collections.singleton("duplicate_key"), supportedTypes);
+  }
+
+  @Test
+  public void testSupportedTypesRetainsPascalCase() {

Review Comment:
   Done.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to