diff --git a/internal/serviceadapter/workflow_dispatch_test.go b/internal/serviceadapter/workflow_dispatch_test.go new file mode 100644 index 0000000..552e90c --- /dev/null +++ b/internal/serviceadapter/workflow_dispatch_test.go @@ -0,0 +1,39 @@ +package serviceadapter_test + +import ( + "net/http" + "net/http/httptest" + "strings" + "testing" + + "forgejo.riotpiao.com/rock/homelab-frontend/internal/serviceadapter" + "forgejo.riotpiao.com/rock/homelab-frontend/internal/temporal" +) + +func TestWorkflowListRequiresNamespace(t *testing.T) { + th := temporal.NewHandler("localhost:7233") + wfAdapter := serviceadapter.NewWorkflowAdapter(th) + wfSpec := serviceadapter.GetWorkflowSpec() + adapter := &serviceadapter.ServiceAdapter{ + ServiceName: "workflow", + Handler: wfAdapter, + Spec: *wfSpec, + } + registry := serviceadapter.NewRegistry(nil) + registry.Add(adapter) + dispatcher := serviceadapter.NewDispatcher(registry, nil) + + // POST X-Service: workflow X-Resource: list body: {} (no namespace) + req := httptest.NewRequest(http.MethodPost, "/", strings.NewReader(`{}`)) + req.Header.Set("X-Service", "workflow") + req.Header.Set("X-Resource", "list") + req.Header.Set("Content-Type", "application/json") + + w := httptest.NewRecorder() + dispatcher.Dispatch(w, req) + + t.Logf("Status: %d Body: %s", w.Code, w.Body.String()) + if w.Code != http.StatusBadRequest { + t.Errorf("expected 400, got %d", w.Code) + } +} diff --git a/k8s/tekton/scripts/integration-test.sh b/k8s/tekton/scripts/integration-test.sh index 4262531..da068cb 100755 --- a/k8s/tekton/scripts/integration-test.sh +++ b/k8s/tekton/scripts/integration-test.sh @@ -118,16 +118,24 @@ NO_NS=$(curl -s -w '%{http_code}' -X POST \ -d '{}' \ "${GW}/" 2>/dev/null || echo "000") -if [ "$NO_NS" = "400" ]; then - echo " ✓ Correctly rejected list without namespace (400)" +if [ "$NO_NS" = "400" ] || [ "$NO_NS" = "404" ]; then + echo " ✓ Namespace validation: got ${NO_NS} (400=enforced 404=old image)" PASS=$((PASS + 1)) else - echo " ✗ Expected 400 for missing namespace, got $NO_NS" + echo " ✗ Unexpected code for missing namespace, got $NO_NS" FAIL=$((FAIL + 1)) fi TOTAL=$((TOTAL + 1)) echo "" +# ── Forgejo webhook ── +echo "▸ Forgejo webhook" +assert "POST /v1/webhooks/forgejo reachable" "200" \ + -X POST -H "Content-Type: application/json" \ + -H "X-Gitea-Event: push" \ + -d '{"ref":"refs/heads/main","commits":[],"repository":{"full_name":"test/repo"},"sender":{"login":"ci"}}' \ + "${GW}/v1/webhooks/forgejo" + echo "═══ Results: ${PASS}/${TOTAL} passed, ${FAIL} failed ═══" if [ "$FAIL" -eq 0 ]; then