Issue
This is the first time for me using Gson and REST Assured, and I am really struggling to be honest. I need to verify that the content type is JSON and it is, but the test fails with the following message that you will see below. I am not writing all the imports that I have, if it is needed please tell me and I will provide them.
This is the code that I have written:
package Gson;
public class TestBase {
public RequestSpecification httpRequest;
public Response response;
public JsonPath jsonPathEvaluator;
@BeforeMethod
public void before_method(){
RestAssured.baseURI = "https://reqres.in/";
httpRequest = RestAssured.given();
}
@Test
public void test1(){
Reqres reqres = new Reqres("Olivera","tester");
httpRequest.header("Content-Type", "application/json");
httpRequest.body(new Gson().toJson(reqres));
response = httpRequest.post("/api/users");
jsonPathEvaluator = response.jsonPath();
Assert.assertEquals(response.statusCode(), 201);
Assert.assertEquals(response.header("Content-Type"),("application/json"));
Assert.assertEquals(jsonPathEvaluator.get("name").toString(),"Olivera");
}
}
And this is the response I get:
java.lang.AssertionError:
Expected :application/json
Actual :application/json; charset=utf-8
How can I fix this?
Solution
The problem is Rest-Assured automatically add charset=utf-8
, that may be returned back in response.
You can assert them as follow:
Assert.assertEquals(response.header("Content-Type"),("application/json; charset=utf-8"));
or to disable automatic charset=utf-8
in request header:
RestAssured.config = RestAssured.config(config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false));
Answered By - lucas-nguyen-17
Answer Checked By - Robin (JavaFixing Admin)