DomaiNesia

Ticker

6/recent/ticker-posts

Otomasi Test Rest API dengan Postman: Menyimpan JWT Token dari Response untuk Digunakan Pada Test Berikutnya di Postman

Kali ini catatan ini adalah catatan saya untuk konfigurasi sederhana otomatisasi test Rest API endpoint menggunakan Postman. Postman merupakan tool yang umum digunakan saat kita ingin melakukan test khususnya test terhadap respon yang diberikan oleh API endpoint yang telah kita rancang dan buat.

Test ini sepanjang pengetahuan saya (CMIIW) hanya dapat memeriksa respon yang diberikan oleh Rest API saja dan tidak dapat memeriksa konsistensi dan integritas flow aplikasi dalam proses bisnis internalnya. Karenanya banyak pengembang yang berpendapat bahwa meskipun kita sudah menulis test di Postman kita juga masih perlu menuliskan test di aplikasi kita (apakah unittest atau integration test).

Nah kali ini saya hanya akan menuliskan catatan saya tentang konfigurasi yang saya coba terapkan untuk otomasi Test Rest API dengan Postman dimana saya harus bisa menyimpan JWT token yang didapatkan dari request response untuk digunakan pada test berikutnya (request berikutnya) di Postman.

Di dalam Postman sendiri (Postman Canary), untuk keperluan test terdapat 3 hal yang penting dipahami, yaitu: Tests tab, Pre-request Script tab, dan Environment.

Dalam konteks artikel ini, hal lain yang juga perlu dipahami ada di dalam tab Body yang akan berisi body/isi dari request kita ke Rest API endpoint dan request header dalam hal ini tab Authorization dalam Postman.

Berikut ini kode dari salah satu Rest API endpoint yang saya buat:

create user endpoint

Dapat dilihat bahwa pada endpoint ini akan menerima data masukan berupa data user baru yang hendak dibuat.

Namun, karena endpoint ini merupakan endpoint dengan method POST, maka ia dilindungi dengan decorator @jwt_required (dari python module Flask JWT Extended) sehingga hanya user yang telah login dan memiliki JWT token yang dapat mengakses endpoint tersebut.

Untuk itu, request yang dilakukan ke endpoint tersebut harus membawa token hasil login yang didapat dari server, di dalam request header Authorization dalam hal ini dengan pendekatan Bearer token.

Bagaimana cara melakukannya secara otomatis di Postman test?

Nah ini dia caranya:

1. Pertama, saya memastikan isi request sudah dibuat. Isi request ini harus sesuai dengan skema data yang diterima oleh API endpoint. Hal ini nantinya dapat dilihat dari dokumentasi API tersebut (jika sudah ada dokumentasinya). Skema ini diaturnya di server/di User model di flask app nya (terlihat pada kode python pada endpoint create user pada gambar sebelumnya). Nah pada request ini yang saya gunakan adalah application/json (raw - JSON).

2. Pastikan kita membuat Pre-request script yang akan dijalankan tiap kali sebelum test yang terdapat di tab Test dijalankan. Di sinilah kita memerintahkan aplikasi untuk login ke API dengan pm.sendRequest() kemudian melengkapi parameter yang diperlukan sesuai skema input yg diharapkan oleh API. Jangan lupa untuk menangkap response dan memasukkannya ke environment variable pada Postman secara dinamis dengan pm.environment.set().

Pre-request script ini akan secara otomatis dijalankan oleh Postman setiap saat akan melakukan test (sebelum test dieksekusi). Hasil dari pre-request script dalam hal ini akan menghasilkan environment variable baru "TOKEN" yang berisi value apapun yang diberikan oleh API endpoint (dalam bentuk JWT token) dalam key "access_token" dalam JSON response nya.

Untuk dapat menggunakannya dalam test case ini maka kita harus memasukkannya ke dalam Tab Authorization, dalam hal ini menggunakan Bearer Token. Kita menggunakan environment variable tersebut dengan cara memanggilnya seperti ini: {{TOKEN}}.

Baru setelah itu skenario test berikut ini dapat dijalankan dalam Postman.

Kalau tak ada kendala, tentu hasilnya:

Response body menghasilkan data dalam bentuk JSON.

Seluruh test skenario pun PASS.

Demikian, semoga bermanfaat dan jadi pahala yg berkelanjutan. Aamiin.. :)






Post a Comment

0 Comments