2.1 KiB
2.1 KiB
1. Zielsetzung
Bereitstellung einer REST-API zur Verwaltung des Saatgut-Inventars inklusive strikter Sicherheitsprüfungen und Logik-Validierungen.
2. Endpunkt-Definitionen
2.1 Katalog (Public/Read)
| Endpunkt | Methode | Parameter | Antwort | AK / Testfall |
|---|---|---|---|---|
/api/kategorien |
GET | - | 200 OK [JSON] |
Liste ist nicht leer, wenn DB gefüllt ist. |
/api/pflanzen |
GET | ?kategorie_id=X, ?suche=Y |
200 OK [JSON] |
Filterung reduziert Ergebnismenge korrekt. |
2.2 Inventar (Protected / JWT required)
| Endpunkt | Methode | Parameter | Antwort | AK / Testfall |
|---|---|---|---|---|
/api/mein-saatgut |
GET | - | 200 OK [JSON] |
Nur Einträge der eigenen nutzer_id sichtbar. |
/api/mein-saatgut |
POST | Body (JSON) | 201 Created |
Fehlende Pflichtfelder \rightarrow 400 Bad Request. |
/api/mein-saatgut/{id} |
PATCH | Body (JSON) | 200 OK |
Fremde ID \rightarrow 403 Forbidden. |
/api/mein-saatgut/{id} |
DELETE | - | 204 No Content |
Fremde ID \rightarrow 403 Forbidden. |
3. Logik-Schicht (Service-Layer) & Unit Tests
Die Geschäftslogik wird in dedizierten Services implementiert und unabhängig vom HTTP-Kontext getestet.
3.1 Business Rules (AKs für Logik-Tests)
- Validierung Ablaufdatum: Der Service muss eine Exception werfen, wenn das
kaufdatumzeitlich nach demablaufdatumliegt. - Katalog-Existenz: Bevor ein Eintrag in
SaatgutBestanderstellt wird, muss geprüft werden, ob diepflanze_idim Katalog existiert\rightarrowsonst Fehler werfen. - Besitzprüfung: Die Methode
isOwner(Nutzer, SaatgutEintrag)muss strikt prüfen, ob die IDs übereinstimmen.
3.2 Test-Matrix
| Ebene | Tool | Fokus | Ziel |
|---|---|---|---|
| Functional | WebTestCase |
End-to-End API Flow | HTTP Statuscodes & JSON Struktur prüfen. |
| Unit | PHPUnit |
Business Logic | Edge Cases (z.B. Datumsfehler) isoliert testen. |
| Integration | JWT/Mock | Security / Isolation | Sicherstellen, dass Nutzer A niemals Daten von B sieht. |