Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

API w REST Assured 7. Usuwanie i zmiana obiektów – metody DELETE i PUT

W tej lekcji obsłużymy pozostałe dwie metody HTTP: DELETE i PUT. Napiszemy razem test, który będzie już wykorzystywał wszystkie cztery operacje z akronimu CRUD.

Dokumentacja do sklepu

Po poprawnym postawieniu aplikacji dokumentację do niej znajdziesz pod localhost/fakestore/dokumentacja/. Tam też znajdziesz np. klucze potrzebne do uwierzytelnienia.

Wersja Javy

W zależności od tego której wersji Javy używasz, mogą się pojawić drobne rozbieżności w sytuacji, w których pobieramy jakąś informację z odpowiedzi metodą get(), a następnie ją „wypluwamy” w konsoli metodą println, np.:

System.out.println(response.jsonPath().get("name"));

Jeżeli nie zadziała Ci to, co pokazuję (będzie się podkreślało na czerwono i po najechaniu zobaczysz „Ambiguous method call”) możesz zamiast get() użyć metody getString():

System.out.println(response.jsonPath().getString("name"));

Metody DELETE i PUT: linki i materiały

W tej lekcji stworzymy obiekt (to już umiemy), następnie zmienimy go (metoda PUT) i jeśli zmiana będzie udana to skasujemy (metoda DELETE). Możemy powiedzieć, że składamy z klocków naszej dotychczasowej wiedzy nowe umiejętności. Ze stworzonego obiektu pobieramy ID, które będzie nam potrzebne w kolejnych krokach. 

Zmiana obiektu: PUT

Tym razem spróbujemy obejść się bez Postmana (ale jeśli macie jakieś wątpliwości, albo problemy – polecam nadal do niego sięgać!) i od razu działać w kodzie. Żeby zmienić obiekt musimy:

  1. strzelić do konkretnego obiektu (URI): endpoint_produktów/nasze_ID,
  2. określić jaki typ danych będziemy przesyłać: contentType(„application/json”),
  3. wysłać ciało requestu (body): w nim musimy zawrzeć ten fragment JSONa, który chcemy zmienić,
  4. wysłać w .when() prawidłową metodę: .put(URI).

Prawidłowy request powinien otrzymać w odpowiedzi kod 200 (takie nasze „zwykłe” OK)

Przypominam, że o ile w wielu webservice’ach będzie to wyglądało podobnie, to informacje te pochodzą bezpośrednio z dokumentacji sztucznosklepowego API

W odpowiedzi nasze API wysyła nową wersję obiektu, więc już w niej możemy sprawdzać, czy nazwa faktycznie się zmieniła.

Usuwanie obiektu: DELETE

Przejdźmy więc do kasowania – znowu informacje o tej funkcjonalności bierzemy z dokumentacji.

Tam dowiadujemy się, że kasowanie może przyjmować parametr (force=true), w którym możemy wymusić pominięcie “kosza”. Obiekt po prostu zniknie, a dokładnie o to nam chodzi.

Zbierając informacje z dokumentacji musimy:

  1. strzelić znów do konkretnego obiektu (URI): endpoint_produktów/nasze_ID,
  2. skoro nie przesyłamy danych, to nie musimy określać ich typu,
  3. skoro nie ma danych, to nie ma też ciała – body jest puste, więc nie musimy go określać,
  4. wysłać w .when() prawidłową metodę – .delete(URI),
  5. określić dodatkowo .queryParam(“force”,”true”): jest to bardzo wygodna i podobna do Postmanowej funkcjonalność RestAssured – nie musimy parametrów sklejać i dokładać do URLa, mamy na to wygodne, osobne miejsce w bloku given().

Prawidłowy request otrzymuje w odpowiedzi 200. Ponieważ jesteśmy testerami, to takie OK otrzymane od DELETE’a to dla nas za mało, to przypomnimy sobie GETa i spróbujemy pobrać obiekt po skasowaniu. Mam nadzieję, że już Wam się buzie cieszą na myśl o tym, że prawidłowym, oczekiwanym kodem odpowiedzi będzie w tym przypadku nie kto inny, a 404!

W ten sposób uzupełniliśmy podstawy i pokryliśmy wszystkie litery akronimu CRUD. Umiecie już tworzyć, czytać, zmieniać i kasować obiekty! Gratulacje! Na tej wiedzy będziecie już bazować do samego końca (mam nadzieję, że nierychłego) Waszych przygód z API.

Kod

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.