Skip to content

Commit d278682

Browse files
committed
chore: move tests into enterprise
1 parent 45f868c commit d278682

14 files changed

+633
-511
lines changed

cli/organization_test.go

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ import (
1212
"github.com/stretchr/testify/require"
1313

1414
"github.com/coder/coder/v2/cli/clitest"
15-
"github.com/coder/coder/v2/coderd/coderdtest"
16-
"github.com/coder/coder/v2/coderd/rbac"
1715
"github.com/coder/coder/v2/codersdk"
1816
"github.com/coder/coder/v2/pty/ptytest"
19-
"github.com/coder/coder/v2/testutil"
2017
)
2118

2219
func TestCurrentOrganization(t *testing.T) {
@@ -55,64 +52,6 @@ func TestCurrentOrganization(t *testing.T) {
5552
require.NoError(t, <-errC)
5653
pty.ExpectMatch(orgID.String())
5754
})
58-
59-
t.Run("OnlyID", func(t *testing.T) {
60-
t.Parallel()
61-
ownerClient := coderdtest.New(t, nil)
62-
first := coderdtest.CreateFirstUser(t, ownerClient)
63-
// Owner is required to make orgs
64-
client, _ := coderdtest.CreateAnotherUser(t, ownerClient, first.OrganizationID, rbac.RoleOwner())
65-
66-
ctx := testutil.Context(t, testutil.WaitMedium)
67-
orgs := []string{"foo", "bar"}
68-
for _, orgName := range orgs {
69-
_, err := client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
70-
Name: orgName,
71-
})
72-
require.NoError(t, err)
73-
}
74-
75-
inv, root := clitest.New(t, "organizations", "show", "--only-id", "--org="+first.OrganizationID.String())
76-
clitest.SetupConfig(t, client, root)
77-
pty := ptytest.New(t).Attach(inv)
78-
errC := make(chan error)
79-
go func() {
80-
errC <- inv.Run()
81-
}()
82-
require.NoError(t, <-errC)
83-
pty.ExpectMatch(first.OrganizationID.String())
84-
})
85-
86-
t.Run("UsingFlag", func(t *testing.T) {
87-
t.Parallel()
88-
ownerClient := coderdtest.New(t, nil)
89-
first := coderdtest.CreateFirstUser(t, ownerClient)
90-
// Owner is required to make orgs
91-
client, _ := coderdtest.CreateAnotherUser(t, ownerClient, first.OrganizationID, rbac.RoleOwner())
92-
93-
ctx := testutil.Context(t, testutil.WaitMedium)
94-
orgs := map[string]codersdk.Organization{
95-
"foo": {},
96-
"bar": {},
97-
}
98-
for orgName := range orgs {
99-
org, err := client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
100-
Name: orgName,
101-
})
102-
require.NoError(t, err)
103-
orgs[orgName] = org
104-
}
105-
106-
inv, root := clitest.New(t, "organizations", "show", "selected", "--only-id", "-O=bar")
107-
clitest.SetupConfig(t, client, root)
108-
pty := ptytest.New(t).Attach(inv)
109-
errC := make(chan error)
110-
go func() {
111-
errC <- inv.Run()
112-
}()
113-
require.NoError(t, <-errC)
114-
pty.ExpectMatch(orgs["bar"].ID.String())
115-
})
11655
}
11756

11857
func must[V any](v V, err error) V {

cli/organizationmembers_test.go

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/coder/coder/v2/cli/clitest"
1010
"github.com/coder/coder/v2/coderd/coderdtest"
1111
"github.com/coder/coder/v2/coderd/rbac"
12-
"github.com/coder/coder/v2/codersdk"
1312
"github.com/coder/coder/v2/testutil"
1413
)
1514

@@ -36,42 +35,7 @@ func TestListOrganizationMembers(t *testing.T) {
3635
})
3736
}
3837

39-
func TestAddOrganizationMembers(t *testing.T) {
40-
t.Parallel()
41-
42-
t.Run("OK", func(t *testing.T) {
43-
t.Parallel()
44-
45-
ownerClient := coderdtest.New(t, &coderdtest.Options{})
46-
owner := coderdtest.CreateFirstUser(t, ownerClient)
47-
_, user := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
48-
49-
ctx := testutil.Context(t, testutil.WaitMedium)
50-
//nolint:gocritic // must be an owner, only owners can create orgs
51-
otherOrg, err := ownerClient.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
52-
Name: "Other",
53-
DisplayName: "",
54-
Description: "",
55-
Icon: "",
56-
})
57-
require.NoError(t, err, "create another organization")
58-
59-
inv, root := clitest.New(t, "organization", "members", "add", "-O", otherOrg.ID.String(), user.Username)
60-
//nolint:gocritic // must be an owner
61-
clitest.SetupConfig(t, ownerClient, root)
6238

63-
buf := new(bytes.Buffer)
64-
inv.Stdout = buf
65-
err = inv.WithContext(ctx).Run()
66-
require.NoError(t, err)
67-
68-
//nolint:gocritic // must be an owner
69-
members, err := ownerClient.OrganizationMembers(ctx, otherOrg.ID)
70-
require.NoError(t, err)
71-
72-
require.Len(t, members, 2)
73-
})
74-
}
7539

7640
func TestRemoveOrganizationMembers(t *testing.T) {
7741
t.Parallel()

cli/templatelist_test.go

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -110,41 +110,4 @@ func TestTemplateList(t *testing.T) {
110110
pty.ExpectMatch("No templates found")
111111
pty.ExpectMatch("Create one:")
112112
})
113-
114-
t.Run("MultiOrg", func(t *testing.T) {
115-
t.Parallel()
116-
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
117-
owner := coderdtest.CreateFirstUser(t, client)
118-
119-
// Template in the first organization
120-
firstVersion := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
121-
_ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, firstVersion.ID)
122-
_ = coderdtest.CreateTemplate(t, client, owner.OrganizationID, firstVersion.ID)
123-
124-
secondOrg := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{
125-
// Listing templates does not require the template actually completes.
126-
// We cannot provision an external provisioner in AGPL tests.
127-
IncludeProvisionerDaemon: false,
128-
})
129-
secondVersion := coderdtest.CreateTemplateVersion(t, client, secondOrg.ID, nil)
130-
_ = coderdtest.CreateTemplate(t, client, secondOrg.ID, secondVersion.ID)
131-
132-
// Create a site wide template admin
133-
templateAdmin, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.RoleTemplateAdmin())
134-
135-
inv, root := clitest.New(t, "templates", "list", "--output=json")
136-
clitest.SetupConfig(t, templateAdmin, root)
137-
138-
ctx, cancelFunc := context.WithTimeout(context.Background(), testutil.WaitLong)
139-
defer cancelFunc()
140-
141-
out := bytes.NewBuffer(nil)
142-
inv.Stdout = out
143-
err := inv.WithContext(ctx).Run()
144-
require.NoError(t, err)
145-
146-
var templates []codersdk.Template
147-
require.NoError(t, json.Unmarshal(out.Bytes(), &templates))
148-
require.Len(t, templates, 2)
149-
})
150113
}

coderd/roles_test.go

Lines changed: 0 additions & 169 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package coderd_test
22

33
import (
4-
"context"
5-
"net/http"
64
"slices"
75
"testing"
86

@@ -11,164 +9,13 @@ import (
119

1210
"github.com/coder/coder/v2/coderd/coderdtest"
1311
"github.com/coder/coder/v2/coderd/database"
14-
"github.com/coder/coder/v2/coderd/database/db2sdk"
1512
"github.com/coder/coder/v2/coderd/database/dbgen"
1613
"github.com/coder/coder/v2/coderd/rbac"
1714
"github.com/coder/coder/v2/coderd/rbac/policy"
1815
"github.com/coder/coder/v2/codersdk"
1916
"github.com/coder/coder/v2/testutil"
2017
)
2118

22-
func TestListRoles(t *testing.T) {
23-
t.Parallel()
24-
25-
client := coderdtest.New(t, nil)
26-
// Create owner, member, and org admin
27-
owner := coderdtest.CreateFirstUser(t, client)
28-
member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
29-
orgAdmin, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.ScopedRoleOrgAdmin(owner.OrganizationID))
30-
31-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
32-
t.Cleanup(cancel)
33-
34-
otherOrg, err := client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
35-
Name: "other",
36-
})
37-
require.NoError(t, err, "create org")
38-
39-
const notFound = "Resource not found"
40-
testCases := []struct {
41-
Name string
42-
Client *codersdk.Client
43-
APICall func(context.Context) ([]codersdk.AssignableRoles, error)
44-
ExpectedRoles []codersdk.AssignableRoles
45-
AuthorizedError string
46-
}{
47-
{
48-
// Members cannot assign any roles
49-
Name: "MemberListSite",
50-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
51-
x, err := member.ListSiteRoles(ctx)
52-
return x, err
53-
},
54-
ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{
55-
{Name: codersdk.RoleOwner}: false,
56-
{Name: codersdk.RoleAuditor}: false,
57-
{Name: codersdk.RoleTemplateAdmin}: false,
58-
{Name: codersdk.RoleUserAdmin}: false,
59-
}),
60-
},
61-
{
62-
Name: "OrgMemberListOrg",
63-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
64-
return member.ListOrganizationRoles(ctx, owner.OrganizationID)
65-
},
66-
ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{
67-
{Name: codersdk.RoleOrganizationAdmin, OrganizationID: owner.OrganizationID}: false,
68-
{Name: codersdk.RoleOrganizationAuditor, OrganizationID: owner.OrganizationID}: false,
69-
{Name: codersdk.RoleOrganizationTemplateAdmin, OrganizationID: owner.OrganizationID}: false,
70-
{Name: codersdk.RoleOrganizationUserAdmin, OrganizationID: owner.OrganizationID}: false,
71-
}),
72-
},
73-
{
74-
Name: "NonOrgMemberListOrg",
75-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
76-
return member.ListOrganizationRoles(ctx, otherOrg.ID)
77-
},
78-
AuthorizedError: notFound,
79-
},
80-
// Org admin
81-
{
82-
Name: "OrgAdminListSite",
83-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
84-
return orgAdmin.ListSiteRoles(ctx)
85-
},
86-
ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{
87-
{Name: codersdk.RoleOwner}: false,
88-
{Name: codersdk.RoleAuditor}: false,
89-
{Name: codersdk.RoleTemplateAdmin}: false,
90-
{Name: codersdk.RoleUserAdmin}: false,
91-
}),
92-
},
93-
{
94-
Name: "OrgAdminListOrg",
95-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
96-
return orgAdmin.ListOrganizationRoles(ctx, owner.OrganizationID)
97-
},
98-
ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{
99-
{Name: codersdk.RoleOrganizationAdmin, OrganizationID: owner.OrganizationID}: true,
100-
{Name: codersdk.RoleOrganizationAuditor, OrganizationID: owner.OrganizationID}: true,
101-
{Name: codersdk.RoleOrganizationTemplateAdmin, OrganizationID: owner.OrganizationID}: true,
102-
{Name: codersdk.RoleOrganizationUserAdmin, OrganizationID: owner.OrganizationID}: true,
103-
}),
104-
},
105-
{
106-
Name: "OrgAdminListOtherOrg",
107-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
108-
return orgAdmin.ListOrganizationRoles(ctx, otherOrg.ID)
109-
},
110-
AuthorizedError: notFound,
111-
},
112-
// Admin
113-
{
114-
Name: "AdminListSite",
115-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
116-
return client.ListSiteRoles(ctx)
117-
},
118-
ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{
119-
{Name: codersdk.RoleOwner}: true,
120-
{Name: codersdk.RoleAuditor}: true,
121-
{Name: codersdk.RoleTemplateAdmin}: true,
122-
{Name: codersdk.RoleUserAdmin}: true,
123-
}),
124-
},
125-
{
126-
Name: "AdminListOrg",
127-
APICall: func(ctx context.Context) ([]codersdk.AssignableRoles, error) {
128-
return client.ListOrganizationRoles(ctx, owner.OrganizationID)
129-
},
130-
ExpectedRoles: convertRoles(map[rbac.RoleIdentifier]bool{
131-
{Name: codersdk.RoleOrganizationAdmin, OrganizationID: owner.OrganizationID}: true,
132-
{Name: codersdk.RoleOrganizationAuditor, OrganizationID: owner.OrganizationID}: true,
133-
{Name: codersdk.RoleOrganizationTemplateAdmin, OrganizationID: owner.OrganizationID}: true,
134-
{Name: codersdk.RoleOrganizationUserAdmin, OrganizationID: owner.OrganizationID}: true,
135-
}),
136-
},
137-
}
138-
139-
for _, c := range testCases {
140-
c := c
141-
t.Run(c.Name, func(t *testing.T) {
142-
t.Parallel()
143-
144-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
145-
defer cancel()
146-
147-
roles, err := c.APICall(ctx)
148-
if c.AuthorizedError != "" {
149-
var apiErr *codersdk.Error
150-
require.ErrorAs(t, err, &apiErr)
151-
require.Equal(t, http.StatusNotFound, apiErr.StatusCode())
152-
require.Contains(t, apiErr.Message, c.AuthorizedError)
153-
} else {
154-
require.NoError(t, err)
155-
ignorePerms := func(f codersdk.AssignableRoles) codersdk.AssignableRoles {
156-
return codersdk.AssignableRoles{
157-
Role: codersdk.Role{
158-
Name: f.Name,
159-
DisplayName: f.DisplayName,
160-
},
161-
Assignable: f.Assignable,
162-
BuiltIn: true,
163-
}
164-
}
165-
expected := db2sdk.List(c.ExpectedRoles, ignorePerms)
166-
found := db2sdk.List(roles, ignorePerms)
167-
require.ElementsMatch(t, expected, found)
168-
}
169-
})
170-
}
171-
}
17219

17320
func TestListCustomRoles(t *testing.T) {
17421
t.Parallel()
@@ -209,19 +56,3 @@ func TestListCustomRoles(t *testing.T) {
20956
})
21057
}
21158

212-
func convertRole(roleName rbac.RoleIdentifier) codersdk.Role {
213-
role, _ := rbac.RoleByName(roleName)
214-
return db2sdk.RBACRole(role)
215-
}
216-
217-
func convertRoles(assignableRoles map[rbac.RoleIdentifier]bool) []codersdk.AssignableRoles {
218-
converted := make([]codersdk.AssignableRoles, 0, len(assignableRoles))
219-
for roleName, assignable := range assignableRoles {
220-
role := convertRole(roleName)
221-
converted = append(converted, codersdk.AssignableRoles{
222-
Role: role,
223-
Assignable: assignable,
224-
})
225-
}
226-
return converted
227-
}

0 commit comments

Comments
 (0)