|
1 | | -# Workshop API Design |
| 1 | +# Workshop Consumer-Driven Contract Testing |
2 | 2 |
|
3 | | -Herzlich willkommen zum Workshop API Design. |
| 3 | +Herzlich willkommen zum Workshop Consumer-Driven Contract Testing. |
4 | 4 |
|
5 | 5 | ## Übung: Playwright Tests mit WireMock |
6 | 6 |
|
@@ -35,72 +35,30 @@ Alle HTTP-Requests in den Playwright-Tests sollen durch WireMock-Mappings ersetz |
35 | 35 | 1. **Playwright auf WireMock umstellen** |
36 | 36 | Ändere in `customer-client/playwright.config.ts` die `VITE_API_URL` so, dass sie auf den WireMock-Server (`http://localhost:8080`) zeigt. |
37 | 37 |
|
38 | | -2. **WireMock-Mappings für die Kundenliste ergänzen** |
39 | | - Die Mappings für `GET /customers/` und `OPTIONS /customers/` sind bereits vorhanden. |
40 | | - Führe die Tests aus und prüfe, welche weiteren Requests fehlen. |
41 | | - |
42 | | -3. **WireMock-Mappings für die Kundendetailseite anlegen** |
| 38 | +2. **WireMock-Mappings für die Kundendetailseite anlegen** |
43 | 39 | Für die Tests in `customer-detail.spec.ts` werden Kundendaten für `0815` (Max Mustermann) und `007` (James Bond) benötigt. Lege entsprechende Mappings an: |
44 | 40 | - `GET /customers/0815` – Max Mustermann mit Rechnungs- und Lieferadresse |
45 | 41 | - `GET /customers/007` – James Bond ohne Adressen |
46 | 42 | - `PUT /customers/0815/billing-address` – Rechnungsadresse speichern |
47 | 43 | - `PUT /customers/0815/delivery-address` – Lieferadresse speichern |
48 | 44 | - Adressvalidierung (PLZ-Prüfung) für die entsprechenden Testszenarien |
49 | 45 |
|
50 | | -4. **WireMock-Mapping für das Anlegen neuer Kunden anlegen** |
| 46 | +3. **WireMock-Mapping für das Anlegen neuer Kunden anlegen** |
51 | 47 | Für `create-customer.spec.ts` wird ein `POST /customers/` benötigt, der einen neuen Kunden anlegt. |
52 | 48 |
|
53 | | -5. **Alle Tests erfolgreich ausführen** |
| 49 | +4. **Alle Tests erfolgreich ausführen** |
54 | 50 | Starte WireMock per Docker Compose und führe die Tests aus: |
55 | 51 | ```bash |
56 | 52 | docker compose up wiremock |
57 | 53 | cd customer-client |
58 | 54 | npm test |
59 | 55 | ``` |
| 56 | + Alternativ kann auch `npm test:ui` verwendet werden, um sich die UI-Interaktionen in der Playwright UI anzusehen. |
60 | 57 |
|
61 | 58 | ### Tipps |
62 | 59 |
|
63 | 60 | - WireMock-Mappings liegen als JSON-Dateien in `wiremock/mappings/`. WireMock lädt diese Dateien beim Start automatisch. |
64 | 61 | - Die bestehenden Mappings (`get-customers.json`, `options-customers.json`) können als Vorlage für neue Mappings genutzt werden. |
65 | | -- Für das Laden neuer Mappings ohne Neustart kann die WireMock Admin API unter `http://localhost:8080/__admin/mappings` genutzt werden – oder WireMock einfach neu starten. |
66 | | -- Bei einem `POST`- oder `PUT`-Request muss ggf. auch der entsprechende `OPTIONS`-Preflight-Request gemockt werden (CORS). |
| 62 | +- Für das Laden neuer Mappings ohne Neustart kann die WireMock Admin API unter `http://localhost:8080/__admin/mappings` genutzt – oder der WireMock-Container einfach neu gestartet werden. |
| 63 | +- Bei einem `GET`, `POST`- oder `PUT`-Request muss ggf. auch der entsprechende `OPTIONS`-Preflight-Request gemockt werden (CORS). |
67 | 64 | - Die Adressvalidierung in `customer-detail.spec.ts` erwartet spezifische Fehlermeldungen – die Responses im Mapping müssen die exakten Fehlertexte aus den Tests zurückliefern. |
68 | | - |
69 | | ---- |
70 | | - |
71 | | -## Alle Übungen |
72 | | - |
73 | | -### API Design |
74 | | - |
75 | | -- [OpenAPI](https://github.com/openknowledge/workshop-api-design/tree/openapi) |
76 | | -- [Mocking](https://github.com/openknowledge/workshop-api-design/tree/wiremock) |
77 | | -- [AsyncAPI](https://github.com/openknowledge/workshop-api-design/tree/asyncapi) |
78 | | - |
79 | | -### API Testing |
80 | | - |
81 | | -- [Playwright + WireMock](https://github.com/openknowledge/workshop-api-design/tree/playwright-wiremock) |
82 | | -- [Pact](https://github.com/openknowledge/workshop-api-design/tree/pact-mock-server) |
83 | | -- [Pact Pipeline](https://github.com/openknowledge/workshop-api-design/tree/pact) |
84 | | - |
85 | | -### API Security |
86 | | - |
87 | | -- [JWT](https://github.com/openknowledge/workshop-api-design/tree/jwt) |
88 | | -- [OAuth2](https://github.com/openknowledge/workshop-api-design/tree/oauth2) |
89 | | -- [OAuth2 mit PKCE](https://github.com/openknowledge/workshop-api-design/tree/oauth2-pkce) |
90 | | - |
91 | | -### API Governance |
92 | | - |
93 | | -- [Linting](https://github.com/openknowledge/workshop-api-design/tree/linting) |
94 | | - |
95 | | -### API Management |
96 | | - |
97 | | -- [Rate Limiting](https://github.com/openknowledge/workshop-api-design/tree/rate-limiting) |
98 | | -- [Backstage](https://github.com/openknowledge/workshop-api-design/tree/backstage) |
99 | | - |
100 | | -### API Operation |
101 | | - |
102 | | -- [Observability](https://github.com/openknowledge/workshop-api-design/tree/observability) |
103 | | - |
104 | | -### API Evolution |
105 | | - |
106 | | -- [Versioning](https://github.com/openknowledge/workshop-api-design/tree/versioning) |
0 commit comments