From 5f327a458f6488d053815621cd1a5154f1ce76c0 Mon Sep 17 00:00:00 2001 From: Abhinav Gupta Date: Mon, 23 Jan 2023 10:28:04 -0800 Subject: Drop httprouter dependency (#71) This drops the third-party HTTP router dependency. This dependency wasn't strictly necessary since our routing needs are quite basic: - `/$name` and `/$name/*` for all registered packages - `/` for root This is easily accomplished with `http.ServeMux`: - register `/$name` and `/$name/`. The latter will receive all subpackage requests. - register `/` and reject anything that isn't for exactly `/`. --- handler_test.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'handler_test.go') diff --git a/handler_test.go b/handler_test.go index e300d19..b1d5d2e 100644 --- a/handler_test.go +++ b/handler_test.go @@ -1,9 +1,14 @@ package main import ( + "io" + "net/http" + "net/http/httptest" + "strings" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var config = ` @@ -120,3 +125,44 @@ func TestPackageLevelURL(t *testing.T) { `) } + +func TestPostRejected(t *testing.T) { + t.Parallel() + + h := CreateHandler(&Config{ + URL: "go.uberalt.org", + Packages: map[string]Package{ + "zap": { + Repo: "github.com/uber-go/zap", + }, + }, + }) + srv := httptest.NewServer(h) + t.Cleanup(srv.Close) + + tests := []struct { + desc string + path string + }{ + {desc: "index", path: "/"}, + {desc: "package", path: "/zap"}, + {desc: "subpackage", path: "/zap/zapcore"}, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.desc, func(t *testing.T) { + t.Parallel() + + res, err := http.Post(srv.URL+tt.path, "text/plain", strings.NewReader("foo")) + require.NoError(t, err) + defer res.Body.Close() + + body, err := io.ReadAll(res.Body) + require.NoError(t, err) + + assert.Equal(t, http.StatusNotFound, res.StatusCode, + "expected 404, got:\n%s", string(body)) + }) + } +} -- cgit v1.2.3