diff options
author | Krasimir Angelov <kangelov@gitlab.com> | 2019-11-28 03:50:45 +0300 |
---|---|---|
committer | Krasimir Angelov <kangelov@gitlab.com> | 2019-11-28 03:52:43 +0300 |
commit | 8e6746cf1c65e0185a08e3cd363bdca8e7b840ef (patch) | |
tree | 824042c724ff8a4c2e58da0dda8de78122177f8c | |
parent | 577edc7b472e7defe44d98180047863d37322d19 (diff) |
Improve GitLab client tests
-rw-r--r-- | internal/source/gitlab/client_test.go | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/internal/source/gitlab/client_test.go b/internal/source/gitlab/client_test.go index ec67ad7e..1d63a590 100644 --- a/internal/source/gitlab/client_test.go +++ b/internal/source/gitlab/client_test.go @@ -63,26 +63,23 @@ func TestGetVirtualDomainAuthenticatedRequest(t *testing.T) { require.Equal(t, "GET", r.Method) require.Equal(t, "group.gitlab.io", r.FormValue("host")) - if !checkRequest(r.Header.Get("Gitlab-Pages-Api-Request")) { - w.WriteHeader(http.StatusUnauthorized) - return - } + validateToken(t, r.Header.Get("Gitlab-Pages-Api-Request")) response := `{ "certificate": "foo", "key": "bar", "lookup_paths": [ - { - "project_id": 123, - "access_control": false, - "source": { - "type": "file", - "path": "mygroup/myproject/public/" - }, - "https_only": true, - "prefix": "/myproject/" - } - ] + { + "project_id": 123, + "access_control": false, + "source": { + "type": "file", + "path": "mygroup/myproject/public/" + }, + "https_only": true, + "prefix": "/myproject/" + } + ] }` w.WriteHeader(http.StatusOK) @@ -110,25 +107,21 @@ func TestGetVirtualDomainAuthenticatedRequest(t *testing.T) { require.Equal(t, "mygroup/myproject/public/", lookupPath.Source.Path) } -func checkRequest(tokenString string) bool { - token, _ := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { +func validateToken(t *testing.T, tokenString string) { + token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) } return secretKey(), nil }) + require.NoError(t, err) claims, ok := token.Claims.(jwt.MapClaims) - if !ok || !token.Valid { - return false - } - - if _, ok := claims["exp"]; !ok { - return false - } - - return claims["iss"] == "gitlab-pages" + require.True(t, ok) + require.True(t, token.Valid) + require.NotNil(t, claims["exp"]) + require.Equal(t, "gitlab-pages", claims["iss"]) } func secretKey() []byte { |