Skip to content

Commit 6b64343

Browse files
committed
move create organization test util to enterprise
1 parent d278682 commit 6b64343

17 files changed

+232
-203
lines changed

cli/organizationmembers_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ func TestListOrganizationMembers(t *testing.T) {
3535
})
3636
}
3737

38-
39-
4038
func TestRemoveOrganizationMembers(t *testing.T) {
4139
t.Parallel()
4240

coderd/coderdtest/coderdtest.go

Lines changed: 8 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -538,14 +538,18 @@ func NewWithAPI(t testing.TB, options *Options) (*codersdk.Client, io.Closer, *c
538538
return client, provisionerCloser, coderAPI
539539
}
540540

541-
// provisionerdCloser wraps a provisioner daemon as an io.Closer that can be called multiple times
542-
type provisionerdCloser struct {
541+
// ProvisionerdCloser wraps a provisioner daemon as an io.Closer that can be called multiple times
542+
type ProvisionerdCloser struct {
543543
mu sync.Mutex
544544
closed bool
545545
d *provisionerd.Server
546546
}
547547

548-
func (c *provisionerdCloser) Close() error {
548+
func NewProvisionerDaemonCloser(d *provisionerd.Server) *ProvisionerdCloser {
549+
return &ProvisionerdCloser{d: d}
550+
}
551+
552+
func (c *ProvisionerdCloser) Close() error {
549553
c.mu.Lock()
550554
defer c.mu.Unlock()
551555
if c.closed {
@@ -605,71 +609,10 @@ func NewTaggedProvisionerDaemon(t testing.TB, coderAPI *coderd.API, name string,
605609
string(database.ProvisionerTypeEcho): sdkproto.NewDRPCProvisionerClient(echoClient),
606610
},
607611
})
608-
closer := &provisionerdCloser{d: daemon}
609-
t.Cleanup(func() {
610-
_ = closer.Close()
611-
})
612-
return closer
613-
}
614-
615-
func NewExternalProvisionerDaemon(t testing.TB, client *codersdk.Client, org uuid.UUID, tags map[string]string) io.Closer {
616-
t.Helper()
617-
618-
// Without this check, the provisioner will silently fail.
619-
entitlements, err := client.Entitlements(context.Background())
620-
if err != nil {
621-
// AGPL instances will throw this error. They cannot use external
622-
// provisioners.
623-
t.Errorf("external provisioners requires a license with entitlements. The client failed to fetch the entitlements, is this an enterprise instance of coderd?")
624-
t.FailNow()
625-
return nil
626-
}
627-
628-
feature := entitlements.Features[codersdk.FeatureExternalProvisionerDaemons]
629-
if !feature.Enabled || feature.Entitlement != codersdk.EntitlementEntitled {
630-
require.NoError(t, xerrors.Errorf("external provisioner daemons require an entitled license"))
631-
return nil
632-
}
633-
634-
echoClient, echoServer := drpc.MemTransportPipe()
635-
ctx, cancelFunc := context.WithCancel(context.Background())
636-
serveDone := make(chan struct{})
637-
t.Cleanup(func() {
638-
_ = echoClient.Close()
639-
_ = echoServer.Close()
640-
cancelFunc()
641-
<-serveDone
642-
})
643-
go func() {
644-
defer close(serveDone)
645-
err := echo.Serve(ctx, &provisionersdk.ServeOptions{
646-
Listener: echoServer,
647-
WorkDirectory: t.TempDir(),
648-
})
649-
assert.NoError(t, err)
650-
}()
651-
652-
daemon := provisionerd.New(func(ctx context.Context) (provisionerdproto.DRPCProvisionerDaemonClient, error) {
653-
return client.ServeProvisionerDaemon(ctx, codersdk.ServeProvisionerDaemonRequest{
654-
ID: uuid.New(),
655-
Name: t.Name(),
656-
Organization: org,
657-
Provisioners: []codersdk.ProvisionerType{codersdk.ProvisionerTypeEcho},
658-
Tags: tags,
659-
})
660-
}, &provisionerd.Options{
661-
Logger: slogtest.Make(t, nil).Named("provisionerd").Leveled(slog.LevelDebug),
662-
UpdateInterval: 250 * time.Millisecond,
663-
ForceCancelInterval: 5 * time.Second,
664-
Connector: provisionerd.LocalProvisioners{
665-
string(database.ProvisionerTypeEcho): sdkproto.NewDRPCProvisionerClient(echoClient),
666-
},
667-
})
668-
closer := &provisionerdCloser{d: daemon}
612+
closer := NewProvisionerDaemonCloser(daemon)
669613
t.Cleanup(func() {
670614
_ = closer.Close()
671615
})
672-
673616
return closer
674617
}
675618

@@ -841,37 +784,6 @@ func createAnotherUserRetry(t testing.TB, client *codersdk.Client, organizationI
841784
return other, user
842785
}
843786

844-
type CreateOrganizationOptions struct {
845-
// IncludeProvisionerDaemon will spin up an external provisioner for the organization.
846-
// This requires enterprise and the feature 'codersdk.FeatureExternalProvisionerDaemons'
847-
IncludeProvisionerDaemon bool
848-
}
849-
850-
func CreateOrganization(t *testing.T, client *codersdk.Client, opts CreateOrganizationOptions, mutators ...func(*codersdk.CreateOrganizationRequest)) codersdk.Organization {
851-
ctx := testutil.Context(t, testutil.WaitMedium)
852-
req := codersdk.CreateOrganizationRequest{
853-
Name: strings.ReplaceAll(strings.ToLower(namesgenerator.GetRandomName(0)), "_", "-"),
854-
DisplayName: namesgenerator.GetRandomName(1),
855-
Description: namesgenerator.GetRandomName(1),
856-
Icon: "",
857-
}
858-
for _, mutator := range mutators {
859-
mutator(&req)
860-
}
861-
862-
org, err := client.CreateOrganization(ctx, req)
863-
require.NoError(t, err)
864-
865-
if opts.IncludeProvisionerDaemon {
866-
closer := NewExternalProvisionerDaemon(t, client, org.ID, map[string]string{})
867-
t.Cleanup(func() {
868-
_ = closer.Close()
869-
})
870-
}
871-
872-
return org
873-
}
874-
875787
// CreateTemplateVersion creates a template import provisioner job
876788
// with the responses provided. It uses the "echo" provisioner for compatibility
877789
// with testing.

coderd/coderdtest/coderdtest_test.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ package coderdtest_test
33
import (
44
"testing"
55

6-
"github.com/google/uuid"
7-
"github.com/stretchr/testify/require"
86
"go.uber.org/goleak"
97

108
"github.com/coder/coder/v2/coderd/coderdtest"
11-
"github.com/coder/coder/v2/coderd/rbac"
129
)
1310

1411
func TestMain(m *testing.M) {
@@ -30,20 +27,3 @@ func TestNew(t *testing.T) {
3027
_, _ = coderdtest.NewGoogleInstanceIdentity(t, "example", false)
3128
_, _ = coderdtest.NewAWSInstanceIdentity(t, "an-instance")
3229
}
33-
34-
// TestOrganizationMember checks the coderdtest helper can add organization members
35-
// to multiple orgs.
36-
func TestOrganizationMember(t *testing.T) {
37-
t.Parallel()
38-
39-
client := coderdtest.New(t, &coderdtest.Options{})
40-
owner := coderdtest.CreateFirstUser(t, client)
41-
42-
second := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
43-
third := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
44-
45-
// Assign the user to 3 orgs in this 1 statement
46-
_, user := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.ScopedRoleOrgMember(second.ID), rbac.ScopedRoleOrgMember(third.ID))
47-
require.Len(t, user.OrganizationIDs, 3)
48-
require.ElementsMatch(t, user.OrganizationIDs, []uuid.UUID{owner.OrganizationID, second.ID, third.ID})
49-
}

coderd/organizations_test.go

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,6 @@ import (
1212
"github.com/coder/coder/v2/testutil"
1313
)
1414

15-
func TestOrganizationsByUser(t *testing.T) {
16-
t.Parallel()
17-
client := coderdtest.New(t, nil)
18-
_ = coderdtest.CreateFirstUser(t, client)
19-
ctx := testutil.Context(t, testutil.WaitLong)
20-
21-
orgs, err := client.OrganizationsByUser(ctx, codersdk.Me)
22-
require.NoError(t, err)
23-
require.NotNil(t, orgs)
24-
require.Len(t, orgs, 1)
25-
require.True(t, orgs[0].IsDefault, "first org is always default")
26-
27-
// Make an extra org, and it should not be defaulted.
28-
notDefault, err := client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
29-
Name: "another",
30-
DisplayName: "Another",
31-
})
32-
require.NoError(t, err)
33-
require.False(t, notDefault.IsDefault, "only 1 default org allowed")
34-
}
35-
3615
func TestOrganizationByUserAndName(t *testing.T) {
3716
t.Parallel()
3817
t.Run("NoExist", func(t *testing.T) {

coderd/roles_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
"github.com/coder/coder/v2/testutil"
1717
)
1818

19-
2019
func TestListCustomRoles(t *testing.T) {
2120
t.Parallel()
2221

@@ -55,4 +54,3 @@ func TestListCustomRoles(t *testing.T) {
5554
require.Truef(t, found, "custom organization role listed")
5655
})
5756
}
58-

coderd/templates_test.go

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -461,47 +461,6 @@ func TestTemplatesByOrganization(t *testing.T) {
461461
require.Equal(t, tmpl.OrganizationIcon, org.Icon, "organization display name")
462462
}
463463
})
464-
t.Run("MultipleOrganizations", func(t *testing.T) {
465-
t.Parallel()
466-
client := coderdtest.New(t, nil)
467-
owner := coderdtest.CreateFirstUser(t, client)
468-
org2 := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
469-
user, _ := coderdtest.CreateAnotherUser(t, client, org2.ID)
470-
471-
// 2 templates in first organization
472-
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
473-
version2 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
474-
coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
475-
coderdtest.CreateTemplate(t, client, owner.OrganizationID, version2.ID)
476-
477-
// 2 in the second organization
478-
version3 := coderdtest.CreateTemplateVersion(t, client, org2.ID, nil)
479-
version4 := coderdtest.CreateTemplateVersion(t, client, org2.ID, nil)
480-
coderdtest.CreateTemplate(t, client, org2.ID, version3.ID)
481-
coderdtest.CreateTemplate(t, client, org2.ID, version4.ID)
482-
483-
ctx := testutil.Context(t, testutil.WaitLong)
484-
485-
// All 4 are viewable by the owner
486-
templates, err := client.Templates(ctx, codersdk.TemplateFilter{})
487-
require.NoError(t, err)
488-
require.Len(t, templates, 4)
489-
490-
// View a single organization from the owner
491-
templates, err = client.Templates(ctx, codersdk.TemplateFilter{
492-
OrganizationID: owner.OrganizationID,
493-
})
494-
require.NoError(t, err)
495-
require.Len(t, templates, 2)
496-
497-
// Only 2 are viewable by the org user
498-
templates, err = user.Templates(ctx, codersdk.TemplateFilter{})
499-
require.NoError(t, err)
500-
require.Len(t, templates, 2)
501-
for _, tmpl := range templates {
502-
require.Equal(t, tmpl.OrganizationName, org2.Name, "organization name on template")
503-
}
504-
})
505464
}
506465

507466
func TestTemplateByOrganizationAndName(t *testing.T) {

coderd/users_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -990,8 +990,6 @@ func TestUpdateUserPassword(t *testing.T) {
990990
})
991991
}
992992

993-
994-
995993
// TestInitialRoles ensures the starting roles for the first user are correct.
996994
func TestInitialRoles(t *testing.T) {
997995
t.Parallel()

enterprise/cli/create_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func TestEnterpriseCreate(t *testing.T) {
4949
},
5050
})
5151

52-
second := coderdtest.CreateOrganization(t, ownerClient, coderdtest.CreateOrganizationOptions{
52+
second := coderdenttest.CreateOrganization(t, ownerClient, coderdenttest.CreateOrganizationOptions{
5353
IncludeProvisionerDaemon: true,
5454
})
5555
member, _ := coderdtest.CreateAnotherUser(t, ownerClient, first.OrganizationID, rbac.ScopedRoleOrgMember(second.ID))

enterprise/cli/provisionerdaemonstart_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func TestProvisionerDaemon_PSK(t *testing.T) {
7272
},
7373
},
7474
})
75-
anotherOrg := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
75+
anotherOrg := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{})
7676
inv, conf := newCLI(t, "provisionerd", "start", "--psk=provisionersftw", "--name", "org-daemon", "--org", anotherOrg.ID.String())
7777
err := conf.URL().Write(client.URL.String())
7878
require.NoError(t, err)
@@ -106,7 +106,7 @@ func TestProvisionerDaemon_PSK(t *testing.T) {
106106
},
107107
},
108108
})
109-
anotherOrg := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
109+
anotherOrg := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{})
110110
anotherClient, _ := coderdtest.CreateAnotherUser(t, client, anotherOrg.ID, rbac.RoleTemplateAdmin())
111111
inv, conf := newCLI(t, "provisionerd", "start", "--psk=provisionersftw", "--name", "org-daemon", "--org", anotherOrg.Name)
112112
clitest.SetupConfig(t, anotherClient, conf)
@@ -127,7 +127,7 @@ func TestProvisionerDaemon_PSK(t *testing.T) {
127127
},
128128
},
129129
})
130-
anotherOrg := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
130+
anotherOrg := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{})
131131
inv, conf := newCLI(t, "provisionerd", "start", "--psk=provisionersftw", "--name", "org-daemon", "--org", anotherOrg.Name)
132132
err := conf.URL().Write(client.URL.String())
133133
require.NoError(t, err)
@@ -274,7 +274,7 @@ func TestProvisionerDaemon_SessionToken(t *testing.T) {
274274
},
275275
},
276276
})
277-
anotherOrg := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{})
277+
anotherOrg := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{})
278278
anotherClient, anotherUser := coderdtest.CreateAnotherUser(t, client, anotherOrg.ID, rbac.RoleTemplateAdmin())
279279
inv, conf := newCLI(t, "provisionerd", "start", "--tag", "scope=user", "--name", "org-daemon", "--org", anotherOrg.ID.String())
280280
clitest.SetupConfig(t, anotherClient, conf)

enterprise/cli/templatecreate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func TestTemplateCreate(t *testing.T) {
157157
})
158158

159159
// Create the second organization
160-
secondOrg := coderdtest.CreateOrganization(t, ownerClient, coderdtest.CreateOrganizationOptions{
160+
secondOrg := coderdenttest.CreateOrganization(t, ownerClient, coderdenttest.CreateOrganizationOptions{
161161
IncludeProvisionerDaemon: true,
162162
})
163163

enterprise/cli/templatelist_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func TestEnterpriseListTemplates(t *testing.T) {
4343
_ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, firstVersion.ID)
4444
_ = coderdtest.CreateTemplate(t, client, owner.OrganizationID, firstVersion.ID)
4545

46-
secondOrg := coderdtest.CreateOrganization(t, client, coderdtest.CreateOrganizationOptions{
46+
secondOrg := coderdenttest.CreateOrganization(t, client, coderdenttest.CreateOrganizationOptions{
4747
IncludeProvisionerDaemon: true,
4848
})
4949
secondVersion := coderdtest.CreateTemplateVersion(t, client, secondOrg.ID, nil)

0 commit comments

Comments
 (0)