LU08.A03 - Bookshelf mit Authentifikation

Erweitere deine Sammlung von Requests um verschiedene Aspekte zum automatisierten Testen.

Die erweiterte Version der Bookshelf-API (https://it.bzz.ch/book/ext/) umfasst eine Authentifikation und Autorisation. Ein Aufrufer kann eine von drei Rollen haben:

Rolle Benutzername Passwort Berechtigung
admin admin admin Zugriff auf alle API-Funktionen
user musterh geheim Zugriff auf die Funktionen read und list
guest - - Zugriff auf die Funktion login

Ein Aufrufer der kein gültiges Token besitzt, erhält die Rolle guest zugewiesen. Der darf ausschliesslich die Funktion login aufrufen, um sich zu authentifizieren. Fehlt dem Aufrufer die Berechtigung für die aufgerufene Funktion, so antwortet die API mit http-Statuscode 403 (Forbidden)

  • Wir testen jede API-Funktion mit jeder Benutzerrolle.
  • Wir verwenden die bestehenden Testfälle, passen aber die tests an.

Um diese Ziele zu erreichen, lassen wir die Testfälle 1x pro Rolle durchlaufen. Für jeden Durchlauf verwenden wir das Login für die entsprechende Rolle.

Für diese Aufgabe stelle ich dir eine Collection zur Verfügung, welche die wichtigsten Requests beinhaltet. Lade die Collection “ Bookshelf_Python.postman_collection.json” von Moodle herunter. Importiere diese Collection in Postman.

Aus den letzten Aufgaben haben wir bereits die Variablen für die URL und das Token. Zusätzlich verwende ich die Variable role um zu speichern, mit welche Rolle ich aktuell testen.

Ganz ohne neue Requests geht es nicht. In der importierten Collection findest du 4 zusätzliche Requests.

Dieser Request initialisiert und steuert die Verarbeitung der Testdurchläufe. Er sendet nur pro-forma eine Anfrage, sondern legt lediglich die Werte der Variablen fest. Im Reiter “Pre-request Script” findet du die Beschreibung der Logik, die du umsetzen musst.

Daneben gibt es 3 Requests, welche die login-Funktion mit unterschiedlichen Daten aufrufen.

Dieser Request sendet den Benutzernamen und Passwort des Administators. Bei tests musst du drei Punkte umsetzen:

  • Prüfe ob die Response den http-Status 200 enthält.
  • Speichere das token aus der JSON-Response in die Umgebungsariable token.
  • Lege fest, dass als nächstes der Request “10 Read Book” ausgeführt werden soll.

Dieser Request sendet den Benutzernamen und Passwort des Administators. Bei tests musst du drei Punkte umsetzen:

  • Prüfe ob die Response den http-Status 200 enthält.
  • Speichere das token aus der JSON-Response in die Umgebungsariable token.
  • Lege fest, dass als nächstes der Request “10 Read Book” ausgeführt werden soll.

Dieser Request sendet einen unbekannte Benutzernamen und Passwort. Bei tests musst du zwei Punkte umsetzen:

  • Prüfe ob die Response den http-Status 401 enthält.
  • Lege fest, dass als nächstes der Request “10 Read Book” ausgeführt werden soll.

In der Logik der tests müssen wir die unterschiedlichen Benutzerrollen berücksichtigen. Je nach Benutzerrolle wird der gleiche Request einen anderen http-Statuscode und andere Daten liefern.

Zum Beispiel "10 Read Book"

  • Ist die Benutzerrolle “admin” oder “user” erwarte ich wie bisher den http-Statuscode 200 und das korrekte Buch.
  • Ist die Benutzerrolle “guest” erwarte ich neu den http-Statuscode 403 und ein leeres JSON-Array als Antwort.

Passe die Logik der tests so an, dass sie bei jeder Benutzerrolle korrekt reagieren.

Sind die Anpassungen gemacht, kommt der grosse Moment: Wir lassen die ganze Collection 3x durchlaufen. Öffne dazu den Collection Runner und setze die Anzahl der Durchläufe auf 3. Wenn du alles richtig gemacht hast, sollten alle Requests erfolgreich durchlaufen.


Marcel Suter

  • modul/m450/learningunits/lu08/aufgaben/automation.txt
  • Last modified: 2023/11/13 08:56
  • by 127.0.0.1