@@ -16,6 +16,7 @@ import (
16
16
. "github.com/onsi/gomega"
17
17
. "github.com/onsi/gomega/types"
18
18
19
+ "context"
19
20
"net/http"
20
21
)
21
22
@@ -35,38 +36,47 @@ var _ = Describe("the client", func() {
35
36
containerUnknown := * mockContainerWithImageName ("unknown.repo/prefix/imagename:latest" )
36
37
containerKnown := * mockContainerWithImageName ("docker.io/prefix/imagename:latest" )
37
38
38
- When (" warn on head failure is set to \ " always\" " , func () {
39
- c := newClientNoAPI ( false , false , false , false , false , "always" )
39
+ When (` warn on head failure is set to "always"` , func () {
40
+ c := dockerClient { ClientOptions : ClientOptions { WarnOnHeadFailed : WarnAlways }}
40
41
It ("should always return true" , func () {
41
42
Expect (c .WarnOnHeadPullFailed (containerUnknown )).To (BeTrue ())
42
43
Expect (c .WarnOnHeadPullFailed (containerKnown )).To (BeTrue ())
43
44
})
44
45
})
45
- When (" warn on head failure is set to \ " auto\" " , func () {
46
- c := newClientNoAPI ( false , false , false , false , false , "auto" )
47
- It ("should always return true " , func () {
46
+ When (` warn on head failure is set to "auto"` , func () {
47
+ c := dockerClient { ClientOptions : ClientOptions { WarnOnHeadFailed : WarnAuto }}
48
+ It ("should return false for unknown repos " , func () {
48
49
Expect (c .WarnOnHeadPullFailed (containerUnknown )).To (BeFalse ())
49
50
})
50
- It ("should" , func () {
51
+ It ("should return true for known repos " , func () {
51
52
Expect (c .WarnOnHeadPullFailed (containerKnown )).To (BeTrue ())
52
53
})
53
54
})
54
- When (" warn on head failure is set to \ " never\" " , func () {
55
- c := newClientNoAPI ( false , false , false , false , false , "never" )
55
+ When (` warn on head failure is set to "never"` , func () {
56
+ c := dockerClient { ClientOptions : ClientOptions { WarnOnHeadFailed : WarnNever }}
56
57
It ("should never return true" , func () {
57
58
Expect (c .WarnOnHeadPullFailed (containerUnknown )).To (BeFalse ())
58
59
Expect (c .WarnOnHeadPullFailed (containerKnown )).To (BeFalse ())
59
60
})
60
61
})
61
62
})
63
+ When ("pulling the latest image" , func () {
64
+ When ("the image consist of a pinned hash" , func () {
65
+ It ("should gracefully fail with a useful message" , func () {
66
+ c := dockerClient {}
67
+ pinnedContainer := * mockContainerWithImageName ("sha256:fa5269854a5e615e51a72b17ad3fd1e01268f278a6684c8ed3c5f0cdce3f230b" )
68
+ c .PullImage (context .Background (), pinnedContainer )
69
+ })
70
+ })
71
+ })
62
72
When ("listing containers" , func () {
63
73
When ("no filter is provided" , func () {
64
74
It ("should return all available containers" , func () {
65
75
mockServer .AppendHandlers (mocks .ListContainersHandler ("running" ))
66
76
mockServer .AppendHandlers (mocks .GetContainerHandlers ("watchtower" , "running" )... )
67
77
client := dockerClient {
68
- api : docker ,
69
- pullImages : false ,
78
+ api : docker ,
79
+ ClientOptions : ClientOptions { PullImages : false } ,
70
80
}
71
81
containers , err := client .ListContainers (filters .NoFilter )
72
82
Expect (err ).NotTo (HaveOccurred ())
@@ -79,8 +89,8 @@ var _ = Describe("the client", func() {
79
89
mockServer .AppendHandlers (mocks .GetContainerHandlers ("watchtower" , "running" )... )
80
90
filter := filters .FilterByNames ([]string {"lollercoaster" }, filters .NoFilter )
81
91
client := dockerClient {
82
- api : docker ,
83
- pullImages : false ,
92
+ api : docker ,
93
+ ClientOptions : ClientOptions { PullImages : false } ,
84
94
}
85
95
containers , err := client .ListContainers (filter )
86
96
Expect (err ).NotTo (HaveOccurred ())
@@ -92,8 +102,8 @@ var _ = Describe("the client", func() {
92
102
mockServer .AppendHandlers (mocks .ListContainersHandler ("running" ))
93
103
mockServer .AppendHandlers (mocks .GetContainerHandlers ("watchtower" , "running" )... )
94
104
client := dockerClient {
95
- api : docker ,
96
- pullImages : false ,
105
+ api : docker ,
106
+ ClientOptions : ClientOptions { PullImages : false } ,
97
107
}
98
108
containers , err := client .ListContainers (filters .WatchtowerContainersFilter )
99
109
Expect (err ).NotTo (HaveOccurred ())
@@ -105,9 +115,8 @@ var _ = Describe("the client", func() {
105
115
mockServer .AppendHandlers (mocks .ListContainersHandler ("running" , "exited" , "created" ))
106
116
mockServer .AppendHandlers (mocks .GetContainerHandlers ("stopped" , "watchtower" , "running" )... )
107
117
client := dockerClient {
108
- api : docker ,
109
- pullImages : false ,
110
- includeStopped : true ,
118
+ api : docker ,
119
+ ClientOptions : ClientOptions {PullImages : false , IncludeStopped : true },
111
120
}
112
121
containers , err := client .ListContainers (filters .NoFilter )
113
122
Expect (err ).NotTo (HaveOccurred ())
@@ -119,9 +128,8 @@ var _ = Describe("the client", func() {
119
128
mockServer .AppendHandlers (mocks .ListContainersHandler ("running" , "restarting" ))
120
129
mockServer .AppendHandlers (mocks .GetContainerHandlers ("watchtower" , "running" , "restarting" )... )
121
130
client := dockerClient {
122
- api : docker ,
123
- pullImages : false ,
124
- includeRestarting : true ,
131
+ api : docker ,
132
+ ClientOptions : ClientOptions {PullImages : false , IncludeRestarting : true },
125
133
}
126
134
containers , err := client .ListContainers (filters .NoFilter )
127
135
Expect (err ).NotTo (HaveOccurred ())
@@ -133,9 +141,8 @@ var _ = Describe("the client", func() {
133
141
mockServer .AppendHandlers (mocks .ListContainersHandler ("running" ))
134
142
mockServer .AppendHandlers (mocks .GetContainerHandlers ("watchtower" , "running" )... )
135
143
client := dockerClient {
136
- api : docker ,
137
- pullImages : false ,
138
- includeRestarting : false ,
144
+ api : docker ,
145
+ ClientOptions : ClientOptions {PullImages : false , IncludeRestarting : false },
139
146
}
140
147
containers , err := client .ListContainers (filters .NoFilter )
141
148
Expect (err ).NotTo (HaveOccurred ())
@@ -147,8 +154,8 @@ var _ = Describe("the client", func() {
147
154
When (`logging` , func () {
148
155
It ("should include container id field" , func () {
149
156
client := dockerClient {
150
- api : docker ,
151
- pullImages : false ,
157
+ api : docker ,
158
+ ClientOptions : ClientOptions { PullImages : false } ,
152
159
}
153
160
154
161
// Capture logrus output in buffer
0 commit comments