Documentation
¶
Index ¶
- Variables
- func NewTestServer(tb testing.TB, options TestServerOptions) (url string, cleanup func())
- func SetupAndStartGitlabServer(tb testing.TB, shellDir string, c *TestServerOptions) (string, func())
- func WriteShellSecretFile(tb testing.TB, dir, secretToken string) string
- type AllowedParams
- type CheckInfo
- type Client
- type HTTPClient
- func (c *HTTPClient) Allowed(ctx context.Context, params AllowedParams) (bool, string, error)
- func (c *HTTPClient) Check(ctx context.Context) (*CheckInfo, error)
- func (c *HTTPClient) Collect(metrics chan<- prometheus.Metric)
- func (c *HTTPClient) Describe(descs chan<- *prometheus.Desc)
- func (c *HTTPClient) PostReceive(ctx context.Context, glRepository, glID, changes string, clientCtx []byte, ...) (bool, []PostReceiveMessage, error)
- func (c *HTTPClient) PreReceive(ctx context.Context, glRepository string) (bool, error)
- type MockClient
- func (m *MockClient) Allowed(ctx context.Context, params AllowedParams) (bool, string, error)
- func (m *MockClient) Check(ctx context.Context) (*CheckInfo, error)
- func (m *MockClient) PostReceive(ctx context.Context, glRepository, glID, changes string, clientCtx []byte, ...) (bool, []PostReceiveMessage, error)
- func (m *MockClient) PreReceive(ctx context.Context, glRepository string) (bool, error)
- type PostReceiveMessage
- type TestServerOptions
Constants ¶
This section is empty.
Variables ¶
var ( // MockAllowed is a callback for the MockClient's `Allowed()` function which always allows a // change. MockAllowed = func(context.Context, AllowedParams) (bool, string, error) { return true, "", nil } // MockPreReceive is a callback for the MockClient's `PreReceive()` function which always // allows a change. MockPreReceive = func(context.Context, string) (bool, error) { return true, nil } // MockPostReceive is a callback for the MockCLient's `PostReceive()` function which always // allows a change. MockPostReceive = func(context.Context, string, string, string, []byte, ...string) (bool, []PostReceiveMessage, error) { return true, nil, nil } )
Functions ¶
func NewTestServer ¶
func NewTestServer(tb testing.TB, options TestServerOptions) (url string, cleanup func())
NewTestServer returns a mock gitlab server that responds to the hook api endpoints
func SetupAndStartGitlabServer ¶
func SetupAndStartGitlabServer(tb testing.TB, shellDir string, c *TestServerOptions) (string, func())
SetupAndStartGitlabServer creates a new GitlabTestServer, starts it and sets up the gitlab-shell secret.
Types ¶
type AllowedParams ¶
type AllowedParams struct {
// RepoPath is an absolute path to the repository.
RepoPath string
// RelativePath is the relative path to the repository.
RelativePath string
// GitObjectDirectory is a path to git object directory.
GitObjectDirectory string
// GitAlternateObjectDirectories are the paths to alternate object directories.
GitAlternateObjectDirectories []string
// GLRepository is a name of the repository.
GLRepository string
// GLID is an identifier of the repository.
GLID string
// GLProtocol is a protocol used for operation.
GLProtocol string
// Changes is a set of changes to be applied.
Changes string
// PushOptions is a list of the specified push options.
PushOptions []string
// ClientContext contains the context passed through the RPCs.
ClientContext []byte
}
AllowedParams compose set of parameters required to call 'GitlabAPI.Allowed' method.
type CheckInfo ¶
type CheckInfo struct {
// Version of the GitLab Rails component
Version string `json:"gitlab_version"`
// Revision of the Git object of the running GitLab
Revision string `json:"gitlab_revision"`
// APIVersion of GitLab, expected to be v4
APIVersion string `json:"api_version"`
// RedisReachable shows if GitLab can reach Redis. This can be false
// while the check itself succeeds. Normal hook API calls will likely
// fail.
RedisReachable bool `json:"redis"`
}
CheckInfo represents the response of GitLabs `check` API endpoint
type Client ¶
type Client interface {
// Allowed queries the gitlab internal api /allowed endpoint to determine if a ref change for a given repository and user is allowed
Allowed(ctx context.Context, params AllowedParams) (bool, string, error)
// Check verifies that GitLab can be reached, and authenticated to
Check(ctx context.Context) (*CheckInfo, error)
// PreReceive queries the gitlab internal api /pre_receive to increase the reference counter
PreReceive(ctx context.Context, glRepository string) (bool, error)
// PostReceive queries the gitlab internal api /post_receive to decrease the reference counter
PostReceive(ctx context.Context, glRepository, glID, changes string, clientContext []byte, pushOptions ...string) (bool, []PostReceiveMessage, error)
}
Client is an interface for accessing the GitLab internal API
func NewMockClient ¶
func NewMockClient( tb testing.TB, allowed func(context.Context, AllowedParams) (bool, string, error), preReceive func(context.Context, string) (bool, error), postReceive func(context.Context, string, string, string, []byte, ...string) (bool, []PostReceiveMessage, error), ) Client
NewMockClient returns a new mock client for the internal GitLab API.
func NewStubClient ¶
func NewStubClient() Client
NewStubClient returns a Client that stubs out all calls to Rails' internal API and returns as if they were succcessful.
type HTTPClient ¶
type HTTPClient struct {
*client.GitlabNetClient
// contains filtered or unexported fields
}
HTTPClient is an HTTP client used to talk to the internal GitLab Rails API.
func NewHTTPClient ¶
func NewHTTPClient( logger log.Logger, gitlabCfg config.Gitlab, tlsCfg config.TLS, promCfg gitalycfgprom.Config, ) (*HTTPClient, error)
NewHTTPClient creates an HTTP client to talk to the Rails internal API
func (*HTTPClient) Allowed ¶
func (c *HTTPClient) Allowed(ctx context.Context, params AllowedParams) (bool, string, error)
Allowed checks if a ref change for a given repository is allowed through the gitlab internal api /allowed endpoint
func (*HTTPClient) Check ¶
func (c *HTTPClient) Check(ctx context.Context) (*CheckInfo, error)
Check performs an HTTP request to the internal/check API endpoint to verify the connection and tokens. It returns basic information of the installed GitLab
func (*HTTPClient) Collect ¶
func (c *HTTPClient) Collect(metrics chan<- prometheus.Metric)
Collect collects Prometheus metrics exposed by the HTTPClient.
func (*HTTPClient) Describe ¶
func (c *HTTPClient) Describe(descs chan<- *prometheus.Desc)
Describe describes Prometheus metrics exposed by the HTTPClient.
func (*HTTPClient) PostReceive ¶
func (c *HTTPClient) PostReceive(ctx context.Context, glRepository, glID, changes string, clientCtx []byte, pushOptions ...string) (bool, []PostReceiveMessage, error)
PostReceive decreases the reference counter for a push for a given gl_repository through the gitlab internal API /post_receive endpoint
func (*HTTPClient) PreReceive ¶
PreReceive increases the reference counter for a push for a given gl_repository through the gitlab internal API /pre_receive endpoint
type MockClient ¶
type MockClient struct {
// contains filtered or unexported fields
}
MockClient is a mock client of the internal GitLab API.
func (*MockClient) Allowed ¶
func (m *MockClient) Allowed(ctx context.Context, params AllowedParams) (bool, string, error)
Allowed does nothing and always returns true.
func (*MockClient) Check ¶
func (m *MockClient) Check(ctx context.Context) (*CheckInfo, error)
Check does nothing and always returns a CheckInfo prepopulated with static data.
func (*MockClient) PostReceive ¶
func (m *MockClient) PostReceive(ctx context.Context, glRepository, glID, changes string, clientCtx []byte, gitPushOptions ...string) (bool, []PostReceiveMessage, error)
PostReceive does nothing and always returns true.
func (*MockClient) PreReceive ¶
PreReceive does nothing and always return true.
type PostReceiveMessage ¶
PostReceiveMessage encapsulates a message from the /post_receive endpoint that gets printed to stdout
type TestServerOptions ¶
type TestServerOptions struct {
User, Password, SecretToken string
GLID string
GLRepository string
Changes string
PostReceiveMessages []string
PostReceiveAlerts []string
PostReceiveCounterDecreased bool
UnixSocket bool
LfsStatusCode int
LfsOid string
LfsBody string
Protocol string
GitPushOptions []string
GitObjectDir string
GitAlternateObjectDirs []string
RepoPath string
RelativeURLRoot string
GlRepository string
ClientCertificate *testhelper.Certificate
ServerCertificate *testhelper.Certificate
}
TestServerOptions is a config for a mock gitlab server containing expected values