master
go 68 lines 1.69 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package dockerfunc
4
5 import (
6 "context"
7 "errors"
8 "testing"
9
10 typesContainer "github.com/docker/docker/api/types/container"
11 typesImage "github.com/docker/docker/api/types/image"
12 "github.com/stretchr/testify/assert"
13 "github.com/stretchr/testify/require"
14 )
15
16 type mockDeps struct {
17 client DockerClient
18 err error
19 }
20
21 func (m mockDeps) DockerClient() (DockerClient, error) {
22 if m.err != nil {
23 return nil, m.err
24 }
25 if m.client == nil {
26 return nil, errors.New("collector docker client is not ready")
27 }
28 return m.client, nil
29 }
30
31 type mockDockerClient struct {
32 containers []typesContainer.Summary
33 listErr error
34 }
35
36 func (m mockDockerClient) ContainerList(ctx context.Context, opts typesContainer.ListOptions) ([]typesContainer.Summary, error) {
37 if m.listErr != nil {
38 return nil, m.listErr
39 }
40 return m.containers, nil
41 }
42
43 func (m mockDockerClient) ImageList(ctx context.Context, opts typesImage.ListOptions) ([]typesImage.Summary, error) {
44 return nil, nil
45 }
46
47 func TestDockerMethods(t *testing.T) {
48 methods := Methods()
49
50 require.Len(t, methods, 1)
51 assert.Equal(t, containersMethodID, methods[0].ID)
52 assert.Equal(t, "Containers", methods[0].Name)
53 assert.Empty(t, methods[0].RequiredParams)
54 }
55
56 func TestRouter_NotFound(t *testing.T) {
57 r := newRouter(mockDeps{client: mockDockerClient{}})
58 resp := r.Handle(context.Background(), "unknown-method", nil)
59 require.NotNil(t, resp)
60 assert.Equal(t, 404, resp.Status)
61 }
62
63 func TestRouter_MethodParamsUnknownMethod(t *testing.T) {
64 r := newRouter(mockDeps{client: mockDockerClient{}})
65 _, err := r.MethodParams(context.Background(), "unknown-method")
66 require.Error(t, err)
67 assert.Contains(t, err.Error(), "unknown method")
68 }