Skip to content

Commit 28a92c8

Browse files
committed
refactor: Add httpok to the project
Remove testrunner and basic middleware structure being provided by httpok. Fixes: #16
1 parent 8c8717b commit 28a92c8

File tree

7 files changed

+5
-827
lines changed

7 files changed

+5
-827
lines changed

go.mod

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ module github.com/candango/gopeasant
33
go 1.20
44

55
require (
6-
github.com/go-kit/kit v0.13.0
6+
github.com/candango/httpok v0.0.1
77
github.com/stretchr/testify v1.9.0
88
)
99

1010
require (
1111
github.com/davecgh/go-spew v1.1.1 // indirect
12-
github.com/go-kit/log v0.2.0 // indirect
13-
github.com/go-logfmt/logfmt v0.5.1 // indirect
1412
github.com/pmezard/go-difflib v1.0.0 // indirect
1513
gopkg.in/yaml.v3 v3.0.1 // indirect
1614
)

go.sum

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1+
github.com/candango/httpok v0.0.1 h1:DFlwo6zPA/5Xv86frxbb9KfaN0Ikwbd9tvBMfFyuGqk=
2+
github.com/candango/httpok v0.0.1/go.mod h1:nf0tAd+GqSP2ICKs97PLdmjaLQjm14o67Gy7EKf4OfA=
13
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
24
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3-
github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=
4-
github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=
55
github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw=
6-
github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
76
github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
8-
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
97
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
108
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
119
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=

middleware.go

-17
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,6 @@ import (
1818
"net/http"
1919
)
2020

21-
// Middleware represents a function that can wrap a http.Handler with
22-
// additional functionality. It takes a http.Handler and returns a new
23-
// http.Handler that includes the middleware's behavior.
24-
type Middleware func(http.Handler) http.Handler
25-
26-
// Chain creates a chain of HTTP middleware functions to wrap around a
27-
// http.Handler.
28-
// It applies each middleware in the order they are provided, allowing for
29-
// layered processing of HTTP requests and responses.
30-
func Chain(next http.Handler, ms ...Middleware) http.Handler {
31-
for i := len(ms) - 1; i >= 0; i-- {
32-
m := ms[i]
33-
next = m(next)
34-
}
35-
return next
36-
}
37-
3821
// Nonced is a middleware that verifies the presence of a valid nonce in a
3922
// request.
4023
// If the nonce is not provided or is invalid, it prevents the request from

middleware_test.go

+1-81
Original file line numberDiff line numberDiff line change
@@ -20,90 +20,10 @@ import (
2020
"time"
2121

2222
"github.com/candango/gopeasant/dummy"
23-
"github.com/candango/gopeasant/testrunner"
23+
"github.com/candango/httpok/testrunner"
2424
"github.com/stretchr/testify/assert"
2525
)
2626

27-
type PlainHandler struct {
28-
http.Handler
29-
}
30-
31-
func (h *PlainHandler) GetSomething(w http.ResponseWriter, r *http.Request) {
32-
w.Write([]byte("Something"))
33-
}
34-
35-
func (h *PlainHandler) GetSomethingElse(w http.ResponseWriter, r *http.Request) {
36-
w.Write([]byte("Something else"))
37-
}
38-
39-
func NewPlainServeMux() http.Handler {
40-
plain := &PlainHandler{}
41-
h := http.NewServeMux()
42-
h.HandleFunc("/something", plain.GetSomething)
43-
h.HandleFunc("/something_else", plain.GetSomethingElse)
44-
return h
45-
}
46-
47-
func TestChainMiddlewareServer(t *testing.T) {
48-
plain := NewPlainServeMux()
49-
50-
runner := testrunner.NewHttpTestRunner(t).WithHandler(plain)
51-
52-
t.Run("Plain runner", func(t *testing.T) {
53-
res, err := runner.WithPath("/something").Get()
54-
if err != nil {
55-
t.Error(err)
56-
}
57-
assert.Equal(t, "200 OK", res.Status)
58-
assert.Equal(t, "Something", testrunner.BodyAsString(t, res))
59-
60-
res, err = runner.WithPath("/something_else").Get()
61-
if err != nil {
62-
t.Error(err)
63-
}
64-
assert.Equal(t, "200 OK", res.Status)
65-
assert.Equal(t, "Something else", testrunner.BodyAsString(t, res))
66-
})
67-
68-
changeSomething := func(next http.Handler) http.Handler {
69-
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
70-
if r.URL.String() == "/something" {
71-
w.Write([]byte("First Middleware with "))
72-
}
73-
next.ServeHTTP(w, r)
74-
})
75-
}
76-
77-
blockSomethingElse := func(next http.Handler) http.Handler {
78-
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
79-
if r.URL.String() == "/something_else" {
80-
http.Error(w, "Not allowed", http.StatusMethodNotAllowed)
81-
return
82-
}
83-
next.ServeHTTP(w, r)
84-
})
85-
}
86-
87-
chain := Chain(plain, changeSomething, blockSomethingElse)
88-
runner = testrunner.NewHttpTestRunner(t).WithHandler(chain)
89-
90-
t.Run("Chained runner", func(t *testing.T) {
91-
res, err := runner.WithPath("/something").Get()
92-
if err != nil {
93-
t.Error(err)
94-
}
95-
assert.Equal(t, "200 OK", res.Status)
96-
assert.Equal(t, "First Middleware with Something", testrunner.BodyAsString(t, res))
97-
98-
res, err = runner.WithPath("/something_else").Get()
99-
if err != nil {
100-
t.Error(err)
101-
}
102-
assert.Equal(t, "405 Method Not Allowed", res.Status)
103-
assert.Equal(t, "Not allowed\n", testrunner.BodyAsString(t, res))
104-
})
105-
}
106-
10727
func NewNoncedServeMux(t *testing.T) http.Handler {
10828
s := dummy.NewDummyInMemoryNonceService()
10929
nonced := NewNoncedHandler(s)

server_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"time"
2121

2222
"github.com/candango/gopeasant/dummy"
23-
"github.com/candango/gopeasant/testrunner"
23+
"github.com/candango/httpok/testrunner"
2424
"github.com/stretchr/testify/assert"
2525
)
2626

0 commit comments

Comments
 (0)