Skip to content

Commit 4a38977

Browse files
committed
improve testing strategy and errors handling
1 parent 960084d commit 4a38977

File tree

2 files changed

+56
-32
lines changed

2 files changed

+56
-32
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: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -135,40 +135,62 @@ 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+
tt := tt
158+
t.Run(tt.name, func(t *testing.T) {
159+
t.Parallel()
157160

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"},
161+
ctx := testutil.Context(t, testutil.WaitShort)
162+
dv := coderdtest.DeploymentValues(t)
163+
client, owner := coderdenttest.New(t, &coderdenttest.Options{
164+
Options: &coderdtest.Options{
165+
DeploymentValues: dv,
166+
},
167+
LicenseOptions: &coderdenttest.LicenseOptions{
168+
Features: license.Features{
169+
codersdk.FeatureMultipleOrganizations: 1,
170+
codersdk.FeatureExternalProvisionerDaemons: 1,
171+
},
172+
},
173+
})
174+
175+
key, err := client.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
176+
Name: "my-test-key",
177+
Tags: map[string]string{"key1": "value1", "key2": "value2"},
178+
})
179+
require.NoError(t, err)
180+
181+
pk := key.Key
182+
if tt.useFakeKey {
183+
pk = tt.fakeKey
184+
}
185+
186+
fetchedKey, err := client.GetProvisionerKey(ctx, pk)
187+
if !tt.success {
188+
require.ErrorContains(t, err, tt.expectedErr)
189+
} else {
190+
require.NoError(t, err)
191+
require.Equal(t, fetchedKey.Name, "my-test-key")
192+
require.Equal(t, fetchedKey.Tags, codersdk.ProvisionerKeyTags{"key1": "value1", "key2": "value2"})
193+
}
162194
})
163-
require.NoError(t, err)
164-
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"})
169-
170-
erroneousPK, err := client.GetProvisionerKey(ctx, "abcdefghijklmnopqrstuvwxyz01234567890123456")
171-
require.Empty(t, erroneousPK)
172-
require.Error(t, err)
173-
})
195+
}
174196
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy