Showing posts with label XML Schema Validation. Show all posts
Showing posts with label XML Schema Validation. Show all posts

How to validate XML Schema in Rest Assured

  



What is XML Schema?

  • XML Schema Definition (XSD) is a way to define the structure, rules, and constraints of an XML document.
  • It ensures that an XML file follows a predefined format.

With XSD, you can define:
  • What elements and attributes can appear in the XML.
  • The order of elements.
  • Data types of values (e.g., string, integer, date).
  • Constraints like minimum/maximum occurrence of elements.

Why validate XML Schema in API Testing?
  • To make sure the API response is structurally correct.
  • To check if all mandatory tags exist and follow the schema rules.
  • To avoid unexpected errors when consuming the API in client applications.

How to Validate XML Schema in Rest Assured

1. Prepare the Schema File (XSD)
  • Have the XSD file ready which defines the expected XML structure.
  • This file acts as the reference for validation.

2. Send Request to API
  • Use Rest Assured to send the API request (GET/POST/etc.) to get the XML response.

3. Perform Schema Validation
  • Rest Assured provides built-in XML Schema Validator support.
  • You point Rest Assured to the XSD file.
  • Rest Assured then checks the actual XML response against the XSD schema.

4. Pass/Fail Validation
  • If the response XML matches the schema → test passes.
  • If there are mismatches (missing elements, wrong data types, invalid structure) → test fails.

Steps to Validate XML using XSD in Rest Assured

  • Use a GET API that returns XML.
  • Download or write a corresponding .xsd file to validate the structure.
  • Use RestAssured and XmlValidator from io.restassured.module.jsv package.
  • Assert that the XML response conforms to the schema.













Maven Dependency:

<dependencies>
    <!-- Rest Assured -->
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>5.4.0</version>
    </dependency>

    <!-- XML Path -->
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>xml-path</artifactId>
        <version>5.4.0</version>
    </dependency>

    <!-- XML Schema Validator -->
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>5.4.0</version>
    </dependency>
</dependencies>


You can visit: https://www.w3.org/2001/XMLSchema to know more about xml schemas

Sample XML XSD File (example.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="note">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="to" type="xs:string"/>
        <xs:element name="from" type="xs:string"/>
        <xs:element name="heading" type="xs:string"/>
        <xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>


API URL that returns XML

Example: https://www.w3schools.com/xml/note.xml









(It returns XML like below)

<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>




Java Code (Using Rest Assured)

import io.restassured.RestAssured;
import io.restassured.response.Response;

import java.io.File;

import static io.restassured.module.jsv.XmlSchemaValidator.matchesXsd;
import static org.hamcrest.MatcherAssert.assertThat;

public class XMLSchemaValidationTest {

    public static void main(String[] args) {
        // Set Base URI
        RestAssured.baseURI = "https://www.w3schools.com";

        // Make GET request
        Response response = RestAssured
                .given()
                .when()
                .get("/xml/note.xml")
                .then()
                .extract().response();

        // Print response (optional)
        System.out.println("Response XML:\n" + response.asString());

        // Validate response XML against XSD
        File schema = new File("src/test/resources/example.xsd"); // adjust path

        assertThat(response.asString(), matchesXsd(schema));
        System.out.println("XML Schema Validation Passed!");
    }
}



Code explanation:

(a) Set the base URI
(b) Create GET request for API: https://www.w3schools.com/xml/note.xml
(c) Print the response
(d) Validate response against XSD file: src/test/resources/example.xsd
(e)  Assert the response


Output

Below is the output of the given GET API in xml form

Response XML:
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
XML Schema Validation Passed!


Suggested Posts:

1. Test OAuth2 in RestAssured
2. Test Form Authentication in RestAssured
3. Test PUT API in RestAssured
4. Validate Response by Matchers API in RestAssured
5. Validate API Response from Database in RestAssured