Научитесь отправлять запросы с телом XML-запроса и проверять ответ с помощью API с поддержкой REST.
1. Путем анализа пользовательского объекта в XML
1.1. Анализ объекта Java в XML
Если мы можем воспользоваться помощью библиотек, таких как Jackson или JAXB, для преобразования пользовательского объекта в XML String, это должно быть предпочтительным способом. Это помогает сделать код более читаемым и управляемым.
Например, если у нас есть API, который принимает следующий запрос:
HTTP POST /users<user><name>lokesh</name><email>admin@howtodoinjava.com</email><gender>male</gender><status>active</status></user>
Мы можем создать Java-объект UserObject и аннотировать его аннотациями Джексона, чтобы он преобразовывался в нужную XML-строку.
@JacksonXmlRootElement(localName = "user")class UserObject {@JsonInclude(JsonInclude.Include.NON_NULL)private Integer id;private String name;private String email;private String gender;private String status;}
Теперь мы можем использовать метод Джексона XmlMapper.writeValueAsString() для получения строки XML для экземпляра UserDTO. Это сгенерирует XML, как указано ранее.
UserObject newUser = new UserObject();newUser.setName("lokesh");newUser.setEmail("admin@howtodoinjava.com");newUser.setGender("male");newUser.setStatus("active");String newUserXml = new XmlMapper().writeValueAsString(newUser);
1.2. Отправка запроса с гарантией REST
Отправка тела запроса XML очень проста. Нам нужно установить тип контента на «application/xml»(или любой другой пользовательский тип носителя, если таковой имеется), а затем передать строку XML в метод given().body(xml).
Полный пример отправки XML-запроса в POST API:
@Testpublic void createUserWithJSONObject_thenSuccess()throws JSONException, JsonProcessingException {UserObject newUser = new UserObject();newUser.setName("lokesh");newUser.setEmail("admin@howtodoinjava.com");newUser.setGender("male");newUser.setStatus("active");String newUserXml = new XmlMapper().writeValueAsString(newUser);given().body(newUserXml).contentType("application/xml").queryParam("access-token", "xxxx").when().post("/users").then().statusCode(201).body("id", notNullValue()).body("name", equalTo("lokesh")).body("gender", equalTo("male")).body("status", equalTo("active")).body("email", equalTo("admin@howtodoinjava.com")).log().all();}
2. Чтение XML из файла
При автоматизированном тестировании мы могли не создать объекты DTO, и нам может потребоваться полагаться на жестко закодированные строки XML. В этом случае создание таких строк XML в отдельных файлах XML, специфичных для API, всегда лучше.
Мы читаем XML-файл для каждого API и публикуем его содержимое в API. В этом подходе отличается только получение XML-строки, а вызов API такой же, как в предыдущем примере.
File newUserXmlFile = new File("src/test/resources/requests/newUser.xml");given().body(newUserXmlFile)....when().post("/users").then()...;
3. Заключение
Этот короткий урок научил нас передавать XML-запросы в REST API с использованием REST-assured. Мы научились получать строки XML-запросов из пользовательских объектов Java или XML-файлов в файловой системе. Затем мы научились передавать XML в API и проверять ответ.