summaryrefslogtreecommitdiff
path: root/internal/gitlabnet/twofactorverify/clientmanual_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/gitlabnet/twofactorverify/clientmanual_test.go')
-rw-r--r--internal/gitlabnet/twofactorverify/clientmanual_test.go151
1 files changed, 0 insertions, 151 deletions
diff --git a/internal/gitlabnet/twofactorverify/clientmanual_test.go b/internal/gitlabnet/twofactorverify/clientmanual_test.go
deleted file mode 100644
index 6324165..0000000
--- a/internal/gitlabnet/twofactorverify/clientmanual_test.go
+++ /dev/null
@@ -1,151 +0,0 @@
-package twofactorverify
-
-import (
- "context"
- "encoding/json"
- "io"
- "net/http"
- "testing"
-
- "gitlab.com/gitlab-org/gitlab-shell/v14/internal/gitlabnet/discover"
-
- "github.com/stretchr/testify/require"
- "gitlab.com/gitlab-org/gitlab-shell/v14/client"
- "gitlab.com/gitlab-org/gitlab-shell/v14/client/testserver"
- "gitlab.com/gitlab-org/gitlab-shell/v14/internal/command/commandargs"
- "gitlab.com/gitlab-org/gitlab-shell/v14/internal/config"
-)
-
-func initializeManual(t *testing.T) []testserver.TestRequestHandler {
- requests := []testserver.TestRequestHandler{
- {
- Path: "/api/v4/internal/two_factor_manual_otp_check",
- Handler: func(w http.ResponseWriter, r *http.Request) {
- b, err := io.ReadAll(r.Body)
- defer r.Body.Close()
-
- require.NoError(t, err)
-
- var requestBody *RequestBody
- require.NoError(t, json.Unmarshal(b, &requestBody))
-
- switch requestBody.KeyId {
- case "0":
- body := map[string]interface{}{
- "success": true,
- }
- require.NoError(t, json.NewEncoder(w).Encode(body))
- case "1":
- body := map[string]interface{}{
- "success": false,
- "message": "error message",
- }
- require.NoError(t, json.NewEncoder(w).Encode(body))
- case "2":
- w.WriteHeader(http.StatusForbidden)
- body := &client.ErrorResponse{
- Message: "Not allowed!",
- }
- require.NoError(t, json.NewEncoder(w).Encode(body))
- case "3":
- w.Write([]byte("{ \"message\": \"broken json!\""))
- case "4":
- w.WriteHeader(http.StatusForbidden)
- }
-
- if requestBody.UserId == 1 {
- body := map[string]interface{}{
- "success": true,
- }
- require.NoError(t, json.NewEncoder(w).Encode(body))
- }
- },
- },
- {
- Path: "/api/v4/internal/discover",
- Handler: func(w http.ResponseWriter, r *http.Request) {
- body := &discover.Response{
- UserId: 1,
- Username: "jane-doe",
- Name: "Jane Doe",
- }
- require.NoError(t, json.NewEncoder(w).Encode(body))
- },
- },
- }
-
- return requests
-}
-
-const (
- manualOtpAttempt = "123456"
-)
-
-func TestVerifyOTPByKeyId(t *testing.T) {
- client := setupManual(t)
-
- args := &commandargs.Shell{GitlabKeyId: "0"}
- _, _, err := client.VerifyOTP(context.Background(), args, manualOtpAttempt)
- require.NoError(t, err)
-}
-
-func TestVerifyOTPByUsername(t *testing.T) {
- client := setupManual(t)
-
- args := &commandargs.Shell{GitlabUsername: "jane-doe"}
- _, _, err := client.VerifyOTP(context.Background(), args, manualOtpAttempt)
- require.NoError(t, err)
-}
-
-func TestErrorMessage(t *testing.T) {
- client := setupManual(t)
-
- args := &commandargs.Shell{GitlabKeyId: "1"}
- _, reason, _ := client.VerifyOTP(context.Background(), args, manualOtpAttempt)
- require.Equal(t, "error message", reason)
-}
-
-func TestErrorResponses(t *testing.T) {
- client := setupManual(t)
-
- testCases := []struct {
- desc string
- fakeId string
- expectedError string
- }{
- {
- desc: "A response with an error message",
- fakeId: "2",
- expectedError: "Not allowed!",
- },
- {
- desc: "A response with bad JSON",
- fakeId: "3",
- expectedError: "Parsing failed",
- },
- {
- desc: "An error response without message",
- fakeId: "4",
- expectedError: "Internal API error (403)",
- },
- }
-
- for _, tc := range testCases {
- t.Run(tc.desc, func(t *testing.T) {
- args := &commandargs.Shell{GitlabKeyId: tc.fakeId}
- _, _, err := client.VerifyOTP(context.Background(), args, manualOtpAttempt)
-
- require.EqualError(t, err, tc.expectedError)
- })
- }
-}
-
-func setupManual(t *testing.T) *Client {
- requests := initializeManual(t)
- url := testserver.StartSocketHttpServer(t, requests)
-
- client, err := NewClient(&config.Config{GitlabUrl: url})
- require.NoError(t, err)
-
- return client
-}