How to use XpathMessageValidationContext class of com.consol.citrus.validation.xml package

Best Citrus code snippet using com.consol.citrus.validation.xml.XpathMessageValidationContext

Source:XhtmlXpathMessageValidatorTest.java Github

copy

Full Screen

...23import com.consol.citrus.messaging.Consumer;24import com.consol.citrus.testng.AbstractTestNGUnitTest;25import com.consol.citrus.validation.builder.PayloadTemplateMessageBuilder;26import com.consol.citrus.validation.context.ValidationContext;27import com.consol.citrus.validation.xml.XpathMessageValidationContext;28import org.mockito.Mockito;29import org.testng.annotations.BeforeMethod;30import org.testng.annotations.Test;31import java.util.ArrayList;32import java.util.List;33import static org.mockito.Mockito.*;34/**35 * @author Christoph Deppisch36 */37public class XhtmlXpathMessageValidatorTest extends AbstractTestNGUnitTest {38 private Endpoint endpoint = Mockito.mock(Endpoint.class);39 private Consumer consumer = Mockito.mock(Consumer.class);40 private EndpointConfiguration endpointConfiguration = Mockito.mock(EndpointConfiguration.class);41 private ReceiveMessageAction receiveMessageBean;42 @Override43 @BeforeMethod44 public void prepareTest() {45 super.prepareTest();46 47 receiveMessageBean = new ReceiveMessageAction();48 receiveMessageBean.setEndpoint(endpoint);49 }50 51 @Test52 @SuppressWarnings({ "unchecked", "rawtypes" })53 public void testXhtmlXpathValidation() throws Exception {54 reset(endpoint, consumer, endpointConfiguration);55 when(endpoint.createConsumer()).thenReturn(consumer);56 when(endpoint.getEndpointConfiguration()).thenReturn(endpointConfiguration);57 when(endpointConfiguration.getTimeout()).thenReturn(5000L);58 Message message = new DefaultMessage("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"org/w3/xhtml/xhtml1-strict.dtd\">"59 + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"60 + "<head>"61 + "<title>Sample XHTML content</title>"62 + "</head>"63 + "<body>"64 + "<p>Hello TestFramework!</p>"65 + "<form action=\"/\">"66 + "<input name=\"foo\" type=\"text\" />"67 + "</form>"68 + "</body>"69 + "</html>");70 when(consumer.receive(any(TestContext.class), anyLong())).thenReturn(message);71 when(endpoint.getActor()).thenReturn(null);72 PayloadTemplateMessageBuilder controlMessageBuilder = new PayloadTemplateMessageBuilder();73 XpathMessageValidationContext validationContext = new XpathMessageValidationContext();74 validationContext.getXpathExpressions().put("/xh:html/xh:head/xh:title", "Sample XHTML content");75 validationContext.getXpathExpressions().put("//xh:p", "Hello TestFramework!");76 validationContext.getNamespaces().put("xh", "http://www.w3.org/1999/xhtml");77 receiveMessageBean.setMessageBuilder(controlMessageBuilder);78 controlMessageBuilder.setPayloadData("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"org/w3/xhtml/xhtml1-strict.dtd\">"79 + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"80 + "<head>"81 + "<title>Sample XHTML content</title>"82 + "</head>"83 + "<body>"84 + "<p>Hello TestFramework!</p>"85 + "<form action=\"/\">"86 + "<input name=\"foo\" type=\"text\" />"87 + "</form>"88 + "</body>"89 + "</html>");90 List<ValidationContext> validationContexts = new ArrayList<>();91 validationContexts.add(validationContext);92 receiveMessageBean.setValidationContexts(validationContexts);93 receiveMessageBean.setMessageType(MessageType.XHTML.name());94 receiveMessageBean.execute(context);95 }96 @Test(expectedExceptions = ValidationException.class)97 @SuppressWarnings({ "unchecked", "rawtypes" })98 public void testXhtmlXpathValidationFailed() throws Exception {99 reset(endpoint, consumer, endpointConfiguration);100 when(endpoint.createConsumer()).thenReturn(consumer);101 when(endpoint.getEndpointConfiguration()).thenReturn(endpointConfiguration);102 when(endpointConfiguration.getTimeout()).thenReturn(5000L);103 Message message = new DefaultMessage("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"org/w3/xhtml/xhtml1-strict.dtd\">"104 + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"105 + "<head>"106 + "<title>Sample XHTML content</title>"107 + "</head>"108 + "<body>"109 + "<h1>Hello TestFramework!</h1>"110 + "</body>"111 + "</html>");112 when(consumer.receive(any(TestContext.class), anyLong())).thenReturn(message);113 when(endpoint.getActor()).thenReturn(null);114 PayloadTemplateMessageBuilder controlMessageBuilder = new PayloadTemplateMessageBuilder();115 XpathMessageValidationContext validationContext = new XpathMessageValidationContext();116 validationContext.getXpathExpressions().put("//xh:h1", "Failed!");117 validationContext.getNamespaces().put("xh", "http://www.w3.org/1999/xhtml");118 receiveMessageBean.setMessageBuilder(controlMessageBuilder);119 controlMessageBuilder.setPayloadData("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"org/w3/xhtml/xhtml1-strict.dtd\">"120 + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"121 + "<head>"122 + "<title>Sample XHTML content</title>"123 + "</head>"124 + "<body>"125 + "<h1>Hello TestFramework!</h1>"126 + "</body>"127 + "</html>");128 List<ValidationContext> validationContexts = new ArrayList<>();129 validationContexts.add(validationContext);...

Full Screen

Full Screen

Source:XpathMessageValidator.java Github

copy

Full Screen

...37 * Message validator evaluates set of XPath expressions on message payload and checks that values are as expected.38 * @author Christoph Deppisch39 * @since 2.340 */41public class XpathMessageValidator extends AbstractMessageValidator<XpathMessageValidationContext> {42 /** Logger */43 private static Logger log = LoggerFactory.getLogger(XpathMessageValidator.class);44 @Autowired(required = false)45 private NamespaceContextBuilder namespaceContextBuilder = new NamespaceContextBuilder();46 @Override47 public void validateMessage(Message receivedMessage, Message controlMessage, TestContext context, XpathMessageValidationContext validationContext) throws ValidationException {48 if (CollectionUtils.isEmpty(validationContext.getXpathExpressions())) { return; }49 if (receivedMessage.getPayload() == null || !StringUtils.hasText(receivedMessage.getPayload(String.class))) {50 throw new ValidationException("Unable to validate message elements - receive message payload was empty");51 }52 log.debug("Start XPath element validation ...");53 Document received = XMLUtils.parseMessagePayload(receivedMessage.getPayload(String.class));54 NamespaceContext namespaceContext = namespaceContextBuilder.buildContext(55 receivedMessage, validationContext.getNamespaces());56 for (Map.Entry<String, Object> entry : validationContext.getXpathExpressions().entrySet()) {57 String xPathExpression = entry.getKey();58 Object expectedValue = entry.getValue();59 xPathExpression = context.replaceDynamicContentInString(xPathExpression);60 Object xPathResult;61 if (XPathUtils.isXPathExpression(xPathExpression)) {62 XPathExpressionResult resultType = XPathExpressionResult.fromString(63 xPathExpression, XPathExpressionResult.NODE);64 xPathExpression = XPathExpressionResult.cutOffPrefix(xPathExpression);65 //Give ignore elements the chance to prevent the validation in case result type is node66 if (resultType.equals(XPathExpressionResult.NODE) &&67 XmlValidationUtils.isElementIgnored(XPathUtils.evaluateAsNode(received, xPathExpression, namespaceContext),68 validationContext.getIgnoreExpressions(),69 namespaceContext)) {70 continue;71 }72 xPathResult = XPathUtils.evaluate(received,73 xPathExpression,74 namespaceContext,75 resultType);76 } else {77 Node node = XMLUtils.findNodeByName(received, xPathExpression);78 if (node == null) {79 throw new UnknownElementException(80 "Element ' " + xPathExpression + "' could not be found in DOM tree");81 }82 if (XmlValidationUtils.isElementIgnored(node, validationContext.getIgnoreExpressions(), namespaceContext)) {83 continue;84 }85 xPathResult = getNodeValue(node);86 }87 if (expectedValue instanceof String) {88 //check if expected value is variable or function (and resolve it, if yes)89 expectedValue = context.replaceDynamicContentInString(String.valueOf(expectedValue));90 }91 //do the validation of actual and expected value for element92 ValidationUtils.validateValues(xPathResult, expectedValue, xPathExpression, context);93 if (log.isDebugEnabled()) {94 log.debug("Validating element: " + xPathExpression + "='" + expectedValue + "': OK.");95 }96 }97 log.info("XPath element validation successful: All elements OK");98 }99 @Override100 protected Class<XpathMessageValidationContext> getRequiredValidationContextType() {101 return XpathMessageValidationContext.class;102 }103 @Override104 public boolean supportsMessageType(String messageType, Message message) {105 return new DomXmlMessageValidator().supportsMessageType(messageType, message);106 }107 /**108 * Resolves an XML node's value109 * @param node110 * @return node's string value111 */112 private String getNodeValue(Node node) {113 if (node.getNodeType() == Node.ELEMENT_NODE && node.getFirstChild() != null) {114 return node.getFirstChild().getNodeValue();115 } else {...

Full Screen

Full Screen

Source:HealthcheckTest.java Github

copy

Full Screen

...9import com.consol.citrus.testng.spring.TestNGCitrusSpringSupport;10import static com.consol.citrus.actions.EchoAction.Builder.echo;11import static com.consol.citrus.actions.ExecuteSQLAction.Builder.sql;12import static com.consol.citrus.http.actions.HttpActionBuilder.http;13import static com.consol.citrus.validation.xml.XpathMessageValidationContext.Builder.xpath;14/**15 * This is a sample Java DSL Citrus integration test.16 *17 * @author Citrus18 */19@Test20public class HealthcheckTest extends TestNGCitrusSpringSupport {21 @Autowired22 private HttpClient secondHandApiEndpoint;23 @Autowired24 private BasicDataSource secondHandApiDataSource;25 @CitrusTest26 public void healthcheck() {27 description("WENN kein Item in der Datenbank vorhanden ist " +...

Full Screen

Full Screen

XpathMessageValidationContext

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.dsl.testng;2import com.consol.citrus.annotations.CitrusTest;3import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;4import com.consol.citrus.validation.xml.XpathMessageValidationContext;5import org.springframework.http.HttpStatus;6import org.testng.annotations.Test;7public class XpathMessageValidationContextTest extends TestNGCitrusTestDesigner {8 public void xpathMessageValidationContextTest() {9 http()10 .client("httpClient")11 .send()12 .post("/test")13 .payload("<testMessage><text>Hello Citrus!</text></testMessage>");14 http()15 .client("httpClient")16 .receive()17 .response(HttpStatus.OK)18 .payload("<testMessage><text>Hello Citrus!</text></testMessage>")19 .validationContext(new XpathMessageValidationContext().ignore("/testMessage/text"));20 }21}22package com.consol.citrus.dsl.testng;23import com.consol.citrus.annotations.CitrusTest;24import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;25import com.consol.citrus.validation.xml.XpathMessageValidationContext;26import org.springframework.http.HttpStatus;27import org.testng.annotations.Test;28public class XpathMessageValidationContextTest extends TestNGCitrusTestDesigner {29 public void xpathMessageValidationContextTest() {30 http()31 .client("httpClient")32 .send()33 .post("/test")34 .payload("<testMessage><text>Hello Citrus!</text></testMessage>");35 http()36 .client("httpClient")37 .receive()38 .response(HttpStatus.OK)39 .payload("<testMessage><text>Hello Citrus!</text></testMessage>")40 .validationContext(new XpathMessageValidationContext().ignore("/testMessage/text").ignore("text"));41 }42}43package com.consol.citrus.dsl.testng;44import com.consol.citrus.annotations.CitrusTest;45import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;46import com.consol.citrus.validation.xml.XpathMessageValidationContext;

Full Screen

Full Screen

XpathMessageValidationContext

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.dsl.runner.TestRunner;2import com.consol.citrus.dsl.builder.HttpServerActionBuilder;3import com.consol.citrus.dsl.builder.HttpClientActionBuilder;4import com.consol.citrus.dsl.builder.SendActionBuilder;5import com.consol.citrus.dsl.builder.ReceiveActionBuilder;6import com.consol.citrus.dsl.builder.HttpActionBuilder;7import com.consol.citrus.dsl.builder.BuilderSupport;8import com.consol.citrus.dsl.builder.Builder;

Full Screen

Full Screen

XpathMessageValidationContext

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.annotations.CitrusTest;2import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;3import com.consol.citrus.message.XpathMessageValidationContext;4import org.springframework.core.io.ClassPathResource;5import org.testng.annotations.Test;6public class 4 extends TestNGCitrusTestDesigner {7public void 4() {8send("jms:queue:inbound.queue")9.message()10"</ns0:Envelope>");11receive("jms:queue:outbound.queue")12.message()13"</ns0:Envelope>");14receive("jms:queue:outbound.queue")15.message()

Full Screen

Full Screen

XpathMessageValidationContext

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.samples;2import com.consol.citrus.dsl.builder.HttpClientActionBuilder;3import com.consol.citrus.dsl.builder.HttpServerActionBuilder;4import com.consol.citrus.dsl.testng.TestNGCitrusTestBuilder;5import com.consol.citrus.message.MessageType;6import com.consol.citrus.validation.xml.XpathMessageValidationContext;7import org.testng.annotations.Test;8import java.util.Collections;9public class 4 extends TestNGCitrusTestBuilder {10 public void 4() {11 variable("user", "John");12 variable("password", "1234");13 variable("message", "Hello John!");14 http(httpServer -> httpServer15 .server("httpServer")16 .receive()17 .post()18 "<ns0:User>${user}</ns0:User>" +19 "<ns0:Password>${password}</ns0:Password>" +20 .messageType(MessageType.XML.name())21 .extractFromHeader("citrus_jms_messageId", "correlation_id")22 .extractFromHeader("citrus_jms_correlationId", "correlation_id"));23 http(httpClient -> httpClient24 .client("httpServer")25 .send()26 .post()27 "<ns0:Greeting>${message}</ns0:Greeting>" +28 .messageType(MessageType.XML.name())29 .header("citrus_jms_messageId", "${correlation_id}")30 .header("citrus_jms_correlationId", "${correlation_id}"));31 http(httpServer -> httpServer32 .server("httpServer")33 .receive()34 .get()35 .messageType(MessageType.PLAINTEXT.name())36 .header("citrus_jms_correlationId", "${correlation_id}")37 .extractFromHeader("citrus_jms_messageId", "correlation_id"));38 http(httpClient -> httpClient39 .client("httpServer")40 .send()41 .get()42 .messageType(MessageType.PLAINTEXT

Full Screen

Full Screen

XpathMessageValidationContext

Using AI Code Generation

copy

Full Screen

1public void testXpathMessageValidationContext() {2 XpathMessageValidationContext validationContext = new XpathMessageValidationContext();3 validationContext.setXpathExpressions(Collections.singletonMap("/testMessage/text()", "Hello Citrus!"));4 validationContext.setSchemaValidationEnabled(false);5 validationContext.setSchema("classpath:com/consol/citrus/validation/xml/test.xsd");6 validationContext.setSchemaRepository("classpath:com/consol/citrus/validation/xml/schema-repository");7 validationContext.setSchemaValidationEnabled(false);8 validationContext.setIgnoreNamespaces(true);9 validationContext.setIgnoreWhitespace(true);10 validationContext.setIgnoreComments(true);11 validationContext.setIgnoreDtd(true);12 validationContext.setIgnoreXmlDeclaration(true);13 validationContext.setIgnoreEmptyElements(true);14 validationContext.setIgnoreXPathNamespacePrefixes(true);15 validationContext.setIgnoreXPathComments(true);16 validationContext.setIgnoreXPathProcessingInstructions(true);17 validationContext.setIgnoreXPathWhitespace(true);18 validationContext.setIgnoreXPathTextAndCDATA(true);19 validationContext.setIgnoreXPathAttributeOrder(true);20 validationContext.setIgnoreXPathExtraAttributes(true);21 validationContext.setIgnoreXPathExtraNamespaceDeclarations(true);22 validationContext.setIgnoreXPathNamespacePrefixes(true);23 validationContext.setIgnoreXPathProcessingInstructions(true);24 validationContext.setIgnoreXPathTextAndCDATA(true);25 validationContext.setIgnoreXPathAttributeOrder(true);26 validationContext.setIgnoreXPathExtraAttributes(true);27 validationContext.setIgnoreXPathExtraNamespaceDeclarations(true);28 validationContext.setIgnoreXPathNamespacePrefixes(true);29 validationContext.setIgnoreXPathProcessingInstructions(true);30 validationContext.setIgnoreXPathTextAndCDATA(true);31 validationContext.setIgnoreXPathAttributeOrder(true);32 validationContext.setIgnoreXPathExtraAttributes(true);33 validationContext.setIgnoreXPathExtraNamespaceDeclarations(true);34 validationContext.setIgnoreXPathNamespacePrefixes(true);35 validationContext.setIgnoreXPathProcessingInstructions(true);36 validationContext.setIgnoreXPathTextAndCDATA(true);37 validationContext.setIgnoreXPathAttributeOrder(true);38 validationContext.setIgnoreXPathExtraAttributes(true);39 validationContext.setIgnoreXPathExtraNamespaceDeclarations(true);40 validationContext.setIgnoreXPathNamespacePrefixes(true);41 validationContext.setIgnoreXPathProcessingInstructions(true);

Full Screen

Full Screen

XpathMessageValidationContext

Using AI Code Generation

copy

Full Screen

1public void testXPathValidation() {2 run(new TestAction() {3 public void doExecute(TestContext context) {4 XpathMessageValidationContext validationContext = new XpathMessageValidationContext();5 validationContext.setXpathExpression("/TestMessage/Text");6 validationContext.setExpectedValue("Hello Citrus!");7 context.setValidationContext(validationContext);8 }9 });10}11public void testXPathValidation() {12 run(new TestAction() {13 public void doExecute(TestContext context) {14 XpathMessageValidationContext validationContext = new XpathMessageValidationContext();15 validationContext.setXpathExpression("/TestMessage/Text");16 validationContext.setExpectedValue("Hello Citrus!");17 context.setValidationContext(validationContext);18 }19 });20}21public void testXPathValidation() {22 run(new TestAction() {23 public void doExecute(TestContext context) {24 XpathMessageValidationContext validationContext = new XpathMessageValidationContext();25 validationContext.setXpathExpression("/TestMessage/Text");26 validationContext.setExpectedValue("Hello Citrus!");27 context.setValidationContext(validationContext);28 }29 });30}31public void testXPathValidation() {32 run(new TestAction() {33 public void doExecute(TestContext context) {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Citrus automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used methods in XpathMessageValidationContext

Test Your Web Or Mobile Apps On 3000+ Browsers

Signup for free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful