mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-16 15:10:12 +01:00
feat(api): implement new api handler
This commit is contained in:
parent
72e437f173
commit
47091761a5
17 changed files with 571 additions and 294 deletions
68
pkg/api/middleware/middleware_test.go
Normal file
68
pkg/api/middleware/middleware_test.go
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
package middleware
|
||||
|
||||
import (
|
||||
"github.com/containrrr/watchtower/pkg/api/prelude"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
const (
|
||||
token = "123123123"
|
||||
)
|
||||
|
||||
func TestAPI(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "Middleware Suite")
|
||||
}
|
||||
|
||||
var _ = Describe("API", func() {
|
||||
requireToken := RequireToken(token)
|
||||
|
||||
Describe("RequireToken middleware", func() {
|
||||
It("should return 401 Unauthorized when token is not provided", func() {
|
||||
rec := httptest.NewRecorder()
|
||||
req := httptest.NewRequest("GET", "/hello", nil)
|
||||
|
||||
requireToken(testHandler).ServeHTTP(rec, req)
|
||||
|
||||
Expect(rec.Code).To(Equal(http.StatusUnauthorized))
|
||||
Expect(rec.Body).To(MatchJSON(`{
|
||||
"code": "MISSING_TOKEN",
|
||||
"error": "No authentication token was supplied"
|
||||
}`))
|
||||
})
|
||||
|
||||
It("should return 401 Unauthorized when token is invalid", func() {
|
||||
rec := httptest.NewRecorder()
|
||||
req := httptest.NewRequest("GET", "/hello", nil)
|
||||
req.Header.Set("Authorization", "Bearer 123")
|
||||
|
||||
requireToken(testHandler).ServeHTTP(rec, req)
|
||||
|
||||
Expect(rec.Code).To(Equal(http.StatusUnauthorized))
|
||||
Expect(rec.Body).To(MatchJSON(`{
|
||||
"code": "INVALID_TOKEN",
|
||||
"error": "The supplied token does not match the configured auth token"
|
||||
}`))
|
||||
})
|
||||
|
||||
It("should return 200 OK when token is valid", func() {
|
||||
|
||||
rec := httptest.NewRecorder()
|
||||
req := httptest.NewRequest("GET", "/hello", nil)
|
||||
req.Header.Set("Authorization", "Bearer "+token)
|
||||
|
||||
requireToken(testHandler).ServeHTTP(rec, req)
|
||||
|
||||
Expect(rec.Code).To(Equal(http.StatusOK))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
func testHandler(_ *prelude.Context) prelude.Response {
|
||||
return prelude.OK("Hello!")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue