Skip to content

Commit 8783c77

Browse files
committed
fix: address review feedback on e2e tests
- Add 5s timeout to HTTP client in sendWebhook to prevent hung tests - TrimSpace on GITHUB_META_URL env var to handle trailing newlines - Add e2e test verifying meta URL whitespace trimming works - Remove explicit -timeout 60s from CI job (default 10m is sufficient)
1 parent 17de5fd commit 8783c77

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
steps:
5959
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
6060
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
61-
- run: go test ./e2e/ -tags e2e -v -timeout 60s
61+
- run: go test ./e2e/ -tags e2e -v
6262

6363
docker:
6464
name: Docker build

cmd/proxy/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"os"
1111
"os/signal"
12+
"strings"
1213
"syscall"
1314
"time"
1415

@@ -27,7 +28,7 @@ func main() {
2728
os.Exit(1)
2829
}
2930

30-
metaURL := os.Getenv("GITHUB_META_URL")
31+
metaURL := strings.TrimSpace(os.Getenv("GITHUB_META_URL"))
3132
if metaURL == "" {
3233
metaURL = defaultGitHubMetaURL
3334
}

e2e/e2e_test.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ func sendWebhook(t *testing.T, addr, event, body, secret string) *http.Response
204204
req.Header.Set("X-GitHub-Event", event)
205205
req.Header.Set("X-Hub-Signature-256", sig)
206206

207-
resp, err := http.DefaultClient.Do(req)
207+
client := &http.Client{Timeout: 5 * time.Second}
208+
resp, err := client.Do(req)
208209
if err != nil {
209210
t.Fatalf("request failed: %v", err)
210211
}
@@ -562,6 +563,30 @@ func TestE2E_ResponseBodyNotLeaked(t *testing.T) {
562563
}
563564
}
564565

566+
func TestE2E_MetaURLWhitespaceTrimmed(t *testing.T) {
567+
meta := githubMetaServer([]string{"127.0.0.0/8"})
568+
defer meta.Close()
569+
570+
capture := &docoCDCapture{}
571+
docoCD := httptest.NewServer(capture.handler())
572+
defer docoCD.Close()
573+
574+
env := baseEnv(meta.URL, docoCD.URL)
575+
env["GITHUB_META_URL"] = " " + meta.URL + "\n"
576+
577+
p := startProxy(t, env)
578+
579+
resp := sendWebhook(t, p.addr, "push", pushPayload, "test-gh-secret")
580+
defer resp.Body.Close()
581+
582+
if resp.StatusCode != http.StatusOK {
583+
t.Fatalf("expected 200, got %d — meta URL trimming may have failed", resp.StatusCode)
584+
}
585+
if !capture.wasCalled() {
586+
t.Error("request should have been forwarded after meta URL trimming")
587+
}
588+
}
589+
565590
func TestE2E_MultipleAllowedRepos(t *testing.T) {
566591
meta := githubMetaServer([]string{"127.0.0.0/8"})
567592
defer meta.Close()

0 commit comments

Comments
 (0)