@Test public void testXMLRuleDefinitions() throws SAXException, IOException, ForbiddenUserException, FailedRequestException, ResourceNotFoundException { File ruleFile = new File("src/test/resources/rule1.xml"); FileHandle ruleHandle = new FileHandle(ruleFile); ruleManager.writeRule("javatestrule", ruleHandle); assertTrue(ruleManager.exists("javatestrule")); RuleDefinition def = ruleManager.readRule("javatestrule", new RuleDefinition()); assertEquals("javatestrule", def.getName()); assertXMLEqual( "Search element round-tripped - structured query and options", "<search:search xmlns:search=\"http://marklogic.com/appservices/search\">" + "<search:qtext>favorited:true</search:qtext>" + "<search:options xmlns:search=\"http://marklogic.com/appservices/search\">" + "<search:constraint name=\"favorited\">" + "<search:value>" + "<search:element ns=\"\" name=\"favorited\" />" + "</search:value>" + "</search:constraint>" + "</search:options>" + "</search:search>", new String( def.exportQueryDefinition(new BytesHandle()).get())); ruleManager.delete("javatestrule"); }
@Test public void testXMLRuleDefinitionsWithStructuredQuery() throws SAXException, IOException, ForbiddenUserException, FailedRequestException, ResourceNotFoundException { RuleDefinition defWithImport = new RuleDefinition(); defWithImport.setName("javatestrule2"); File ruleFile = new File("src/test/resources/structured-query.xml"); FileHandle queryHandle = new FileHandle(ruleFile); defWithImport.importQueryDefinition(queryHandle); ruleManager.writeRule(defWithImport); assertTrue(ruleManager.exists("javatestrule2")); RuleDefinition def = ruleManager.readRule("javatestrule2", new RuleDefinition()); assertEquals("javatestrule2", def.getName()); assertXMLEqual( "Search element round-tripped - structured query and options", "<search:search xmlns:search=\"http://marklogic.com/appservices/search\">" + "<search:query>" + "<search:term-query><search:text>foo</search:text></search:term-query>" + "</search:query>" + "</search:search>", new String( def.exportQueryDefinition(new BytesHandle()).get())); ruleManager.delete("javatestrule"); }
"<search:search xmlns:search=\"http://marklogic.com/appservices/search\"><search:qtext>favorited:true</search:qtext></search:search>", new String(exportedDef.get())); ruleManager.delete("javatestrule");
@Test public void testJSONRuleDefinitions() throws SAXException, IOException, ForbiddenUserException, FailedRequestException, ResourceNotFoundException { File ruleFile = new File("src/test/resources/rule1.json"); FileHandle ruleHandle = new FileHandle(ruleFile); ruleHandle.setFormat(Format.JSON); ruleManager.writeRule("javatestrule", ruleHandle); assertTrue(ruleManager.exists("javatestrule")); RuleDefinition def = ruleManager.readRule("javatestrule", new RuleDefinition()); assertEquals("javatestrule", def.getName()); assertXMLEqual( "Search element round-tripped - structured query and options", "<search:search xmlns:search=\"http://marklogic.com/appservices/search\">" + "<search:qtext>favorited:true</search:qtext>" + "<search:options xmlns:search=\"http://marklogic.com/appservices/search\">" + "<search:constraint name=\"favorited\">" + "<search:value>" + "<search:element ns=\"\" name=\"favorited\" />" + "</search:value>" + "</search:constraint>" + "</search:options>" + "</search:search>", new String( def.exportQueryDefinition(new BytesHandle()).get())); BytesHandle bHandle = ruleManager.readRule("javatestrule", new BytesHandle().withFormat(Format.JSON)); assertEquals( "{\"rule\":{\"name\":\"javatestrule\", \"description\":\"rule to demonstrate REST alerting\", \"search\":{\"qtext\":[\"favorited:true\"], \"options\":{\"constraint\":[{\"name\":\"favorited\", \"value\":{\"element\":{\"ns\":\"\", \"name\":\"favorited\"}}}]}}, \"rule-metadata\":null}}", new String(bHandle.get())); ruleManager.delete("javatestrule"); }