@@ -134,3 +134,136 @@ func TestProvisionerKeys(t *testing.T) {
134
134
err = orgAdmin .DeleteProvisionerKey (ctx , owner .OrganizationID , codersdk .ProvisionerKeyNamePSK )
135
135
require .ErrorContains (t , err , "reserved" )
136
136
}
137
+
138
+ func TestGetProvisionerKey (t * testing.T ) {
139
+ t .Parallel ()
140
+
141
+ tests := []struct {
142
+ name string
143
+ useFakeKey bool
144
+ fakeKey string
145
+ success bool
146
+ expectedErr string
147
+ }{
148
+ {
149
+ name : "ok" ,
150
+ success : true ,
151
+ expectedErr : "" ,
152
+ },
153
+ {
154
+ name : "using unknown key" ,
155
+ useFakeKey : true ,
156
+ fakeKey : "unknownKey" ,
157
+ success : false ,
158
+ expectedErr : "provisioner daemon key invalid" ,
159
+ },
160
+ {
161
+ name : "no key provided" ,
162
+ useFakeKey : true ,
163
+ fakeKey : "" ,
164
+ success : false ,
165
+ expectedErr : "provisioner daemon key required" ,
166
+ },
167
+ }
168
+
169
+ for _ , tt := range tests {
170
+ tt := tt
171
+ t .Run (tt .name , func (t * testing.T ) {
172
+ t .Parallel ()
173
+
174
+ ctx := testutil .Context (t , testutil .WaitShort )
175
+ dv := coderdtest .DeploymentValues (t )
176
+ client , owner := coderdenttest .New (t , & coderdenttest.Options {
177
+ Options : & coderdtest.Options {
178
+ DeploymentValues : dv ,
179
+ },
180
+ LicenseOptions : & coderdenttest.LicenseOptions {
181
+ Features : license.Features {
182
+ codersdk .FeatureMultipleOrganizations : 1 ,
183
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
184
+ },
185
+ },
186
+ })
187
+
188
+ //nolint:gocritic // ignore This client is operating as the owner user, which has unrestricted permissions
189
+ key , err := client .CreateProvisionerKey (ctx , owner .OrganizationID , codersdk.CreateProvisionerKeyRequest {
190
+ Name : "my-test-key" ,
191
+ Tags : map [string ]string {"key1" : "value1" , "key2" : "value2" },
192
+ })
193
+ require .NoError (t , err )
194
+
195
+ pk := key .Key
196
+ if tt .useFakeKey {
197
+ pk = tt .fakeKey
198
+ }
199
+
200
+ fetchedKey , err := client .GetProvisionerKey (ctx , pk )
201
+ if ! tt .success {
202
+ require .ErrorContains (t , err , tt .expectedErr )
203
+ } else {
204
+ require .NoError (t , err )
205
+ require .Equal (t , fetchedKey .Name , "my-test-key" )
206
+ require .Equal (t , fetchedKey .Tags , codersdk.ProvisionerKeyTags {"key1" : "value1" , "key2" : "value2" })
207
+ }
208
+ })
209
+ }
210
+
211
+ t .Run ("TestPSK" , func (t * testing.T ) {
212
+ t .Parallel ()
213
+ const testPSK = "psk-testing-purpose"
214
+ ctx := testutil .Context (t , testutil .WaitShort )
215
+ dv := coderdtest .DeploymentValues (t )
216
+ client , owner := coderdenttest .New (t , & coderdenttest.Options {
217
+ ProvisionerDaemonPSK : testPSK ,
218
+ Options : & coderdtest.Options {
219
+ DeploymentValues : dv ,
220
+ },
221
+ LicenseOptions : & coderdenttest.LicenseOptions {
222
+ Features : license.Features {
223
+ codersdk .FeatureMultipleOrganizations : 1 ,
224
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
225
+ },
226
+ },
227
+ })
228
+
229
+ //nolint:gocritic // ignore This client is operating as the owner user, which has unrestricted permissions
230
+ _ , err := client .CreateProvisionerKey (ctx , owner .OrganizationID , codersdk.CreateProvisionerKeyRequest {
231
+ Name : "my-test-key" ,
232
+ Tags : map [string ]string {"key1" : "value1" , "key2" : "value2" },
233
+ })
234
+ require .NoError (t , err )
235
+
236
+ fetchedKey , err := client .GetProvisionerKey (ctx , testPSK )
237
+ require .ErrorContains (t , err , "provisioner daemon key invalid" )
238
+ require .Empty (t , fetchedKey )
239
+ })
240
+
241
+ t .Run ("TestSessionToken" , func (t * testing.T ) {
242
+ t .Parallel ()
243
+
244
+ ctx := testutil .Context (t , testutil .WaitShort )
245
+ dv := coderdtest .DeploymentValues (t )
246
+ client , owner := coderdenttest .New (t , & coderdenttest.Options {
247
+ Options : & coderdtest.Options {
248
+ DeploymentValues : dv ,
249
+ },
250
+ LicenseOptions : & coderdenttest.LicenseOptions {
251
+ Features : license.Features {
252
+ codersdk .FeatureMultipleOrganizations : 1 ,
253
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
254
+ },
255
+ },
256
+ })
257
+
258
+ //nolint:gocritic // ignore This client is operating as the owner user, which has unrestricted permissions
259
+ _ , err := client .CreateProvisionerKey (ctx , owner .OrganizationID , codersdk.CreateProvisionerKeyRequest {
260
+ Name : "my-test-key" ,
261
+ Tags : map [string ]string {"key1" : "value1" , "key2" : "value2" },
262
+ })
263
+ require .NoError (t , err )
264
+
265
+ fetchedKey , err := client .GetProvisionerKey (ctx , client .SessionToken ())
266
+ require .ErrorContains (t , err , "provisioner daemon key invalid" )
267
+ require .Empty (t , fetchedKey )
268
+ })
269
+ }
0 commit comments