Skip to content

Commit 6d0bce6

Browse files
committed
tests
1 parent 4344a15 commit 6d0bce6

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
@@ -6543,9 +6543,11 @@ func (q *FakeQuerier) InsertProvisionerKey(_ context.Context, arg database.Inser
65436543
q.mutex.Lock()
65446544
defer q.mutex.Unlock()
65456545

6546+
newErr := *errUniqueConstraint
6547+
newErr.Constraint = string(database.UniqueProvisionerKeysOrganizationIDNameKey)
65466548
for _, key := range q.provisionerKeys {
65476549
if key.ID == arg.ID || (key.OrganizationID == arg.OrganizationID && key.Name == arg.Name) {
6548-
return database.ProvisionerKey{}, errUniqueConstraint
6550+
return database.ProvisionerKey{}, &newErr
65496551
}
65506552
}
65516553

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
@@ -278,7 +278,7 @@ type CreateProvisionerKeyRequest struct {
278278
}
279279

280280
type CreateProvisionerKeyResponse struct {
281-
Key string
281+
Key string `json:"key"`
282282
}
283283

284284
// 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