Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4160118

Browse files
committed
create org member in coderdtest helper
1 parent 25dc87f commit 4160118

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

enterprise/cli/create_test.go

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package cli_test
2+
3+
import (
4+
"context"
5+
"sync"
6+
"testing"
7+
8+
"github.com/google/uuid"
9+
"github.com/stretchr/testify/assert"
10+
11+
"github.com/coder/coder/v2/cli/clitest"
12+
"github.com/coder/coder/v2/coderd/coderdtest"
13+
"github.com/coder/coder/v2/coderd/rbac"
14+
"github.com/coder/coder/v2/codersdk"
15+
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
16+
"github.com/coder/coder/v2/enterprise/coderd/license"
17+
"github.com/coder/coder/v2/pty/ptytest"
18+
)
19+
20+
func TestEnterpriseCreate(t *testing.T) {
21+
t.Parallel()
22+
23+
type setupData struct {
24+
firstResponse codersdk.CreateFirstUserResponse
25+
second codersdk.Organization
26+
owner *codersdk.Client
27+
member *codersdk.Client
28+
}
29+
30+
type setupArgs struct {
31+
firstTemplates []string
32+
secondTemplates []string
33+
}
34+
35+
setupMultipleOrganizations := func(t *testing.T, args setupArgs) setupData {
36+
ownerClient, first := coderdenttest.New(t, &coderdenttest.Options{
37+
Options: &coderdtest.Options{
38+
// This only affects the first org.
39+
IncludeProvisionerDaemon: false,
40+
},
41+
LicenseOptions: &coderdenttest.LicenseOptions{
42+
Features: license.Features{
43+
codersdk.FeatureExternalProvisionerDaemons: 1,
44+
},
45+
},
46+
})
47+
48+
second := coderdtest.CreateOrganization(t, ownerClient, coderdtest.CreateOrganizationOptions{
49+
IncludeProvisionerDaemon: true,
50+
})
51+
member, _ := coderdtest.CreateAnotherUser(t, ownerClient, first.OrganizationID, rbac.ScopedRoleOrgMember(second.ID))
52+
53+
var wg sync.WaitGroup
54+
55+
createTemplate := func(tplName string, orgID uuid.UUID) {
56+
version := coderdtest.CreateTemplateVersion(t, ownerClient, orgID, nil)
57+
wg.Add(1)
58+
go func() {
59+
coderdtest.AwaitTemplateVersionJobCompleted(t, ownerClient, version.ID)
60+
wg.Done()
61+
}()
62+
63+
coderdtest.CreateTemplate(t, ownerClient, orgID, version.ID, func(request *codersdk.CreateTemplateRequest) {
64+
request.Name = tplName
65+
})
66+
}
67+
68+
for _, tplName := range args.firstTemplates {
69+
createTemplate(tplName, first.OrganizationID)
70+
}
71+
72+
for _, tplName := range args.secondTemplates {
73+
createTemplate(tplName, second.ID)
74+
}
75+
76+
wg.Wait()
77+
78+
return setupData{
79+
firstResponse: first,
80+
owner: ownerClient,
81+
second: second,
82+
member: member,
83+
}
84+
}
85+
86+
t.Run("CreateMultipleOrganization", func(t *testing.T) {
87+
// Creates a workspace in another organization
88+
t.Parallel()
89+
90+
const templateName = "secondtemplate"
91+
setup := setupMultipleOrganizations(t, setupArgs{
92+
secondTemplates: []string{templateName},
93+
})
94+
member := setup.member
95+
96+
args := []string{
97+
"create",
98+
"my-workspace",
99+
"--template", templateName,
100+
}
101+
inv, root := clitest.New(t, args...)
102+
clitest.SetupConfig(t, member, root)
103+
doneChan := make(chan struct{})
104+
pty := ptytest.New(t).Attach(inv)
105+
go func() {
106+
defer close(doneChan)
107+
err := inv.Run()
108+
assert.NoError(t, err)
109+
}()
110+
matches := []struct {
111+
match string
112+
write string
113+
}{
114+
{match: "compute.main"},
115+
{match: "smith (linux, i386)"},
116+
{match: "Confirm create", write: "yes"},
117+
}
118+
for _, m := range matches {
119+
pty.ExpectMatch(m.match)
120+
if len(m.write) > 0 {
121+
pty.WriteLine(m.write)
122+
}
123+
}
124+
<-doneChan
125+
126+
ws, err := member.WorkspaceByOwnerAndName(context.Background(), codersdk.Me, "my-workspace", codersdk.WorkspaceOptions{})
127+
if assert.NoError(t, err, "expected workspace to be created") {
128+
assert.Equal(t, ws.TemplateName, templateName)
129+
assert.Equal(t, ws.OrganizationName, setup.second.ID, "workspace in second organization")
130+
}
131+
})
132+
}

0 commit comments

Comments
 (0)