Skip to content

Commit 08a63db

Browse files
committed
dbauthz
1 parent 7376104 commit 08a63db

File tree

5 files changed

+75
-2
lines changed

5 files changed

+75
-2
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2628,7 +2628,7 @@ func (q *querier) InsertProvisionerJobLogs(ctx context.Context, arg database.Ins
26282628
}
26292629

26302630
func (q *querier) InsertProvisionerKey(ctx context.Context, arg database.InsertProvisionerKeyParams) (database.ProvisionerKey, error) {
2631-
return insert(q.log, q.auth, rbac.ResourceProvisionerKeys.InOrg(arg.OrganizationID), q.db.InsertProvisionerKey)(ctx, arg)
2631+
return insert(q.log, q.auth, rbac.ResourceProvisionerKeys.InOrg(arg.OrganizationID).WithID(arg.ID), q.db.InsertProvisionerKey)(ctx, arg)
26322632
}
26332633

26342634
func (q *querier) InsertReplica(ctx context.Context, arg database.InsertReplicaParams) (database.Replica, error) {

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1800,6 +1800,58 @@ func (s *MethodTestSuite) TestWorkspacePortSharing() {
18001800
}))
18011801
}
18021802

1803+
func (s *MethodTestSuite) TestProvisionerKeys() {
1804+
s.Run("InsertProvisionerKey", s.Subtest(func(db database.Store, check *expects) {
1805+
org := dbgen.Organization(s.T(), db, database.Organization{})
1806+
pk := database.ProvisionerKey{
1807+
ID: uuid.New(),
1808+
CreatedAt: time.Now(),
1809+
OrganizationID: org.ID,
1810+
Name: coderdtest.RandomName(s.T()),
1811+
HashedSecret: []byte(coderdtest.RandomName(s.T())),
1812+
}
1813+
//nolint:gosimple // casting is not a simplification
1814+
check.Args(database.InsertProvisionerKeyParams{
1815+
ID: pk.ID,
1816+
CreatedAt: pk.CreatedAt,
1817+
OrganizationID: pk.OrganizationID,
1818+
Name: pk.Name,
1819+
HashedSecret: pk.HashedSecret,
1820+
}).Asserts(pk, policy.ActionCreate).Returns(pk)
1821+
}))
1822+
s.Run("GetProvisionerKeyByID", s.Subtest(func(db database.Store, check *expects) {
1823+
org := dbgen.Organization(s.T(), db, database.Organization{})
1824+
pk := dbgen.ProvisionerKey(s.T(), db, database.ProvisionerKey{OrganizationID: org.ID})
1825+
check.Args(pk.ID).Asserts(pk, policy.ActionRead).Returns(pk)
1826+
}))
1827+
s.Run("GetProvisionerKeyByName", s.Subtest(func(db database.Store, check *expects) {
1828+
org := dbgen.Organization(s.T(), db, database.Organization{})
1829+
pk := dbgen.ProvisionerKey(s.T(), db, database.ProvisionerKey{OrganizationID: org.ID})
1830+
check.Args(database.GetProvisionerKeyByNameParams{
1831+
OrganizationID: org.ID,
1832+
Name: pk.Name,
1833+
}).Asserts(pk, policy.ActionRead).Returns(pk)
1834+
}))
1835+
s.Run("ListProvisionerKeysByOrganization", s.Subtest(func(db database.Store, check *expects) {
1836+
org := dbgen.Organization(s.T(), db, database.Organization{})
1837+
pk := dbgen.ProvisionerKey(s.T(), db, database.ProvisionerKey{OrganizationID: org.ID})
1838+
pks := []database.ListProvisionerKeysByOrganizationRow{
1839+
{
1840+
ID: pk.ID,
1841+
CreatedAt: pk.CreatedAt,
1842+
OrganizationID: pk.OrganizationID,
1843+
Name: pk.Name,
1844+
},
1845+
}
1846+
check.Args(org.ID).Asserts(pk, policy.ActionRead).Returns(pks)
1847+
}))
1848+
s.Run("DeleteProvisionerKey", s.Subtest(func(db database.Store, check *expects) {
1849+
org := dbgen.Organization(s.T(), db, database.Organization{})
1850+
pk := dbgen.ProvisionerKey(s.T(), db, database.ProvisionerKey{OrganizationID: org.ID})
1851+
check.Args(pk.ID).Asserts(pk, policy.ActionDelete).Returns()
1852+
}))
1853+
}
1854+
18031855
func (s *MethodTestSuite) TestExtraMethods() {
18041856
s.Run("GetProvisionerDaemons", s.Subtest(func(db database.Store, check *expects) {
18051857
d, err := db.UpsertProvisionerDaemon(context.Background(), database.UpsertProvisionerDaemonParams{

coderd/database/dbgen/dbgen.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,18 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
465465
return job
466466
}
467467

468+
func ProvisionerKey(t testing.TB, db database.Store, orig database.ProvisionerKey) database.ProvisionerKey {
469+
key, err := db.InsertProvisionerKey(genCtx, database.InsertProvisionerKeyParams{
470+
ID: takeFirst(orig.ID, uuid.New()),
471+
CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()),
472+
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
473+
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
474+
HashedSecret: orig.HashedSecret,
475+
})
476+
require.NoError(t, err, "insert provisioner key")
477+
return key
478+
}
479+
468480
func WorkspaceApp(t testing.TB, db database.Store, orig database.WorkspaceApp) database.WorkspaceApp {
469481
resource, err := db.InsertWorkspaceApp(genCtx, database.InsertWorkspaceAppParams{
470482
ID: takeFirst(orig.ID, uuid.New()),

coderd/database/dbmem/dbmem.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6556,7 +6556,7 @@ func (q *FakeQuerier) InsertProvisionerKey(_ context.Context, arg database.Inser
65566556
CreatedAt: arg.CreatedAt,
65576557
OrganizationID: arg.OrganizationID,
65586558
Name: arg.Name,
6559-
HashedSecret: []byte(arg.Name),
6559+
HashedSecret: arg.HashedSecret,
65606560
}
65616561
q.provisionerKeys = append(q.provisionerKeys, provisionerKey)
65626562

coderd/rbac/roles_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,15 @@ func TestRolePermissions(t *testing.T) {
488488
false: {memberMe, otherOrgAdmin, otherOrgMember, userAdmin},
489489
},
490490
},
491+
{
492+
Name: "ProvisionerKeys",
493+
Actions: []policy.Action{policy.ActionCreate, policy.ActionRead, policy.ActionDelete},
494+
Resource: rbac.ResourceProvisionerKeys.InOrg(orgID),
495+
AuthorizeMap: map[bool][]authSubject{
496+
true: {owner, orgAdmin},
497+
false: {otherOrgAdmin, otherOrgMember, memberMe, orgMemberMe, userAdmin, templateAdmin},
498+
},
499+
},
491500
{
492501
Name: "System",
493502
Actions: crud,

0 commit comments

Comments
 (0)