Skip to content

Commit 532907d

Browse files
committed
MLE-24171 TDE loader no longer improperly lowercases role names
1 parent b36d55f commit 532907d

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

ml-javaclient-util/src/main/java/com/marklogic/client/ext/schemasloader/impl/DefaultSchemasLoader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ private String buildTdeBatchInsertQuery(List<DocumentFile> documentFiles) {
152152
List<String> permissionList = new ArrayList<>();
153153
documentPermissions.keySet().forEach(key -> {
154154
Set<DocumentMetadataHandle.Capability> values = documentPermissions.get(key);
155-
values.forEach(value -> permissionList.add(String.format("xdmp.permission('%s', '%s')", key, value)));
155+
values.forEach(value -> permissionList.add(String.format("xdmp.permission('%s', '%s')", key, value.toString().toLowerCase())));
156156
});
157-
String permissions = "[".concat(permissionList.stream().map(String::toLowerCase).collect(Collectors.joining(", "))).concat("]");
157+
String permissions = "[".concat(permissionList.stream().collect(Collectors.joining(", "))).concat("]");
158158

159159
// Collections
160160
List<String> collectionsList = new ArrayList<>();

ml-javaclient-util/src/test/java/com/marklogic/client/ext/schemasloader/impl/LoadSchemasTest.java

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@
1212

1313
import java.nio.file.Paths;
1414
import java.util.List;
15+
import java.util.stream.Stream;
1516

16-
import static org.junit.jupiter.api.Assertions.assertEquals;
17-
import static org.junit.jupiter.api.Assertions.assertThrows;
18-
import static org.junit.jupiter.api.Assertions.assertTrue;
17+
import static org.junit.jupiter.api.Assertions.*;
1918

20-
public class LoadSchemasTest extends AbstractSchemasTest {
19+
class LoadSchemasTest extends AbstractSchemasTest {
2120

2221
@Test
23-
public void test() {
22+
void test() {
2423
DefaultSchemasLoader loader = new DefaultSchemasLoader(client, null);
2524
RestBatchWriter writer = (RestBatchWriter) loader.getBatchWriter();
2625
assertEquals(1, writer.getThreadCount(), "Should default to 1 so that any error from loading a document " +
@@ -42,7 +41,7 @@ public void test() {
4241
}
4342

4443
@Test
45-
public void testTemplateBatchInsert() {
44+
void testTemplateBatchInsert() {
4645
DefaultSchemasLoader loader = new DefaultSchemasLoader(client, newContentClient());
4746
List<DocumentFile> files = loader.loadSchemas(Paths.get("src", "test", "resources", "good-schemas", "originals").toString());
4847
assertEquals(2, files.size());
@@ -53,21 +52,20 @@ public void testTemplateBatchInsert() {
5352
assertTrue(uris.contains("/tde/good-schema.json"));
5453
assertTrue(uris.contains("/tde/good-schema.xml"));
5554

56-
DocumentMetadataHandle handle = helper.getMetadata("/tde/good-schema.json");
57-
assertTrue(handle.getPermissions().get("rest-reader").contains(DocumentMetadataHandle.Capability.READ),
58-
"Permissions defined in permissions.properties should be applied on the document");
59-
assertTrue(handle.getPermissions().get("rest-writer").contains(DocumentMetadataHandle.Capability.UPDATE),
60-
"Permissions defined in permissions.properties should be applied on the document");
6155

62-
handle = helper.getMetadata("/tde/good-schema.xml");
63-
assertTrue(handle.getPermissions().get("rest-reader").contains(DocumentMetadataHandle.Capability.READ),
64-
"Permissions defined in permissions.properties should be applied on the document");
65-
assertTrue(handle.getPermissions().get("rest-writer").contains(DocumentMetadataHandle.Capability.UPDATE),
66-
"Permissions defined in permissions.properties should be applied on the document");
56+
Stream.of("/tde/good-schema.json", "/tde/good-schema.xml").forEach(uri -> {
57+
DocumentMetadataHandle.DocumentPermissions perms = helper.getMetadata(uri).getPermissions();
58+
String message = "Permissions defined in permissions.properties should be applied on the document";
59+
assertTrue(perms.get("rest-reader").contains(DocumentMetadataHandle.Capability.READ), message);
60+
assertTrue(perms.get("rest-writer").contains(DocumentMetadataHandle.Capability.UPDATE), message);
61+
assertTrue(perms.get("Mixed-CASE").contains(DocumentMetadataHandle.Capability.READ),
62+
"This feature from its inception through 6.0.0 was improperly lower-casing not just the " +
63+
"capability but also the role name. Role names should not be lower-cased.");
64+
});
6765
}
6866

6967
@Test
70-
public void invalidClientAndNoFilesToLoad() {
68+
void invalidClientAndNoFilesToLoad() {
7169
DefaultSchemasLoader loader = new DefaultSchemasLoader(newClient("invalid-database-doesnt-exist"), null);
7270
List<DocumentFile> files = loader.loadSchemas(Paths.get("src", "test", "resources", "no-schemas").toString());
7371
assertEquals(0, files.size(),
@@ -76,7 +74,7 @@ public void invalidClientAndNoFilesToLoad() {
7674
}
7775

7876
@Test
79-
public void invalidClientWithFilesToLoad() {
77+
void invalidClientWithFilesToLoad() {
8078
DefaultSchemasLoader loader = new DefaultSchemasLoader(newClient("invalid-database-doesnt-exist"), null);
8179
FailedRequestException ex = assertThrows(FailedRequestException.class,
8280
() -> loader.loadSchemas(Paths.get("src", "test", "resources", "good-schemas").toString()));
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
*=rest-reader,read,rest-writer,update
1+
*=rest-reader,read,rest-writer,update,Mixed-CASE,read
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"role-name": "Mixed-CASE",
3+
"description": "Verifies that role names aren't improperly lowercased by any ml-gradle feature."
4+
}

0 commit comments

Comments
 (0)