func TestAuthenticateRequestTokenError(t *testing.T) { auth := New(authenticator.TokenFunc(func(token string) (user.Info, bool, error) { return nil, false, errors.New("error") })) user, ok, err := auth.AuthenticateRequest(&http.Request{ Header: http.Header{"Authorization": []string{"Bearer token"}}, }) if ok || user != nil || err == nil { t.Errorf("expected error") } }
func TestAuthenticateRequest(t *testing.T) { auth := New(authenticator.TokenFunc(func(token string) (user.Info, bool, error) { if token != "token" { t.Errorf("unexpected token: %s", token) } return &user.DefaultInfo{Name: "user"}, true, nil })) user, ok, err := auth.AuthenticateRequest(&http.Request{ Header: http.Header{"Authorization": []string{"Bearer token"}}, }) if !ok || user == nil || err != nil { t.Errorf("expected valid user") } }
func TestAuthenticateRequestBadValue(t *testing.T) { testCases := []struct { Req *http.Request }{ {Req: &http.Request{}}, {Req: &http.Request{Header: http.Header{"Authorization": []string{"Bearer"}}}}, {Req: &http.Request{Header: http.Header{"Authorization": []string{"bear token"}}}}, {Req: &http.Request{Header: http.Header{"Authorization": []string{"Bearer: token"}}}}, } for i, testCase := range testCases { auth := New(authenticator.TokenFunc(func(token string) (user.Info, bool, error) { t.Errorf("authentication should not have been called") return nil, false, nil })) user, ok, err := auth.AuthenticateRequest(testCase.Req) if ok || user != nil || err != nil { t.Errorf("%d: expected not authenticated (no token)", i) } } }