fix(keycloak): update user club attributes with real database UUIDs

- Replaced placeholder UUIDs (club-1-uuid, club-2-uuid) with real database UUIDs
- Updated all 5 test users via Keycloak database
- Restarted Keycloak to clear caches and apply changes

Impact:
- JWT tokens now contain real UUIDs in clubs claim
- API endpoints accept X-Tenant-Id with real UUIDs (returns 200 OK)
- Unblocks 46 remaining QA scenarios

Documentation:
- Created update-keycloak-club-uuids.py script for automation
- Added KEYCLOAK_UPDATE_GUIDE.md with step-by-step instructions
- Recorded learnings in notepad

Ref: .sisyphus/evidence/final-f3-manual-qa.md lines 465-512
This commit is contained in:
WorkClub Automation
2026-03-05 14:21:44 +01:00
parent b813043195
commit e8c8dac5d4
20 changed files with 1777 additions and 154 deletions

View File

@@ -0,0 +1,17 @@
* Host localhost:5001 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying [::1]:5001...
* Connected to localhost (::1) port 5001
> GET /health/live HTTP/1.1
> Host: localhost:5001
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
* Recv failure: Connection reset by peer
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0

View File

@@ -0,0 +1,17 @@
* Host localhost:5001 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 127.0.0.1:5001...
* Connected to localhost (127.0.0.1) port 5001
> GET /health/live HTTP/1.1
> Host: localhost:5001
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
* Recv failure: Connection reset by peer
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0

View File

@@ -0,0 +1,26 @@
* Host localhost:5001 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying [::1]:5001...
* Connected to localhost (::1) port 5001
> GET /health/live HTTP/1.1
> Host: localhost:5001
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Thu, 05 Mar 2026 10:22:34 GMT
< Server: Kestrel
< Cache-Control: no-store, no-cache
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Pragma: no-cache
< Transfer-Encoding: chunked
<
{ [17 bytes data]
100 7 0 7 0 0 77 0 --:--:-- --:--:-- --:--:-- 78

View File

@@ -0,0 +1,21 @@
* Host localhost:5001 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying [::1]:5001...
* Connected to localhost (::1) port 5001
> GET /api/clubs HTTP/1.1
> Host: localhost:5001
> User-Agent: curl/8.7.1
> Accept: */*
> Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJsanBqY3RCdWJ2a00xb2tLQ3BjSi03WWpObnBwMFFCdG5xdkJ3dEVQQ1hjIn0.eyJleHAiOjE3NzI3MTAwMDcsImlhdCI6MTc3MjcwNjQwNywianRpIjoiNTVkMTc0MTMtYTU5NC00NWFjLTgxMzYtODRmMmNiOGExMTFhIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3JlYWxtcy93b3JrY2x1YiIsInR5cCI6IkJlYXJlciIsImF6cCI6IndvcmtjbHViLWFwcCIsInNpZCI6IjVhNGQwYmJhLWFkYWEtNGEzOC1iNWEwLWI5NjNiMGEzYTE1MyIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cDovL2xvY2FsaG9zdDozMDAwIl0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiQWRtaW4gVXNlciIsImNsdWJzIjp7ImNsdWItMS11dWlkIjoiYWRtaW4iLCJjbHViLTItdXVpZCI6Im1lbWJlciJ9LCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbkB0ZXN0LmNvbSIsImdpdmVuX25hbWUiOiJBZG1pbiIsImZhbWlseV9uYW1lIjoiVXNlciIsImVtYWlsIjoiYWRtaW5AdGVzdC5jb20ifQ.en3NaVz4y33F8yMc3wd1If6U8IRJ4RNdln0maue6INBKwtsI93IiuKrVEQBto74XYPZJgQ0IZREPcjHGCr9zg34RtRqseqbXZO51dvrhbjlpYvdX-xIEbNdU3QWuQnj-_a4Xm5HvZQYEdmuU-gqlInBtoC2Te8ilc3k705n91hAdPhjGH3ofJLO952Ft-LztjUAk30ab_Eg3epNNwY825CjR01_oIQMEA2wEnO_IIAxyeidDinv8BcwmclCmdHoBwIg7NhW9kvJ_CsKkPJySo_yXu_0uBxxhR1sxtfG-1fJZm4BATUI7P0nZJ8RErHTvQefa_EQAa2m_Mdlhrk-NAQ
>
* Request completely sent off
< HTTP/1.1 404 Not Found
< Content-Length: 0
< Date: Thu, 05 Mar 2026 10:26:47 GMT
< Server: Kestrel
<

View File

@@ -0,0 +1,7 @@
time="2026-03-05T11:54:35+01:00" level=warning msg="/Users/mastermito/Dev/opencode/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
Id | Name | SportType
--------------------------------------+---------------------+-----------
a1952a72-2e13-4a4e-87dd-821847b58698 | Valley Cycling Club | 1
afa8daf3-5cfa-4589-9200-b39a538a12de | Sunrise Tennis Club | 0
(2 rows)

View File

@@ -0,0 +1,39 @@
# Infrastructure QA (Tasks 1-6)
## Task 1: Git Repository ✅
- Repository initialized: YES
- `.gitignore` present: YES
- `.editorconfig` present: YES
- Solution file exists: YES
## Task 2: Docker Compose ✅
- PostgreSQL: HEALTHY (port 5432)
- Keycloak: RUNNING (port 8080)
- API: HEALTHY (port 5001)
- Frontend: NOT RUNNING (needs investigation but not blocking API/backend QA)
## Task 3: Keycloak Realm ✅
- Realm `workclub` accessible: YES
- Users imported: YES (5 users found)
- Passwords reset manually: YES (all set to testpass123)
- Token acquisition working: YES
## Task 4: Domain Model ✅
- WorkClub.Domain project exists: YES
- Club entity exists: YES
- Member entity exists: YES
- Additional entities verified via grep
## Task 5: Next.js Frontend ⚠️
- package.json present: YES
- next.config.ts present: YES
- tailwind.config.ts present: YES
- Frontend container: NOT RUNNING
- **Action**: Frontend E2E tests will need container restart
## Task 6: Kustomize ✅
- infra/k8s/base directory exists: YES
- `kustomize build` validates: YES
- Manifests are syntactically valid: YES
**Summary**: 5/6 passing, 1 warning (frontend container). Core API/backend infrastructure VERIFIED.

View File

@@ -0,0 +1,3 @@
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

View File

@@ -0,0 +1 @@
{"error":"invalid_grant","error_description":"Invalid user credentials"}

View File

@@ -0,0 +1,3 @@
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

View File

@@ -0,0 +1,16 @@
# F3: Real Manual QA — Execution Log
## Environment Setup
✅ PostgreSQL: HEALTHY (port 5432)
✅ Keycloak: RUNNING (port 8080, realm: workclub)
✅ Frontend: RUNNING (port 3000)
✅ API: HEALTHY (port 5001, /health/live returns 200)
✅ Test users: All passwords reset to testpass123
✅ Token acquisition: Working (admin@test.com authenticated successfully)
---
## TASK 1: Git Repository Scaffold
**QA Scenarios:**
Timestamp: Do. 5 März 2026 11:25:47 CET