Commit 255fe4f4 authored by Nisum's avatar Nisum

Sujatha added code to parse XML and post the file

parent 26e23354
package com.qa.stepdefinition;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.notNullValue;
import java.io.File;
import org.junit.Assert;
import com.qa.utilities.Util;
import com.qa.utilities.ParseXML;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.response.ValidatableResponse;
public class ParseXMLSteps{
private Response response;
private ValidatableResponse xml;
private Util util =new Util();
private ParseXML parsexml = new ParseXML();
@When("^employee XML Updated data is uploaded through webservice$")
public void employee_XML_Updated_data_is_uploaded_through_webservice() throws Throwable {
File reqPayload = new File(util.getValue("employee_XML_correct_req_payload_loc"));
parsexml.ReadXMLFileFromLocal(reqPayload);
parsexml.getXMLNodes();
parsexml.UpdateXMLContent();
response = util.post_XMLData_employee(reqPayload);
}
@Then("^verify the success status code (\\d+) is generated$")
public void verify_the_success_status_code_is_generated(int arg1) {
xml = response.then().statusCode(arg1);
int statusCode = response.getStatusCode();
Assert.assertEquals(statusCode, 200);
}
@Then("^verify success message is generated$")
public void verify_success_message_is_generated() {
String successCode = response.xmlPath().get("SuccessCode");
Assert.assertEquals( "Correct Success code was returned", successCode, "OPERATION_SUCCESS");
}
}
package com.qa.utilities;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.qa.utilities.Util;
public class ParseXML {
private Util util =new Util();
Document doc= null;
NodeList nList;
//Read the XML file
public void ReadXMLFileFromLocal(File file) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
doc = dBuilder.parse(file);
}
catch(Exception e)
{ e.printStackTrace();}
}
//Get the Root Tag Staff from the XML file
public void getXMLNodes()
{
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
nList = doc.getElementsByTagName("staff");
}
public void UpdateXMLContent()
{
//Read all the sub nodes from the root Node staff
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
//Prints all the sub nodes
Element eElement = (Element) nNode;
System.out.println("Staff id : " + eElement.getAttribute("id"));
System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
System.out.println("----------------------------");
//Updates the Firstname node
Node firstNameNode = eElement.getElementsByTagName("firstname").item(0).getFirstChild();
firstNameNode.setNodeValue("GHI");
try
{
//Writes the new content to the XML file
doc.getDocumentElement().normalize();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("/Users/nisum/eclipse-workspace/Cuke/Cucumber-SpringBoot-Nisum_Practise-Projects/ParseJSONProject/sample.xml"));
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
System.out.println("XML file updated successfully");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
}
Feature: To post Employee data
@sanity
Scenario: post empployee XML correct details and assert response
When employee XML Updated data is uploaded through webservice
Then verify the success status code 200 is generated
And verify success message is generated
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<company>
<staff id="1001">
<firstname>PRIYANKS</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
<staff id="2001">
<firstname>PRIYANKS</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
{
"MRData": {
"xmlns": "http://ergast.com/mrd/1.4",
"series": "f1",
"url": "http://ergast.com/api/f1/drivers/abecassis.json",
"limit": "30",
"offset": "0",
"total": "1",
"DriverTable": {
"driverId": "abecassis",
"Drivers": [
{
"driverId": "abecassis",
"url": "http://en.wikipedia.org/wiki/George_Abecassis",
"givenName": "George",
"familyName": "Abecassis",
"dateOfBirth": "1913-03-21",
"nationality": "British"
}
]
}
}
}
\ No newline at end of file
Feature: To post Employee data
@sanity
Scenario: post empployee XML correct details and assert response
When employee XML Updated data is uploaded through webservice
Then verify the success status code 200 is generated
And verify success message is generated
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<company>
<staff id="1001">
<firstname>PRIYANKS</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
<staff id="2001">
<firstname>PRIYANKS</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment