(t *testing.T)
| 450 | } |
| 451 | |
| 452 | func TestListRoles(t *testing.T) { |
| 453 | t.Parallel() |
| 454 | |
| 455 | dv := coderdtest.DeploymentValues(t) |
| 456 | |
| 457 | client, owner := coderdenttest.New(t, &coderdenttest.Options{ |
| 458 | Options: &coderdtest.Options{ |
| 459 | DeploymentValues: dv, |
| 460 | }, |
| 461 | LicenseOptions: &coderdenttest.LicenseOptions{ |
| 462 | Features: license.Features{ |
| 463 | codersdk.FeatureExternalProvisionerDaemons: 1, |
| 464 | codersdk.FeatureMultipleOrganizations: 1, |
| 465 | }, |
| 466 | }, |
| 467 | }) |
| 468 | |
| 469 | // Create owner, member, and org admin |
| 470 | member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 471 | orgAdmin, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.ScopedRoleOrgAdmin(owner.OrganizationID)) |
| 472 | |
| 473 | otherOrg := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{}) |
| 474 | |
| 475 | const notFound = "Resource not found" |
| 476 | testCases := []struct { |
| 477 | Name string |
| 478 | Client *codersdk.Client |
| 479 | APICall func(context.Context) ([]codersdk.AssignableRoles, error) |
| 480 | ExpectedRoles []codersdk.AssignableRoles |
| 481 | AuthorizedError string |
| 482 | }{ |
| 483 | { |
| 484 | // Members cannot assign any roles |
| 485 | Name: "MemberListSite", |
| 486 | APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) { |
| 487 | x, err := member.ListSiteRoles(ctx) |
| 488 | return x, err |
| 489 | }, |
| 490 | ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{ |
| 491 | {Name: codersdk.RoleOwner}: false, |
| 492 | {Name: codersdk.RoleAuditor}: false, |
| 493 | {Name: codersdk.RoleTemplateAdmin}: false, |
| 494 | {Name: codersdk.RoleUserAdmin}: false, |
| 495 | }), |
| 496 | }, |
| 497 | { |
| 498 | Name: "OrgMemberListOrg", |
| 499 | APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) { |
| 500 | return member.ListOrganizationRoles(ctx, owner.OrganizationID) |
| 501 | }, |
| 502 | ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{ |
| 503 | {Name: codersdk.RoleOrganizationAdmin, OrganizationID: owner.OrganizationID}: false, |
| 504 | {Name: codersdk.RoleOrganizationAuditor, OrganizationID: owner.OrganizationID}: false, |
| 505 | {Name: codersdk.RoleOrganizationTemplateAdmin, OrganizationID: owner.OrganizationID}: false, |
| 506 | {Name: codersdk.RoleOrganizationUserAdmin, OrganizationID: owner.OrganizationID}: false, |
| 507 | {Name: codersdk.RoleOrganizationWorkspaceCreationBan, OrganizationID: owner.OrganizationID}: false, |
| 508 | {Name: codersdk.RoleAgentsAccess, OrganizationID: owner.OrganizationID}: false, |
| 509 | }), |
nothing calls this directly
no test coverage detected