From 08b089cad77b6dede3b4b40392230baa45218a53 Mon Sep 17 00:00:00 2001 From: Dzmitry Targonsky Date: Fri, 28 Jan 2022 11:42:58 +0300 Subject: [PATCH 1/3] Restrict TestResourceLoader from search of non-classpath resources in subfolders --- .../vividus/resource/TestResourceLoader.java | 17 +++++++++++++---- .../resource/TestResourceLoaderTests.java | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java b/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java index 8cc7575d3d..6bb3850eeb 100644 --- a/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java +++ b/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 the original author or authors. + * Copyright 2019-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -54,9 +54,18 @@ public Resource[] getResources(String resourceLocation, String resourcePattern) try { String normalizedResourceLocation = StringUtils.appendIfMissing(resourceLocation, SEPARATOR); - String locationPattern = resourceLocation.startsWith(FILE_URL_PREFIX) - ? normalizedResourceLocation : CLASSPATH_ALL_URL_PREFIX + normalizedResourceLocation; - Resource[] allResources = resourcePatternResolver.getResources(locationPattern + "**/" + resourcePattern); + String locationPattern = null; + Resource[] allResources = null; + if (resourceLocation.startsWith(FILE_URL_PREFIX)) + { + locationPattern = normalizedResourceLocation; + allResources = resourcePatternResolver.getResources(locationPattern + resourcePattern); + } + else + { + locationPattern = CLASSPATH_ALL_URL_PREFIX + normalizedResourceLocation; + allResources = resourcePatternResolver.getResources(locationPattern + "**/" + resourcePattern); + } List resourceUrls = new ArrayList<>(allResources.length); for (Resource resource : allResources) { diff --git a/vividus-engine/src/test/java/org/vividus/resource/TestResourceLoaderTests.java b/vividus-engine/src/test/java/org/vividus/resource/TestResourceLoaderTests.java index e78f93284f..668f9772cc 100644 --- a/vividus-engine/src/test/java/org/vividus/resource/TestResourceLoaderTests.java +++ b/vividus-engine/src/test/java/org/vividus/resource/TestResourceLoaderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 the original author or authors. + * Copyright 2019-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,7 +65,7 @@ private void initLoader(Map props) testResourceLoader = new TestResourceLoader(propertyParser, resourcePatternResolver); } - private Resource[] mockGetAllResources(String prefix, String... urls) throws IOException + private Resource[] mockResources(String... urls) throws IOException { Resource[] allResources = new Resource[urls.length]; for (int i = 0; i < urls.length; i++) @@ -74,6 +74,12 @@ private Resource[] mockGetAllResources(String prefix, String... urls) throws IOE when(resource.getURL()).thenReturn(new URL(urls[i])); allResources[i] = resource; } + return allResources; + } + + private Resource[] mockGetAllResources(String prefix, String... urls) throws IOException + { + Resource[] allResources = mockResources(urls); when(resourcePatternResolver.getResources(startsWith(prefix))).thenReturn(allResources); return allResources; } @@ -81,11 +87,13 @@ private Resource[] mockGetAllResources(String prefix, String... urls) throws IOE @Test void testGetFileResources() throws IOException { + var path = "file:///C:/Users/test/"; + var fileName = "temp.table"; initLoader(Map.of(BRAND_KEY, BRAND_VALUE)); - var allResources = mockGetAllResources("file://", - "file:///C:/Users/test/vividus/ca/temp.table", "file:///C:/Users/test/vividus/temp.table"); + Resource[] allResources = mockResources("file:///C:/Users/test/vividus/ca/temp.table"); + when(resourcePatternResolver.getResources(path + fileName)).thenReturn(allResources); - var actualResources = testResourceLoader.getResources("file:///C:/Users/test/", "temp.table"); + var actualResources = testResourceLoader.getResources(path, fileName); assertArrayEquals(allResources, actualResources); } From a5d0748181e544931dfe126af1e404625a91f95b Mon Sep 17 00:00:00 2001 From: skyoker Date: Fri, 28 Jan 2022 13:31:39 +0300 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Valery Yatsynovich --- .../java/org/vividus/resource/TestResourceLoader.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java b/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java index 6bb3850eeb..9b6f0ea962 100644 --- a/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java +++ b/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java @@ -54,18 +54,19 @@ public Resource[] getResources(String resourceLocation, String resourcePattern) try { String normalizedResourceLocation = StringUtils.appendIfMissing(resourceLocation, SEPARATOR); - String locationPattern = null; - Resource[] allResources = null; + String locationPattern; + String fullLocationPattern; if (resourceLocation.startsWith(FILE_URL_PREFIX)) { locationPattern = normalizedResourceLocation; - allResources = resourcePatternResolver.getResources(locationPattern + resourcePattern); + fullLocationPattern = locationPattern + resourcePattern; } else { locationPattern = CLASSPATH_ALL_URL_PREFIX + normalizedResourceLocation; - allResources = resourcePatternResolver.getResources(locationPattern + "**/" + resourcePattern); + fullLocationPattern = locationPattern + "**/" + resourcePattern; } + Resource[] allResources = resourcePatternResolver.getResources(fullLocationPattern); List resourceUrls = new ArrayList<>(allResources.length); for (Resource resource : allResources) { From 53ccc7663db197b3b13fbfafb0d4d25cfd8b6754 Mon Sep 17 00:00:00 2001 From: Dzmitry Targonsky Date: Fri, 28 Jan 2022 14:07:45 +0300 Subject: [PATCH 3/3] Fix checkstyle violation --- .../src/main/java/org/vividus/resource/TestResourceLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java b/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java index 9b6f0ea962..8fd951be91 100644 --- a/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java +++ b/vividus-engine/src/main/java/org/vividus/resource/TestResourceLoader.java @@ -55,7 +55,7 @@ public Resource[] getResources(String resourceLocation, String resourcePattern) { String normalizedResourceLocation = StringUtils.appendIfMissing(resourceLocation, SEPARATOR); String locationPattern; - String fullLocationPattern; + String fullLocationPattern; if (resourceLocation.startsWith(FILE_URL_PREFIX)) { locationPattern = normalizedResourceLocation;