File: audit_test.go

package info (click to toggle)
gitlab-shell 14.35.0%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,652 kB
  • sloc: ruby: 1,129; makefile: 583; sql: 391; sh: 384
file content (57 lines) | stat: -rw-r--r-- 1,420 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package gitauditevent

import (
	"context"
	"encoding/json"
	"io"
	"net/http"
	"testing"

	"github.com/stretchr/testify/require"
	"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"
	"gitlab.com/gitlab-org/gitlab-shell/v14/internal/gitlabnet/accessverifier"
	"gitlab.com/gitlab-org/gitlab-shell/v14/internal/gitlabnet/gitauditevent"
)

var (
	testUsername = "gitlab-shell"
	testRepo     = "project-1"
)

func TestGitAudit(t *testing.T) {
	called := false

	requests := []testserver.TestRequestHandler{
		{
			Path: "/api/v4/internal/shellhorse/git_audit_event",
			Handler: func(w http.ResponseWriter, r *http.Request) {
				called = true

				body, err := io.ReadAll(r.Body)
				require.NoError(t, err)
				defer r.Body.Close()

				var request *gitauditevent.Request
				require.NoError(t, json.Unmarshal(body, &request))
				require.Equal(t, testUsername, request.Username)
				require.Equal(t, testRepo, request.Repo)

				w.WriteHeader(http.StatusOK)
			},
		},
	}

	s := &commandargs.Shell{
		CommandType: commandargs.UploadArchive,
	}

	url := testserver.StartSocketHttpServer(t, requests)
	Audit(context.Background(), s.CommandType, &config.Config{GitlabUrl: url}, &accessverifier.Response{
		Username: testUsername,
		Repo:     testRepo,
	}, nil)

	require.True(t, called)
}