Skip to content

Commit efe51a4

Browse files
committed
add tests
1 parent bef57ab commit efe51a4

File tree

11 files changed

+147
-15
lines changed

11 files changed

+147
-15
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3040,6 +3040,10 @@ func (q *querier) ListProvisionerKeysByOrganization(ctx context.Context, organiz
30403040
return fetchWithPostFilter(q.auth, policy.ActionRead, q.db.ListProvisionerKeysByOrganization)(ctx, organizationID)
30413041
}
30423042

3043+
func (q *querier) ListProvisionerKeysByOrganizationExcludeReserved(ctx context.Context, organizationID uuid.UUID) ([]database.ProvisionerKey, error) {
3044+
return fetchWithPostFilter(q.auth, policy.ActionRead, q.db.ListProvisionerKeysByOrganizationExcludeReserved)(ctx, organizationID)
3045+
}
3046+
30433047
func (q *querier) ListWorkspaceAgentPortShares(ctx context.Context, workspaceID uuid.UUID) ([]database.WorkspaceAgentPortShare, error) {
30443048
workspace, err := q.db.GetWorkspaceByID(ctx, workspaceID)
30453049
if err != nil {

coderd/database/dbmem/dbmem.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7507,6 +7507,20 @@ func (q *FakeQuerier) ListProvisionerKeysByOrganization(_ context.Context, organ
75077507
q.mutex.RLock()
75087508
defer q.mutex.RUnlock()
75097509

7510+
keys := make([]database.ProvisionerKey, 0)
7511+
for _, key := range q.provisionerKeys {
7512+
if key.OrganizationID == organizationID {
7513+
keys = append(keys, key)
7514+
}
7515+
}
7516+
7517+
return keys, nil
7518+
}
7519+
7520+
func (q *FakeQuerier) ListProvisionerKeysByOrganizationExcludeReserved(ctx context.Context, organizationID uuid.UUID) ([]database.ProvisionerKey, error) {
7521+
q.mutex.RLock()
7522+
defer q.mutex.RUnlock()
7523+
75107524
keys := make([]database.ProvisionerKey, 0)
75117525
for _, key := range q.provisionerKeys {
75127526
if key.ID.String() == codersdk.ProvisionerKeyIDBuiltIn ||

coderd/database/dbmetrics/dbmetrics.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 41 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/provisionerkeys.sql

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ WHERE
3737
AND
3838
lower(name) = lower(@name);
3939

40-
-- name: ListProvisionerKeysByOrganization :many
40+
-- name: ListProvisionerKeysByOrganizationExcludeReserved :many
4141
SELECT
4242
*
4343
FROM
@@ -54,6 +54,14 @@ AND
5454
-- exclude reserved psk key
5555
id != '00000000-0000-0000-0000-000000000003'::uuid;
5656

57+
-- name: ListProvisionerKeysByOrganization :many
58+
SELECT
59+
*
60+
FROM
61+
provisioner_keys
62+
WHERE
63+
organization_id = $1;
64+
5765
-- name: DeleteProvisionerKey :exec
5866
DELETE FROM
5967
provisioner_keys

codersdk/provisionerdaemons.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,24 @@ func (c *Client) ListProvisionerKeys(ctx context.Context, organizationID uuid.UU
353353
return resp, json.NewDecoder(res.Body).Decode(&resp)
354354
}
355355

356+
// ListProvisionerKeyDaemons lists all provisioner keys with their associated daemons for an organization.
357+
func (c *Client) ListProvisionerKeyDaemons(ctx context.Context, organizationID uuid.UUID) ([]ProvisionerKeyDaemons, error) {
358+
res, err := c.Request(ctx, http.MethodGet,
359+
fmt.Sprintf("/api/v2/organizations/%s/provisionerkeys/daemons", organizationID.String()),
360+
nil,
361+
)
362+
if err != nil {
363+
return nil, xerrors.Errorf("make request: %w", err)
364+
}
365+
defer res.Body.Close()
366+
367+
if res.StatusCode != http.StatusOK {
368+
return nil, ReadBodyAsError(res)
369+
}
370+
var resp []ProvisionerKeyDaemons
371+
return resp, json.NewDecoder(res.Body).Decode(&resp)
372+
}
373+
356374
// DeleteProvisionerKey deletes a provisioner key.
357375
func (c *Client) DeleteProvisionerKey(ctx context.Context, organizationID uuid.UUID, name string) error {
358376
res, err := c.Request(ctx, http.MethodDelete,

enterprise/coderd/provisionerdaemons.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,7 @@ func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) {
7171
return
7272
}
7373

74-
// provisionerdserver.DefaultHeartbeatInterval*3 matches the healthcheck report staleInterval.
75-
recentDaemons := db2sdk.RecentProvisionerDaemons(time.Now(), provisionerdserver.DefaultHeartbeatInterval*3, daemons)
76-
77-
httpapi.Write(ctx, rw, http.StatusOK, recentDaemons)
74+
httpapi.Write(ctx, rw, http.StatusOK, db2sdk.List(daemons, db2sdk.ProvisionerDaemon))
7875
}
7976

8077
type provisionerDaemonAuth struct {

enterprise/coderd/provisionerdaemons_test.go

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,7 @@ func TestGetProvisionerDaemons(t *testing.T) {
743743
Options: &coderdtest.Options{
744744
DeploymentValues: dv,
745745
},
746+
ProvisionerDaemonPSK: "provisionersftw",
746747
LicenseOptions: &coderdenttest.LicenseOptions{
747748
Features: license.Features{
748749
codersdk.FeatureExternalProvisionerDaemons: 1,
@@ -752,6 +753,16 @@ func TestGetProvisionerDaemons(t *testing.T) {
752753
})
753754
org := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{})
754755
orgAdmin, _ := coderdtest.CreateAnotherUser(t, client, org.ID, rbac.ScopedRoleOrgAdmin(org.ID))
756+
757+
res, err := orgAdmin.CreateProvisionerKey(context.Background(), org.ID, codersdk.CreateProvisionerKeyRequest{
758+
Name: "my-key",
759+
})
760+
require.NoError(t, err)
761+
762+
keys, err := orgAdmin.ListProvisionerKeys(context.Background(), org.ID)
763+
require.NoError(t, err)
764+
require.Len(t, keys, 1)
765+
755766
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
756767
defer cancel()
757768
daemonName := testutil.MustRandString(t, 63)
@@ -762,18 +773,32 @@ func TestGetProvisionerDaemons(t *testing.T) {
762773
Provisioners: []codersdk.ProvisionerType{
763774
codersdk.ProvisionerTypeEcho,
764775
},
765-
Tags: map[string]string{},
776+
Tags: map[string]string{},
777+
ProvisionerKey: res.Key,
766778
})
767779
require.NoError(t, err)
768780
srv.DRPCConn().Close()
769781

770782
daemons, err := orgAdmin.OrganizationProvisionerDaemons(ctx, org.ID)
771783
require.NoError(t, err)
772-
if assert.Len(t, daemons, 1) {
773-
assert.Equal(t, daemonName, daemons[0].Name)
774-
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
775-
assert.Equal(t, proto.CurrentVersion.String(), daemons[0].APIVersion)
776-
assert.Equal(t, codersdk.ProvisionerKeyIDUserAuth, daemons[0].KeyID.String())
777-
}
784+
require.Len(t, daemons, 1)
785+
786+
assert.Equal(t, daemonName, daemons[0].Name)
787+
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
788+
assert.Equal(t, proto.CurrentVersion.String(), daemons[0].APIVersion)
789+
assert.Equal(t, keys[0].ID, daemons[0].KeyID)
790+
791+
pkDaemons, err := orgAdmin.ListProvisionerKeyDaemons(ctx, org.ID)
792+
require.NoError(t, err)
793+
794+
require.Len(t, pkDaemons, 1)
795+
require.Len(t, pkDaemons[0].Daemons, 1)
796+
assert.Equal(t, keys[0].ID, pkDaemons[0].Key.ID)
797+
assert.Equal(t, keys[0].Name, pkDaemons[0].Key.Name)
798+
799+
assert.Equal(t, daemonName, pkDaemons[0].Daemons[0].Name)
800+
assert.Equal(t, buildinfo.Version(), pkDaemons[0].Daemons[0].Version)
801+
assert.Equal(t, proto.CurrentVersion.String(), pkDaemons[0].Daemons[0].APIVersion)
802+
assert.Equal(t, keys[0].ID, pkDaemons[0].Daemons[0].KeyID)
778803
})
779804
}

0 commit comments

Comments
 (0)