diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtils.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtils.java index 3355b01cb4d4b..f7bcf63035bc8 100644 --- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtils.java +++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtils.java @@ -141,7 +141,9 @@ private static void validatePolicyScopes(String layerName, Policy policy, Set filesData) implements Entitlement { + public static final String SEPARATOR = FileSystems.getDefault().getSeparator(); + public static final FilesEntitlement EMPTY = new FilesEntitlement(List.of()); public enum Mode { @@ -160,7 +163,7 @@ public FileData withPlatform(Platform platform) { @Override public String description() { - return Strings.format("[%s] <%s>/%s%s", mode, baseDir, relativePath, exclusive ? " (exclusive)" : ""); + return Strings.format("[%s] <%s>%s%s%s", mode, baseDir, SEPARATOR, relativePath, exclusive ? " (exclusive)" : ""); } } @@ -192,7 +195,7 @@ public FileData withPlatform(Platform platform) { @Override public String description() { - return Strings.format("[%s] <%s>/<%s>%s", mode, baseDir, setting, exclusive ? " (exclusive)" : ""); + return Strings.format("[%s] <%s>%s<%s>%s", mode, baseDir, SEPARATOR, setting, exclusive ? " (exclusive)" : ""); } } diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtilsTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtilsTests.java index fb52d58c1c33c..8ee0ce3736a8d 100644 --- a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtilsTests.java +++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyUtilsTests.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Set; +import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.SEPARATOR; import static org.elasticsearch.test.LambdaMatchers.transformedMatch; import static org.hamcrest.Matchers.both; import static org.hamcrest.Matchers.containsInAnyOrder; @@ -317,6 +318,7 @@ public void testFormatPolicyWithMultipleScopes() { /** Test that we can format some simple files entitlement properly */ public void testFormatFilesEntitlement() { var pathAB = Path.of("/a/b"); + var pathCD = Path.of("c/d"); var policy = new Policy( "test-plugin", List.of( @@ -326,11 +328,7 @@ public void testFormatFilesEntitlement() { new FilesEntitlement( List.of( FilesEntitlement.FileData.ofPath(pathAB, FilesEntitlement.Mode.READ_WRITE), - FilesEntitlement.FileData.ofRelativePath( - Path.of("c/d"), - FilesEntitlement.BaseDir.DATA, - FilesEntitlement.Mode.READ - ) + FilesEntitlement.FileData.ofRelativePath(pathCD, FilesEntitlement.BaseDir.DATA, FilesEntitlement.Mode.READ) ) ) ) @@ -353,7 +351,17 @@ public void testFormatFilesEntitlement() { ) ); Set actual = PolicyUtils.getEntitlementsDescriptions(policy); - assertThat(actual, containsInAnyOrder("files [READ_WRITE] " + pathAB, "files [READ] /c/d", "files [READ] /")); + var pathABString = pathAB.toAbsolutePath().toString(); + var pathCDString = SEPARATOR + pathCD.toString(); + var pathSettingString = SEPARATOR + ""; + assertThat( + actual, + containsInAnyOrder( + "files [READ_WRITE] " + pathABString, + "files [READ] " + pathCDString, + "files [READ] " + pathSettingString + ) + ); } /** Test that we can format some simple files entitlement properly */