Skip to content

Commit 7ba5979

Browse files
committed
improve testing strategy and errors handling
1 parent 960084d commit 7ba5979

File tree

2 files changed

+57
-31
lines changed

2 files changed

+57
-31
lines changed

enterprise/coderd/provisionerkeys.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,9 @@ func (*API) fetchProvisionerKey(rw http.ResponseWriter, r *http.Request) {
214214
pk, ok := httpmw.ProvisionerKeyAuthOptional(r)
215215
// extra check but this one should never happen as it is covered by the auth middleware
216216
if !ok {
217-
httpapi.Forbidden(rw)
217+
httpapi.Write(ctx, rw, http.StatusForbidden, codersdk.Response{
218+
Message: fmt.Sprintf("unable to auth: please provide the %s header", codersdk.ProvisionerDaemonKey),
219+
})
218220
return
219221
}
220222

enterprise/coderd/provisionerkeys_test.go

Lines changed: 54 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -135,40 +135,64 @@ func TestProvisionerKeys(t *testing.T) {
135135
require.ErrorContains(t, err, "reserved")
136136
}
137137

138-
func TestProvisionerKey(t *testing.T) {
138+
func TestGetProvisionerKey(t *testing.T) {
139139
t.Parallel()
140-
t.Run("GetKey", func(t *testing.T) {
141-
t.Parallel()
142140

143-
ctx := testutil.Context(t, testutil.WaitShort)
141+
tests := []struct {
142+
name string
143+
useFakeKey bool
144+
fakeKey string
145+
success bool
146+
expectedErr string
147+
}{
148+
{
149+
name: "ok",
150+
useFakeKey: false,
151+
success: true,
152+
expectedErr: "",
153+
},
154+
}
144155

145-
dv := coderdtest.DeploymentValues(t)
146-
client, owner := coderdenttest.New(t, &coderdenttest.Options{
147-
Options: &coderdtest.Options{
148-
DeploymentValues: dv,
149-
},
150-
LicenseOptions: &coderdenttest.LicenseOptions{
151-
Features: license.Features{
152-
codersdk.FeatureMultipleOrganizations: 1,
153-
codersdk.FeatureExternalProvisionerDaemons: 1,
154-
},
155-
},
156-
})
156+
for _, tt := range tests {
157+
t.Run(tt.name, func(t *testing.T) {
157158

158-
// nolint:gocritic
159-
key, err := client.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
160-
Name: "my-test-key",
161-
Tags: map[string]string{"key1": "value1", "key2": "value2"},
162-
})
163-
require.NoError(t, err)
159+
t.Parallel()
164160

165-
fetchedKey, err := client.GetProvisionerKey(ctx, key.Key)
166-
require.NoError(t, err)
167-
require.Equal(t, fetchedKey.Name, "my-test-key")
168-
require.Equal(t, fetchedKey.Tags, codersdk.ProvisionerKeyTags{"key1": "value1", "key2": "value2"})
161+
ctx := testutil.Context(t, testutil.WaitShort)
169162

170-
erroneousPK, err := client.GetProvisionerKey(ctx, "abcdefghijklmnopqrstuvwxyz01234567890123456")
171-
require.Empty(t, erroneousPK)
172-
require.Error(t, err)
173-
})
163+
dv := coderdtest.DeploymentValues(t)
164+
client, owner := coderdenttest.New(t, &coderdenttest.Options{
165+
Options: &coderdtest.Options{
166+
DeploymentValues: dv,
167+
},
168+
LicenseOptions: &coderdenttest.LicenseOptions{
169+
Features: license.Features{
170+
codersdk.FeatureMultipleOrganizations: 1,
171+
codersdk.FeatureExternalProvisionerDaemons: 1,
172+
},
173+
},
174+
})
175+
176+
// nolint:gocritic - ruleguard: This client is operating as the owner user, which has unrestricted permissions.
177+
key, err := client.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
178+
Name: "my-test-key",
179+
Tags: map[string]string{"key1": "value1", "key2": "value2"},
180+
})
181+
require.NoError(t, err)
182+
183+
pk := key.Key
184+
if tt.useFakeKey {
185+
pk = tt.fakeKey
186+
}
187+
188+
fetchedKey, err := client.GetProvisionerKey(ctx, pk)
189+
if !tt.success {
190+
require.ErrorContains(t, err, tt.expectedErr)
191+
} else {
192+
require.NoError(t, err)
193+
require.Equal(t, fetchedKey.Name, "my-test-key")
194+
require.Equal(t, fetchedKey.Tags, codersdk.ProvisionerKeyTags{"key1": "value1", "key2": "value2"})
195+
}
196+
})
197+
}
174198
}

0 commit comments

Comments
 (0)