NỘI DUNG BÀI HỌC
✳️Sử dụng DELETE method trong REST Assured
✅ Sử dụng PATCH method trong REST Assured
Để sử dụng phương thức PATCH thì các bạn gọi hàm request.patch() khi gửi một request.
Ví dụ testing api Update User nhưng chúng ta chỉ cần cập nhật một phần dữ liệu thôi. Thì khi đó dùng hàm patch() thay vì dùng hàm put()
https://api.anhtester.com/swagger/index.html#/User%20Management/updateUserPatch
Đầu tiên tạo class PatchUserPOJO để khai báo các fields cần update. Ví dụ mình bỏ 2 fields username và password ra.
package com.anhtester.model;
public class PatchUserPOJO {
private String firstName;
private String lastName;
private String email;
private String phone;
private int userStatus;
public PatchUserPOJO(String firstName, String lastName, String email, String phone, int userStatus) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phone = phone;
this.userStatus = userStatus;
}
public PatchUserPOJO() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public int getUserStatus() {
return userStatus;
}
public void setUserStatus(int userStatus) {
this.userStatus = userStatus;
}
}
Tạo test case tiến hành test update user với hàm patch()
@Test
public void testUpdateUser_PATCH() {
//Chuẩn bị data cho edit user
PatchUserPOJO patchUserPOJO = new PatchUserPOJO();
patchUserPOJO.setFirstName("Bối");
patchUserPOJO.setLastName("Bối");
patchUserPOJO.setEmail("boiboi1@email.com");
patchUserPOJO.setPhone("0123456789");
patchUserPOJO.setUserStatus(1);
Gson gson = new Gson();
RequestSpecification request = given();
request.baseUri("https://api.anhtester.com/api")
.accept("application/json")
.contentType("application/json")
.header("Authorization", "Bearer " + TOKEN)
.body(gson.toJson(patchUserPOJO));
Response response = request.when().patch("/user/2");
response.prettyPrint();
response.then().statusCode(200);
String message = response.getBody().path("message");
Assert.assertEquals(message, "Success", "The message not match.");
}
Kết quả:
{
"message": "Success",
"response": {
"id": 2,
"username": "myduyen4",
"firstName": "Bối",
"lastName": "Bối",
"email": "boiboi1@email.com",
"phone": "0123456789",
"userStatus": 1
}
}
Yeah các bạn thấy là nó chỉ cập nhật các giá trị cho những fields mà mình chỉ định, còn 2 fields username và password nó không cập nhật nhé.
Nhớ gọi hàm loginUser() để lấy giá trị TOKEN trước nhé.
//Khai báo biến toàn tục TOKEN để lưu trữ từ hàm Login
String TOKEN = "";
@BeforeMethod
public void loginUser() {
LoginPOJO loginPOJO = new LoginPOJO("anhtester", "Demo@123");
Gson gson = new Gson();
RequestSpecification request = given();
request.baseUri("https://api.anhtester.com/api")
.accept("application/json")
.contentType("application/json")
.body(gson.toJson(loginPOJO));
Response response = request.when().post("/login");
response.prettyPrint();
response.then().statusCode(200);
//Lưu giá trị token vào biến TOKEN nhé
TOKEN = response.getBody().path("token");
System.out.println(TOKEN);
}
Các bạn có thể mang hàm loginUser() sang class riêng xong extends lại. Ví dụ BaseTest chẳng hạn.
Tạo class chung chứa biến TOKEN dạng static để dễ gọi dùng.
🔆 Tạo class riêng để lưu TOKEN toàn cục
+ Class TokenGlobal:
package com.anhtester.globals;
public class TokenGlobal {
public static String TOKEN;
}
+ Class BaseTest:
package com.anhtester.common;
import com.anhtester.globals.TokenGlobal;
import com.anhtester.model.LoginPOJO;
import com.google.gson.Gson;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.annotations.BeforeMethod;
import static io.restassured.RestAssured.given;
public class BaseTest {
@BeforeMethod
public void loginUser() {
LoginPOJO loginPOJO = new LoginPOJO("anhtester", "Demo@123");
Gson gson = new Gson();
RequestSpecification request = given();
request.baseUri("https://api.anhtester.com/api")
.accept("application/json")
.contentType("application/json")
.body(gson.toJson(loginPOJO));
Response response = request.when().post("/login");
response.then().statusCode(200);
//Lưu giá trị token vào biến TOKEN nhé
TokenGlobal.TOKEN = response.getBody().path("token");
System.out.println("Token Global: " + TokenGlobal.TOKEN);
}
}
Gọi lại biến TOKEN toàn cục trong cả project để sử dụng:
import com.anhtester.common.BaseTest;
import com.anhtester.globals.TokenGlobal;
import com.anhtester.model.PatchUserPOJO;
import com.google.gson.Gson;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.Assert;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.given;
public class DemoPATCH extends BaseTest {
@Test
public void testUpdateUser_PATCH() {
//Chuẩn bị data update user
PatchUserPOJO patchUserPOJO = new PatchUserPOJO();
patchUserPOJO.setFirstName("Bối");
patchUserPOJO.setLastName("Bối");
patchUserPOJO.setEmail("boiboi1@email.com");
patchUserPOJO.setPhone("0123456789");
patchUserPOJO.setUserStatus(1);
Gson gson = new Gson();
RequestSpecification request = given();
request.baseUri("https://api.anhtester.com/api")
.accept("application/json")
.contentType("application/json")
.header("Authorization", "Bearer " + TokenGlobal.TOKEN)
.body(gson.toJson(patchUserPOJO));
Response response = request.when().patch("/user/2");
response.prettyPrint();
response.then().statusCode(200);
String message = response.getBody().path("message");
Assert.assertEquals(message, "Success", "The message not match.");
}
}
✅ Sử dụng DELETE method trong REST Assured
Để sử dụng phương thức DELETE thì các bạn gọi hàm request.delete() khi gửi một request.
Ví dụ test case Delete User nhé
https://api.anhtester.com/swagger/index.html#/User%20Management/deleteUser
Code delete user với Rest Assured như sau:
import com.anhtester.common.BaseTest;
import com.anhtester.globals.TokenGlobal;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.Assert;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.given;
public class DemoDELETE extends BaseTest {
@Test
public void testDeleteUser_DELETE() {
//Chuẩn bị thông tin username để delete
String username = "anhtester3";
RequestSpecification request = given();
request.baseUri("https://api.anhtester.com/api")
.accept("application/json")
.contentType("application/json")
.header("Authorization", "Bearer " + TokenGlobal.TOKEN)
.queryParam("username", username);
Response response = request.when().delete("/user");
response.prettyPrint();
response.then().statusCode(200);
String message = response.getBody().path("message");
Assert.assertEquals(message, "Success", "The message not match.");
}
}
Sau khi delete thì các bạn cần dùng endpoint getUserByUsername để check lại xem đã xoá được chưa. Nếu xoá được thì nó sẽ báo "User not found" sau khi GET.