diff --git a/core/src/main/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactory.java b/core/src/main/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactory.java index 079c2e6ab7..c2a4567e79 100644 --- a/core/src/main/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactory.java +++ b/core/src/main/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactory.java @@ -280,7 +280,7 @@ private boolean toYesNo(OpenAPISpec.YesNoOpenAPIOption option) { } private File[] getOpenAPIFiles(String directoryName) { - File dir = new File(directoryName); + File dir = new File(pathFromFileURI(resolve(directoryName))); if (!dir.exists() || !dir.isDirectory()) { throw new ConfigurationException(format("Cannot open directory %s. Please check the OpenAPI configuration of your API.", dir.getAbsolutePath())); } diff --git a/core/src/test/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactoryTest.java b/core/src/test/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactoryTest.java index c1de2b4abc..28b27d6807 100644 --- a/core/src/test/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactoryTest.java +++ b/core/src/test/java/com/predic8/membrane/core/openapi/serviceproxy/OpenAPIRecordFactoryTest.java @@ -123,6 +123,18 @@ void referencesDepth() { assertNotNull(getMail(rec)); } + @Test + void readsDirectoryRelativeToBaseLocation() { + OpenAPISpec spec = new OpenAPISpec(); + spec.setDir("paths"); + + Map recs = factory.create(singletonList(spec)); + + assertEquals(3, recs.size()); + assertTrue(recs.containsKey("api-b-path-foo-v1-0")); + assertTrue(recs.keySet().stream().anyMatch(id -> id.startsWith("api-a-path-foo-v1-0"))); + } + @Test void getUniqueIdNoCollision() { assertEquals("customers-api-v1-0", factory.getUniqueId(new HashMap<>(), new OpenAPIRecord(getApi(this, "/openapi/specs/customers.yml"), null))); @@ -134,4 +146,4 @@ void getUniqueIdCollision() { recs.put("customers-api-v1-0", new OpenAPIRecord()); assertEquals("customers-api-v1-0-0", factory.getUniqueId(recs, new OpenAPIRecord(getApi(this, "/openapi/specs/customers.yml"), null))); } -} \ No newline at end of file +}