Skip to content

Commit bbde99f

Browse files
bsrikanMarkLogic Builder
authored andcommitted
Add test for entity services changes ported from 5.0.2
1 parent 2269fcb commit bbde99f

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed

marklogic-data-hub/src/test/java/com/marklogic/hub/entity/EntityServicesAlignmentTest.java

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package com.marklogic.hub.entity;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.node.ObjectNode;
35
import com.marklogic.client.DatabaseClient;
6+
import com.marklogic.client.FailedRequestException;
47
import com.marklogic.client.document.DocumentWriteSet;
58
import com.marklogic.client.document.GenericDocumentManager;
9+
import com.marklogic.client.eval.EvalResultIterator;
610
import com.marklogic.client.expression.PlanBuilder;
11+
import com.marklogic.client.io.DocumentMetadataHandle;
712
import com.marklogic.client.io.Format;
13+
import com.marklogic.client.io.InputStreamHandle;
814
import com.marklogic.client.io.StringHandle;
915
import com.marklogic.client.row.RowManager;
1016
import com.marklogic.hub.ApplicationConfig;
@@ -26,7 +32,9 @@
2632
import java.nio.file.Files;
2733
import java.nio.file.Path;
2834
import java.nio.file.Paths;
35+
import java.util.HashMap;
2936

37+
import static com.marklogic.client.io.DocumentMetadataHandle.Capability.*;
3038
import static org.junit.jupiter.api.Assertions.assertEquals;
3139
import static org.junit.jupiter.api.Assertions.assertTrue;
3240

@@ -60,11 +68,112 @@ private void installEntities() {
6068
orderDir.resolve("Order.entity.json").toFile());
6169
}
6270

71+
private void installInvalidEntities(GenericDocumentManager docMgr) {
72+
HashMap<String, String> entities = new HashMap<>();
73+
entities.put("/entities/bug38858.entity.json","es-alignment-test/invalid/bug38858.json");
74+
entities.put("/entities/invalid-bad-datatype.entity.json","es-alignment-test/invalid/invalid-bad-datatype.json");
75+
entities.put("/entities/invalid-bug38353.entity.json","es-alignment-test/invalid/invalid-bug38353.json");
76+
entities.put("/entities/invalid-bug40766.entity.json","es-alignment-test/invalid/invalid-bug40766.json");
77+
entities.put("/entities/invalid-bug40904.entity.json","es-alignment-test/invalid/invalid-bug40904.json");
78+
entities.put("/entities/invalid-bug43212.entity.json","es-alignment-test/invalid/invalid-bug43212.json");
79+
entities.put("/entities/invalid-casesensitive-datatype.entity.json","es-alignment-test/invalid/invalid-casesensitive-datatype.json");
80+
entities.put("/entities/invalid-datatype-ref-together.entity.json","es-alignment-test/invalid/invalid-datatype-ref-together.json");
81+
entities.put("/entities/invalid-db-prop-rangeindex.entity.json","es-alignment-test/invalid/invalid-db-prop-rangeindex.json");
82+
entities.put("/entities/invalid-definitions-empty.entity.json","es-alignment-test/invalid/invalid-definitions-empty.json");
83+
entities.put("/entities/invalid-info-notobject.entity.json","es-alignment-test/invalid/invalid-info-notobject.json");
84+
entities.put("/entities/invalid-missing-datatype.entity.json","es-alignment-test/invalid/invalid-missing-datatype.json");
85+
entities.put("/entities/invalid-missing-definitions.entity.json","es-alignment-test/invalid/invalid-missing-definitions.json");
86+
entities.put("/entities/invalid-missing-info.entity.json","es-alignment-test/invalid/invalid-missing-info.json");
87+
entities.put("/entities/invalid-missing-title.entity.json","es-alignment-test/invalid/invalid-missing-title.json");
88+
entities.put("/entities/invalid-missing-version.entity.json","es-alignment-test/invalid/invalid-missing-version.json");
89+
entities.put("/entities/invalid-multiple-pkey.entity.json","es-alignment-test/invalid/invalid-multiple-pkey.json");
90+
entities.put("/entities/invalid-no-prefix.entity.json","es-alignment-test/invalid/invalid-no-prefix.json");
91+
entities.put("/entities/invalid-no-uri.entity.json","es-alignment-test/invalid/invalid-no-uri.json");
92+
entities.put("/entities/invalid-primary-key-as-ref.entity.json","es-alignment-test/invalid/invalid-primary-key-as-ref.json");
93+
entities.put("/entities/invalid-range-index.entity.json","es-alignment-test/invalid/invalid-range-index.json");
94+
entities.put("/entities/invalid-required.entity.json","es-alignment-test/invalid/invalid-required.json");
95+
entities.put("/entities/invalid-same-nsURI.entity.json","es-alignment-test/invalid/invalid-same-nsURI.json");
96+
entities.put("/entities/invalid-same-prefix.entity.json","es-alignment-test/invalid/invalid-same-prefix.json");
97+
entities.put("/entities/invalid-title-whiteSpace.entity.json","es-alignment-test/invalid/invalid-title-whiteSpace.json");
98+
entities.put("/entities/invalid-uri.entity.json","es-alignment-test/invalid/invalid-uri.json");
99+
entities.put("/entities/no-primary-required.entity.json","es-alignment-test/invalid/no-primary-required.json");
100+
entities.put("/entities/no-primary-yes-required.entity.json","es-alignment-test/invalid/no-primary-yes-required.json");
101+
102+
DocumentWriteSet writeSet = docMgr.newWriteSet();
103+
entities.forEach((String path, String localPath) -> {
104+
System.out.println("VERIFYING ENTITY: "+ path.toUpperCase());
105+
InputStreamHandle handle = new InputStreamHandle(HubTestBase.class.getClassLoader().getResourceAsStream(localPath));
106+
DocumentMetadataHandle meta = new DocumentMetadataHandle()
107+
.withPermission(getDataHubAdminConfig().getFlowOperatorRoleName(), DocumentMetadataHandle.Capability.EXECUTE, UPDATE, READ)
108+
.withCollections("http://marklogic.com/entity-services/models");
109+
writeSet.add(path, meta, handle);
110+
111+
try{
112+
docMgr.write(writeSet);
113+
} catch (FailedRequestException e) {
114+
System.out.println(e.getMessage());
115+
}
116+
writeSet.clear();
117+
});
118+
119+
}
120+
63121
private HubModuleManager getPropsMgr() {
64122
String timestampFile = getDataHubAdminConfig().getHubProject().getUserModulesDeployTimestampFile();
65123
return new HubModuleManager(timestampFile);
66124
}
67125

126+
@Test
127+
public void testValidateBaseUri() {
128+
Assumptions.assumeFalse(getDataHubAdminConfig().getIsProvisionedEnvironment());
129+
String schema = "xdmp:unquote('{type: \"object\", properties: {\"baseUri\":{type:\"string\", " +
130+
"format:\"uri\"}}, required: [\"baseUri\"]}')";
131+
String mode = "'strict'";
132+
String[] results = new String[5];
133+
ObjectMapper mapper = new ObjectMapper();
134+
ObjectNode testInfos = mapper.createObjectNode();
135+
testInfos.put("1","object-node{'title': 'entity'}");
136+
testInfos.put("2","object-node{'baseUri': 'http:/example'}");
137+
testInfos.put("3","object-node{'baseUri': 'http//example'}");
138+
testInfos.put("4","object-node{'baseUri': 'http://example'}");
139+
testInfos.put("5","object-node{'baseUri': 'htt://example'}");
140+
141+
for(int i=1;i<=testInfos.size();i++) {
142+
String j = Integer.toString(i);
143+
String query = "xdmp:json-validate-node(" + testInfos.get(j).asText() + "," + schema + "," + mode + ")";
144+
try {
145+
EvalResultIterator resultIter = stagingClient.newServerEval().xquery(query).eval();
146+
if (resultIter.hasNext()) {
147+
results[i-1] = resultIter.next().getString();
148+
}
149+
} catch (FailedRequestException e) {
150+
results[i-1] = e.getMessage();
151+
}
152+
}
153+
154+
assertTrue(results[0].contains("XDMP-JSVALIDATEMISSING: Missing property: Required baseUri property not found"),"Expected Missing property, got "+results[0]);
155+
assertTrue(results[1].contains("XDMP-JSVALIDATEINVFORMAT: Invalid node value: Node value is not valid per format uri"),"Expected Invalid node value, got "+results[1]);
156+
assertTrue(results[2].contains("XDMP-JSVALIDATEINVFORMAT: Invalid node value: Node value is not valid per format uri"),"Expected Invalid node value, got "+results[2]);
157+
assertTrue(results[3].contains("{\"baseUri\":\"http://example\"}"),"Expected {\"baseUri\":\"http://example\"}, got "+results[3]);
158+
assertTrue(results[4].contains("{\"baseUri\":\"htt://example\"}"),"Expected {\"baseUri\":\"htt://example\"}, got "+results[4]);
159+
160+
}
161+
162+
@Test
163+
public void testInvalidEntity() {
164+
Assumptions.assumeFalse(getDataHubAdminConfig().getIsProvisionedEnvironment());
165+
166+
assertEquals(0, getStagingDocCount());
167+
assertEquals(0, getFinalDocCount());
168+
169+
installInvalidEntities(stagingDocMgr);
170+
installInvalidEntities(finalDocMgr);
171+
172+
assertEquals(2, getStagingDocCount());
173+
assertEquals(2, getFinalDocCount());
174+
175+
}
176+
68177
@Test
69178
public void testDeployTDEWithNoEntities() {
70179
getDataHub().clearDatabase(HubConfig.DEFAULT_FINAL_SCHEMAS_DB_NAME);

0 commit comments

Comments
 (0)