diff --git a/workflow-engine/src/main/java/dev/openan/workflow/engine/client/AgentAuthManager.java b/workflow-engine/src/main/java/dev/openan/workflow/engine/client/AgentAuthManager.java index 65368909..ee66267c 100644 --- a/workflow-engine/src/main/java/dev/openan/workflow/engine/client/AgentAuthManager.java +++ b/workflow-engine/src/main/java/dev/openan/workflow/engine/client/AgentAuthManager.java @@ -75,15 +75,33 @@ private static Map>> loadFromFile(String if (path == null) { return new HashMap<>(); } - File file = new File(path); - if (!file.exists()) { - return new HashMap<>(); - } try { - Map>> loaded = - mapper.readValue( - file, - new TypeReference>>>() {}); + Map>> loaded; + if (path.startsWith("classpath:")) { + String resource = path.substring("classpath:".length()); + java.io.InputStream is = + AgentAuthManager.class.getClassLoader().getResourceAsStream(resource); + if (is == null) { + log.warn("[Auth] Classpath resource not found: {}", resource); + return new HashMap<>(); + } + loaded = + mapper.readValue( + is, + new TypeReference< + Map>>>() {}); + } else { + File file = new File(path); + if (!file.exists()) { + log.warn("[Auth] Credentials file not found: {}", path); + return new HashMap<>(); + } + loaded = + mapper.readValue( + file, + new TypeReference< + Map>>>() {}); + } log.info("[Auth] Loaded credentials for {} agent(s) from {}", loaded.size(), path); return loaded; } catch (Exception e) { diff --git a/workflow-engine/src/test/java/dev/openan/workflow/engine/client/AgentAuthManagerTest.java b/workflow-engine/src/test/java/dev/openan/workflow/engine/client/AgentAuthManagerTest.java index 8f7aba7b..44aae2d6 100644 --- a/workflow-engine/src/test/java/dev/openan/workflow/engine/client/AgentAuthManagerTest.java +++ b/workflow-engine/src/test/java/dev/openan/workflow/engine/client/AgentAuthManagerTest.java @@ -31,6 +31,19 @@ void loadsCredentialsFromClasspathLocation() throws Exception { config.get("bearerAuth").get("login_url")); } + @Test + void loadsCredentialsFromClasspathPrefix() { + AgentAuthManager manager = + new AgentAuthManager("classpath:test-agent-credentials.json"); + + var config = manager.getConfig("Test Agent"); + + assertNotNull(config); + assertEquals( + "https://auth.example.test/token", + config.get("bearerAuth").get("login_url")); + } + @Test void missingFileDoesNotCreateCredentials() { AgentAuthManager manager = @@ -38,4 +51,12 @@ void missingFileDoesNotCreateCredentials() { assertNull(manager.getConfig("Test Agent")); } + + @Test + void missingClasspathResourceDoesNotCreateCredentials() { + AgentAuthManager manager = + new AgentAuthManager("classpath:nonexistent-credentials.json"); + + assertNull(manager.getConfig("Test Agent")); + } }