package tokens_test import ( "gitea.deepak.science/deepak/gogmagog/models" "gitea.deepak.science/deepak/gogmagog/tokens" "github.com/stretchr/testify/assert" "log" "net/http" "net/http/httptest" "testing" ) var dtMiddlewareURL string = "/" func dtRequestAuth(header string) *http.Request { req, _ := http.NewRequest("GET", dtMiddlewareURL, nil) req.Header.Add(authKey, header) return req } func verifyingHandlerdt(t *testing.T, username string, userID int) http.Handler { assert := assert.New(t) toker := tokens.GetDeterministicToker() dummyHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() receivedID, _ := tokens.GetUserID(ctx) receivedUsername, _ := tokens.GetUsername(ctx) assert.EqualValues(userID, receivedID) assert.Equal(username, receivedUsername) }) return toker.Authenticator(dummyHandler) } func TestMiddlewareNoTokendt(t *testing.T) { assert := assert.New(t) req := httptest.NewRequest(http.MethodGet, dtMiddlewareURL, nil) rr := httptest.NewRecorder() middlewareHandler := verifyingHandlerdt(t, "", 0) middlewareHandler.ServeHTTP(rr, req) status := rr.Code assert.Equal(http.StatusUnauthorized, status) } func TestMiddlewareBadTokendt(t *testing.T) { assert := assert.New(t) req := mwRequestAuth("Bearer bad") rr := httptest.NewRecorder() middlewareHandler := verifyingHandlerdt(t, "", 0) middlewareHandler.ServeHTTP(rr, req) status := rr.Code assert.Equal(http.StatusUnauthorized, status) } func TestMiddlewareGoodTokendt(t *testing.T) { assert := assert.New(t) idToUse := 3 username := "username" displayName := "display name" user := &models.UserNoPassword{UserID: int64(idToUse), Username: username, DisplayName: displayName} toker := tokens.GetDeterministicToker() validToken := toker.EncodeUser(user) log.Print(validToken) req := mwRequestAuth("Bearer " + validToken) rr := httptest.NewRecorder() middlewareHandler := verifyingHandlerdt(t, username, idToUse) middlewareHandler.ServeHTTP(rr, req) status := rr.Code assert.Equal(http.StatusOK, status) }