Skip to content

Commit ea03587

Browse files
committed
tests
1 parent dadd760 commit ea03587

File tree

4 files changed

+41
-12
lines changed

4 files changed

+41
-12
lines changed

coderd/database/dbmem/dbmem.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6513,9 +6513,11 @@ func (q *FakeQuerier) InsertProvisionerKey(_ context.Context, arg database.Inser
65136513
q.mutex.Lock()
65146514
defer q.mutex.Unlock()
65156515

6516+
newErr := *errUniqueConstraint
6517+
newErr.Constraint = string(database.UniqueProvisionerKeysOrganizationIDNameKey)
65166518
for _, key := range q.provisionerKeys {
65176519
if key.ID == arg.ID || (key.OrganizationID == arg.OrganizationID && key.Name == arg.Name) {
6518-
return database.ProvisionerKey{}, errUniqueConstraint
6520+
return database.ProvisionerKey{}, &newErr
65196521
}
65206522
}
65216523

coderd/provisionerkeys.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package coderd
33
import (
44
"database/sql"
55
"errors"
6+
"fmt"
67
"net/http"
78

89
"github.com/coder/coder/v2/coderd/database"
@@ -21,13 +22,45 @@ func (api *API) postProvisionerKey(rw http.ResponseWriter, r *http.Request) {
2122
return
2223
}
2324

25+
if req.Name == "" {
26+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
27+
Message: "Name is required",
28+
Validations: []codersdk.ValidationError{
29+
{
30+
Field: "name",
31+
Detail: "Name is required",
32+
},
33+
},
34+
})
35+
return
36+
}
37+
38+
if len(req.Name) > 64 {
39+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
40+
Message: "Name must be at most 64 characters",
41+
Validations: []codersdk.ValidationError{
42+
{
43+
Field: "name",
44+
Detail: "Name must be at most 64 characters",
45+
},
46+
},
47+
})
48+
return
49+
}
50+
2451
params, token, err := provisionerkey.New(organization.ID, req.Name)
2552
if err != nil {
2653
httpapi.InternalServerError(rw, err)
2754
return
2855
}
2956

3057
_, err = api.Database.InsertProvisionerKey(ctx, params)
58+
if database.IsUniqueViolation(err, database.UniqueProvisionerKeysOrganizationIDNameKey) {
59+
httpapi.Write(ctx, rw, http.StatusConflict, codersdk.Response{
60+
Message: fmt.Sprintf("Provisioner key with name '%s' already exists in organization", req.Name),
61+
})
62+
return
63+
}
3164
if err != nil {
3265
httpapi.InternalServerError(rw, err)
3366
return

coderd/provisionerkeys_test.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,25 +70,19 @@ func TestProvisionerKeys(t *testing.T) {
7070
_, err = orgAdmin.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
7171
Name: "key",
7272
})
73-
require.ErrorContains(t, err, "already exists")
74-
75-
// key name cannot have special characters
76-
_, err = orgAdmin.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
77-
Name: "key with spaces",
78-
})
79-
require.ErrorContains(t, err, "org admin create provisioner key")
73+
require.ErrorContains(t, err, "already exists in organization")
8074

8175
// key name cannot be too long
8276
_, err = orgAdmin.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
83-
Name: "key with spaces",
77+
Name: "Everyone please pass your watermelons to the front of the pool, the storm is approaching.",
8478
})
85-
require.ErrorContains(t, err, "less than 64 characters")
79+
require.ErrorContains(t, err, "must be at most 64 characters")
8680

8781
// key name cannot be empty
8882
_, err = orgAdmin.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
8983
Name: "",
9084
})
91-
require.ErrorContains(t, err, "cannot be empty")
85+
require.ErrorContains(t, err, "is required")
9286

9387
// org admin can list provisioner keys
9488
keys, err = orgAdmin.ListProvisionerKeys(ctx, owner.OrganizationID)

codersdk/provisionerdaemons.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ type CreateProvisionerKeyRequest struct {
277277
}
278278

279279
type CreateProvisionerKeyResponse struct {
280-
Key string
280+
Key string `json:"key"`
281281
}
282282

283283
// CreateProvisionerKey creates a new provisioner key for an organization.

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