Skip to content

Commit 3d29f75

Browse files
committed
unit tests
1 parent 7d4a3b9 commit 3d29f75

File tree

2 files changed

+119
-9
lines changed

2 files changed

+119
-9
lines changed

cli/docker_test.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,98 @@ func TestDocker(t *testing.T) {
6363
execer.AssertCommandsCalled(t)
6464
})
6565

66+
t.Run("Images", func(t *testing.T) {
67+
t.Parallel()
68+
69+
type testcase struct {
70+
name string
71+
image string
72+
success bool
73+
}
74+
75+
testcases := []testcase{
76+
{
77+
name: "Repository",
78+
image: "ubuntu",
79+
success: true,
80+
},
81+
{
82+
name: "RepositoryPath",
83+
image: "ubuntu/ubuntu",
84+
success: true,
85+
},
86+
87+
{
88+
name: "RepositoryLatest",
89+
image: "ubuntu:latest",
90+
success: true,
91+
},
92+
{
93+
name: "RepositoryTag",
94+
image: "ubuntu:24.04",
95+
success: true,
96+
},
97+
{
98+
name: "RepositoryPathTag",
99+
image: "ubuntu/ubuntu:18.04",
100+
success: true,
101+
},
102+
{
103+
name: "RegistryRepository",
104+
image: "gcr.io/ubuntu",
105+
success: true,
106+
},
107+
{
108+
name: "RegistryRepositoryTag",
109+
image: "gcr.io/ubuntu:24.04",
110+
success: true,
111+
},
112+
}
113+
114+
for _, tc := range testcases {
115+
tc := tc
116+
t.Run(tc.name, func(t *testing.T) {
117+
t.Parallel()
118+
119+
ctx, cmd := clitest.New(t, "docker",
120+
"--image="+tc.image,
121+
"--username=root",
122+
"--agent-token=hi",
123+
)
124+
125+
called := make(chan struct{})
126+
execer := clitest.Execer(ctx)
127+
client := clitest.DockerClient(t, ctx)
128+
execer.AddCommands(&xunixfake.FakeCmd{
129+
FakeCmd: &testingexec.FakeCmd{
130+
Argv: []string{
131+
"sysbox-mgr",
132+
},
133+
},
134+
WaitFn: func() error { close(called); select {} }, //nolint:revive
135+
})
136+
137+
var created bool
138+
client.ContainerCreateFn = func(_ context.Context, conf *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *v1.Platform, _ string) (container.CreateResponse, error) {
139+
created = true
140+
require.Equal(t, tc.image, conf.Image)
141+
return container.CreateResponse{}, nil
142+
}
143+
144+
err := cmd.ExecuteContext(ctx)
145+
if !tc.success {
146+
require.Error(t, err)
147+
return
148+
}
149+
150+
<-called
151+
require.NoError(t, err)
152+
require.True(t, created, "container create fn not called")
153+
execer.AssertCommandsCalled(t)
154+
})
155+
}
156+
})
157+
66158
// Test that dockerd is configured correctly.
67159
t.Run("DockerdConfigured", func(t *testing.T) {
68160
t.Parallel()

dockerutil/client_test.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,31 @@ import (
1111
func TestAuthConfigFromString(t *testing.T) {
1212
t.Parallel()
1313

14-
//nolint:gosec // this is a test
15-
creds := `{ "auths": { "docker.registry.test": { "auth": "Zm9vQGJhci5jb206YWJjMTIz" } } }`
16-
expectedUsername := "[email protected]"
17-
expectedPassword := "abc123"
18-
19-
cfg, err := dockerutil.AuthConfigFromString(creds, "docker.registry.test")
20-
require.NoError(t, err)
21-
require.Equal(t, expectedUsername, cfg.Username)
22-
require.Equal(t, expectedPassword, cfg.Password)
14+
t.Run("Auth", func(t *testing.T) {
15+
t.Parallel()
16+
17+
//nolint:gosec // this is a test
18+
creds := `{ "auths": { "docker.registry.test": { "auth": "Zm9vQGJhci5jb206YWJjMTIz" } } }`
19+
expectedUsername := "[email protected]"
20+
expectedPassword := "abc123"
21+
22+
cfg, err := dockerutil.AuthConfigFromString(creds, "docker.registry.test")
23+
require.NoError(t, err)
24+
require.Equal(t, expectedUsername, cfg.Username)
25+
require.Equal(t, expectedPassword, cfg.Password)
26+
})
27+
28+
t.Run("UsernamePassword", func(t *testing.T) {
29+
t.Parallel()
30+
31+
//nolint:gosec // this is a test
32+
creds := `{ "auths": { "docker.registry.test": { "username": "foobarbaz", "password": "123abc" } } }`
33+
expectedUsername := "foobarbaz"
34+
expectedPassword := "123abc"
35+
36+
cfg, err := dockerutil.AuthConfigFromString(creds, "docker.registry.test")
37+
require.NoError(t, err)
38+
require.Equal(t, expectedUsername, cfg.Username)
39+
require.Equal(t, expectedPassword, cfg.Password)
40+
})
2341
}

0 commit comments

Comments
 (0)