Saat Anda melakukan pengujian API, terkadang API atau titik akhir dilindungi. Ini berarti Anda perlu diautentikasi dan diotorisasi untuk melakukan tindakan tertentu.
Ada banyak cara untuk melindungi API, tetapi satu cara sederhana adalah dengan menggunakan Basic
Autentikasi.
Dalam postingan ini, kita akan melihat cara mengirim Basic
auth header di REST-terjamin.
import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.response.Response; import org.junit.Before; import org.junit.jupiter.api.*; import static io.restassured.RestAssured.given; public class UserScenarios {
private String path;
private String validRequest = '{
' +
' 'username': 'some-user',
' +
' 'email': 'some-user@email.com',
' +
' 'password': 'Passw0rd123!'
}';
@Before
public void setup() {
RestAssured.baseURI = 'http://localhost:8080';
path = '/users';
}
@Test
public void createUser() {
Response response = given()
.auth()
.preemptive()
.basic('required_username', 'required_password')
.header('Accept', ContentType.JSON.getAcceptHeader())
.contentType(ContentType.JSON)
.body(validRequest)
.post(path)
.then().extract().response();
Assertions.assertEquals(201, response.getStatusCode());
}
Dalam beberapa kasus, server mungkin menggunakan mekanisme tantangan-respons untuk menunjukkan kapan pengguna perlu mengautentikasi untuk mengakses sumber daya.
Secara default, REST-terjamin menunggu server untuk menantang sebelum mengirim kredensial dan perpustakaan menyediakan direktif preemptive yang dapat kita gunakan:
given()
.auth()
.preemptive()
.basic('required_username', 'required_password')