@@ -66,6 +66,12 @@ const (
66
66
retentionRecords = 2
67
67
)
68
68
69
+ const (
70
+ testRegistryHtpasswdFileBasename = "authtest.htpasswd"
71
+ testRegistryUsername = "myuser"
72
+ testRegistryPassword = "mypass"
73
+ )
74
+
69
75
var (
70
76
testEnv * testenv.Environment
71
77
testStorage * Storage
@@ -94,69 +100,62 @@ var (
94
100
)
95
101
96
102
var (
97
- testRegistryClient * helmreg.Client
98
- testRegistryserver * RegistryClientTestServer
99
- )
100
-
101
- var (
102
- testWorkspaceDir = "registry-test"
103
- testHtpasswdFileBasename = "authtest.htpasswd"
104
- testUsername = "myuser"
105
- testPassword = "mypass"
103
+ testRegistryServer * registryClientTestServer
106
104
)
107
105
108
106
func init () {
109
107
rand .Seed (time .Now ().UnixNano ())
110
108
}
111
109
112
- type RegistryClientTestServer struct {
113
- Out io.Writer
114
- DockerRegistryHost string
115
- WorkspaceDir string
116
- RegistryClient * helmreg.Client
110
+ type registryClientTestServer struct {
111
+ out io.Writer
112
+ dockerRegistryHost string
113
+ workspaceDir string
114
+ registryClient * helmreg.Client
117
115
}
118
116
119
- func SetupServer (server * RegistryClientTestServer ) string {
117
+ func setupRegistryServer (ctx context.Context ) (* registryClientTestServer , error ) {
118
+ server := & registryClientTestServer {}
119
+
120
120
// Create a temporary workspace directory for the registry
121
- server .WorkspaceDir = testWorkspaceDir
122
- os .RemoveAll (server .WorkspaceDir )
123
- err := os .Mkdir (server .WorkspaceDir , 0700 )
121
+ workspaceDir , err := os .MkdirTemp ("" , "registry-test-" )
124
122
if err != nil {
125
- panic ( fmt .Sprintf ("failed to create workspace directory: %s " , err ) )
123
+ return nil , fmt .Errorf ("failed to create workspace directory: %w " , err )
126
124
}
125
+ server .workspaceDir = workspaceDir
127
126
128
127
var out bytes.Buffer
129
- server .Out = & out
128
+ server .out = & out
130
129
131
130
// init test client
132
- server .RegistryClient , err = helmreg .NewClient (
131
+ server .registryClient , err = helmreg .NewClient (
133
132
helmreg .ClientOptDebug (true ),
134
- helmreg .ClientOptWriter (server .Out ),
133
+ helmreg .ClientOptWriter (server .out ),
135
134
)
136
135
if err != nil {
137
- panic ( fmt .Sprintf ("failed to create registry client: %s" , err ) )
136
+ return nil , fmt .Errorf ("failed to create registry client: %s" , err )
138
137
}
139
138
140
139
// create htpasswd file (w BCrypt, which is required)
141
- pwBytes , err := bcrypt .GenerateFromPassword ([]byte (testPassword ), bcrypt .DefaultCost )
140
+ pwBytes , err := bcrypt .GenerateFromPassword ([]byte (testRegistryPassword ), bcrypt .DefaultCost )
142
141
if err != nil {
143
- panic ( fmt .Sprintf ("failed to generate password: %s" , err ) )
142
+ return nil , fmt .Errorf ("failed to generate password: %s" , err )
144
143
}
145
144
146
- htpasswdPath := filepath .Join (testWorkspaceDir , testHtpasswdFileBasename )
147
- err = ioutil .WriteFile (htpasswdPath , []byte (fmt .Sprintf ("%s:%s\n " , testUsername , string (pwBytes ))), 0644 )
145
+ htpasswdPath := filepath .Join (workspaceDir , testRegistryHtpasswdFileBasename )
146
+ err = ioutil .WriteFile (htpasswdPath , []byte (fmt .Sprintf ("%s:%s\n " , testRegistryUsername , string (pwBytes ))), 0644 )
148
147
if err != nil {
149
- panic ( fmt .Sprintf ("failed to create htpasswd file: %s" , err ) )
148
+ return nil , fmt .Errorf ("failed to create htpasswd file: %s" , err )
150
149
}
151
150
152
151
// Registry config
153
152
config := & configuration.Configuration {}
154
153
port , err := freeport .GetFreePort ()
155
154
if err != nil {
156
- panic ( fmt .Sprintf ("failed to get free port: %s" , err ) )
155
+ return nil , fmt .Errorf ("failed to get free port: %s" , err )
157
156
}
158
157
159
- server .DockerRegistryHost = fmt .Sprintf ("localhost:%d" , port )
158
+ server .dockerRegistryHost = fmt .Sprintf ("localhost:%d" , port )
160
159
config .HTTP .Addr = fmt .Sprintf ("127.0.0.1:%d" , port )
161
160
config .HTTP .DrainTimeout = time .Duration (10 ) * time .Second
162
161
config .Storage = map [string ]configuration.Parameters {"inmemory" : map [string ]interface {}{}}
@@ -166,15 +165,15 @@ func SetupServer(server *RegistryClientTestServer) string {
166
165
"path" : htpasswdPath ,
167
166
},
168
167
}
169
- dockerRegistry , err := dockerRegistry .NewRegistry (context . Background () , config )
168
+ dockerRegistry , err := dockerRegistry .NewRegistry (ctx , config )
170
169
if err != nil {
171
- panic ( fmt .Sprintf ("failed to create docker registry: %s " , err ) )
170
+ return nil , fmt .Errorf ("failed to create docker registry: %w " , err )
172
171
}
173
172
174
173
// Start Docker registry
175
174
go dockerRegistry .ListenAndServe ()
176
175
177
- return server . WorkspaceDir
176
+ return server , nil
178
177
}
179
178
180
179
func TestMain (m * testing.M ) {
@@ -199,12 +198,9 @@ func TestMain(m *testing.M) {
199
198
200
199
testMetricsH = controller .MustMakeMetrics (testEnv )
201
200
202
- testRegistryserver = & RegistryClientTestServer {}
203
- registryWorkspaceDir := SetupServer (testRegistryserver )
204
-
205
- testRegistryClient , err = helmreg .NewClient (helmreg .ClientOptWriter (os .Stdout ))
201
+ testRegistryServer , err = setupRegistryServer (ctx )
206
202
if err != nil {
207
- panic (fmt .Sprintf ("Failed to create OCI registry client" ))
203
+ panic (fmt .Sprintf ("Failed to create a test registry server: %v" , err ))
208
204
}
209
205
210
206
if err := (& GitRepositoryReconciler {
@@ -282,7 +278,7 @@ func TestMain(m *testing.M) {
282
278
panic (fmt .Sprintf ("Failed to remove storage server dir: %v" , err ))
283
279
}
284
280
285
- if err := os .RemoveAll (registryWorkspaceDir ); err != nil {
281
+ if err := os .RemoveAll (testRegistryServer . workspaceDir ); err != nil {
286
282
panic (fmt .Sprintf ("Failed to remove registry workspace dir: %v" , err ))
287
283
}
288
284
0 commit comments