Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit23f0265

Browse files
authored
chore: migrate CLI tests to usedbfake (#10500)
1 parent6588494 commit23f0265

File tree

6 files changed

+78
-120
lines changed

6 files changed

+78
-120
lines changed

‎cli/configssh_test.go

Lines changed: 35 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ import (
2222
"github.com/coder/coder/v2/agent/agenttest"
2323
"github.com/coder/coder/v2/cli/clitest"
2424
"github.com/coder/coder/v2/coderd/coderdtest"
25+
"github.com/coder/coder/v2/coderd/database"
26+
"github.com/coder/coder/v2/coderd/database/dbfake"
2527
"github.com/coder/coder/v2/codersdk"
26-
"github.com/coder/coder/v2/provisioner/echo"
2728
"github.com/coder/coder/v2/provisionersdk/proto"
2829
"github.com/coder/coder/v2/pty/ptytest"
2930
"github.com/coder/coder/v2/testutil"
@@ -64,8 +65,7 @@ func TestConfigSSH(t *testing.T) {
6465
consthostname="test-coder."
6566
constexpectedKey="ConnectionAttempts"
6667
constremoveKey="ConnectionTimeout"
67-
client:=coderdtest.New(t,&coderdtest.Options{
68-
IncludeProvisionerDaemon:true,
68+
client,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{
6969
ConfigSSH: codersdk.SSHConfigResponse{
7070
HostnamePrefix:hostname,
7171
SSHConfigOptions:map[string]string{
@@ -76,32 +76,13 @@ func TestConfigSSH(t *testing.T) {
7676
},
7777
})
7878
owner:=coderdtest.CreateFirstUser(t,client)
79-
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
80-
authToken:=uuid.NewString()
81-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,&echo.Responses{
82-
Parse:echo.ParseComplete,
83-
ProvisionPlan: []*proto.Response{{
84-
Type:&proto.Response_Plan{
85-
Plan:&proto.PlanComplete{
86-
Resources: []*proto.Resource{{
87-
Name:"example",
88-
Type:"aws_instance",
89-
Agents: []*proto.Agent{{
90-
Id:uuid.NewString(),
91-
Name:"example",
92-
}},
93-
}},
94-
},
95-
},
96-
}},
97-
ProvisionApply:echo.ProvisionApplyWithAgent(authToken),
79+
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
80+
ws,authToken:=dbfake.WorkspaceWithAgent(t,db, database.Workspace{
81+
OrganizationID:owner.OrganizationID,
82+
OwnerID:memberUser.ID,
9883
})
99-
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
100-
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
101-
workspace:=coderdtest.CreateWorkspace(t,member,owner.OrganizationID,template.ID)
102-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
10384
_=agenttest.New(t,client.URL,authToken)
104-
resources:=coderdtest.AwaitWorkspaceAgents(t,client,workspace.ID)
85+
resources:=coderdtest.AwaitWorkspaceAgents(t,client,ws.ID)
10586
agentConn,err:=client.DialWorkspaceAgent(context.Background(),resources[0].Agents[0].ID,nil)
10687
require.NoError(t,err)
10788
deferagentConn.Close()
@@ -172,7 +153,7 @@ func TestConfigSSH(t *testing.T) {
172153

173154
home:=filepath.Dir(filepath.Dir(sshConfigFile))
174155
// #nosec
175-
sshCmd:=exec.Command("ssh","-F",sshConfigFile,hostname+workspace.Name,"echo","test")
156+
sshCmd:=exec.Command("ssh","-F",sshConfigFile,hostname+ws.Name,"echo","test")
176157
pty=ptytest.New(t)
177158
// Set HOME because coder config is included from ~/.ssh/coder.
178159
sshCmd.Env=append(sshCmd.Env,fmt.Sprintf("HOME=%s",home))
@@ -213,13 +194,13 @@ func TestConfigSSH_FileWriteAndOptionsFlow(t *testing.T) {
213194
match,writestring
214195
}
215196
tests:= []struct {
216-
namestring
217-
args[]string
218-
matches[]match
219-
writeConfigwriteConfig
220-
wantConfigwantConfig
221-
wantErrbool
222-
echoResponse*echo.Responses
197+
namestring
198+
args []string
199+
matches []match
200+
writeConfigwriteConfig
201+
wantConfigwantConfig
202+
wantErrbool
203+
hasAgentbool
223204
}{
224205
{
225206
name:"Config file is created",
@@ -576,11 +557,8 @@ func TestConfigSSH_FileWriteAndOptionsFlow(t *testing.T) {
576557
args: []string{
577558
"-y","--coder-binary-path","/foo/bar/coder",
578559
},
579-
wantErr:false,
580-
echoResponse:&echo.Responses{
581-
Parse:echo.ParseComplete,
582-
ProvisionApply:echo.ProvisionApplyWithAgent(""),
583-
},
560+
wantErr:false,
561+
hasAgent:true,
584562
wantConfig:wantConfig{
585563
regexMatch:"ProxyCommand /foo/bar/coder",
586564
},
@@ -591,15 +569,14 @@ func TestConfigSSH_FileWriteAndOptionsFlow(t *testing.T) {
591569
t.Run(tt.name,func(t*testing.T) {
592570
t.Parallel()
593571

594-
var (
595-
client=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
596-
user=coderdtest.CreateFirstUser(t,client)
597-
version=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,tt.echoResponse)
598-
_=coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
599-
project=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
600-
workspace=coderdtest.CreateWorkspace(t,client,user.OrganizationID,project.ID)
601-
_=coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
602-
)
572+
client,db:=coderdtest.NewWithDatabase(t,nil)
573+
user:=coderdtest.CreateFirstUser(t,client)
574+
iftt.hasAgent {
575+
_,_=dbfake.WorkspaceWithAgent(t,db, database.Workspace{
576+
OrganizationID:user.OrganizationID,
577+
OwnerID:user.UserID,
578+
})
579+
}
603580

604581
// Prepare ssh config files.
605582
sshConfigName:=sshConfigFileName(t)
@@ -613,6 +590,7 @@ func TestConfigSSH_FileWriteAndOptionsFlow(t *testing.T) {
613590
}
614591
args=append(args,tt.args...)
615592
inv,root:=clitest.New(t,args...)
593+
//nolint:gocritic // This has always ran with the admin user.
616594
clitest.SetupConfig(t,client,root)
617595

618596
pty:=ptytest.New(t)
@@ -710,17 +688,15 @@ func TestConfigSSH_Hostnames(t *testing.T) {
710688
resources=append(resources,resource)
711689
}
712690

713-
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
691+
client,db:=coderdtest.NewWithDatabase(t,nil)
714692
owner:=coderdtest.CreateFirstUser(t,client)
715-
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
716-
// authToken := uuid.NewString()
717-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,
718-
echo.WithResources(resources))
719-
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
720-
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
721-
workspace:=coderdtest.CreateWorkspace(t,member,owner.OrganizationID,template.ID)
722-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
693+
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
723694

695+
ws:=dbfake.Workspace(t,db, database.Workspace{
696+
OrganizationID:owner.OrganizationID,
697+
OwnerID:memberUser.ID,
698+
})
699+
dbfake.WorkspaceBuild(t,db,ws, database.WorkspaceBuild{},resources...)
724700
sshConfigFile:=sshConfigFileName(t)
725701

726702
inv,root:=clitest.New(t,"config-ssh","--ssh-config-file",sshConfigFile)
@@ -745,7 +721,7 @@ func TestConfigSSH_Hostnames(t *testing.T) {
745721

746722
varexpectedHosts []string
747723
for_,hostnamePattern:=rangett.expected {
748-
hostname:=strings.ReplaceAll(hostnamePattern,"@",workspace.Name)
724+
hostname:=strings.ReplaceAll(hostnamePattern,"@",ws.Name)
749725
expectedHosts=append(expectedHosts,hostname)
750726
}
751727

‎cli/gitssh_test.go

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,25 @@ import (
1616
"testing"
1717

1818
"github.com/gliderlabs/ssh"
19-
"github.com/google/uuid"
2019
"github.com/stretchr/testify/require"
2120
gossh"golang.org/x/crypto/ssh"
2221

2322
"github.com/coder/coder/v2/agent"
2423
"github.com/coder/coder/v2/agent/agenttest"
2524
"github.com/coder/coder/v2/cli/clitest"
2625
"github.com/coder/coder/v2/coderd/coderdtest"
26+
"github.com/coder/coder/v2/coderd/database"
27+
"github.com/coder/coder/v2/coderd/database/dbfake"
2728
"github.com/coder/coder/v2/codersdk"
2829
"github.com/coder/coder/v2/codersdk/agentsdk"
29-
"github.com/coder/coder/v2/provisioner/echo"
3030
"github.com/coder/coder/v2/pty/ptytest"
3131
"github.com/coder/coder/v2/testutil"
3232
)
3333

3434
funcprepareTestGitSSH(ctx context.Context,t*testing.T) (*agentsdk.Client,string, gossh.PublicKey) {
3535
t.Helper()
3636

37-
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
37+
client,db:=coderdtest.NewWithDatabase(t,nil)
3838
user:=coderdtest.CreateFirstUser(t,client)
3939

4040
ctx,cancel:=context.WithCancel(ctx)
@@ -48,24 +48,17 @@ func prepareTestGitSSH(ctx context.Context, t *testing.T) (*agentsdk.Client, str
4848
require.NoError(t,err)
4949

5050
// setup template
51-
agentToken:=uuid.NewString()
52-
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,&echo.Responses{
53-
Parse:echo.ParseComplete,
54-
ProvisionPlan:echo.PlanComplete,
55-
ProvisionApply:echo.ProvisionApplyWithAgent(agentToken),
51+
ws,agentToken:=dbfake.WorkspaceWithAgent(t,db, database.Workspace{
52+
OrganizationID:user.OrganizationID,
53+
OwnerID:user.UserID,
5654
})
57-
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
58-
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
59-
workspace:=coderdtest.CreateWorkspace(t,client,user.OrganizationID,template.ID)
60-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
61-
6255
// start workspace agent
6356
agentClient:=agentsdk.New(client.URL)
6457
agentClient.SetSessionToken(agentToken)
6558
_=agenttest.New(t,client.URL,agentToken,func(o*agent.Options) {
6659
o.Client=agentClient
6760
})
68-
_=coderdtest.AwaitWorkspaceAgents(t,client,workspace.ID)
61+
_=coderdtest.AwaitWorkspaceAgents(t,client,ws.ID)
6962
returnagentClient,agentToken,pubkey
7063
}
7164

‎cli/list_test.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111

1212
"github.com/coder/coder/v2/cli/clitest"
1313
"github.com/coder/coder/v2/coderd/coderdtest"
14+
"github.com/coder/coder/v2/coderd/database"
15+
"github.com/coder/coder/v2/coderd/database/dbfake"
1416
"github.com/coder/coder/v2/codersdk"
1517
"github.com/coder/coder/v2/pty/ptytest"
1618
"github.com/coder/coder/v2/testutil"
@@ -20,14 +22,13 @@ func TestList(t *testing.T) {
2022
t.Parallel()
2123
t.Run("Single",func(t*testing.T) {
2224
t.Parallel()
23-
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
25+
client,db:=coderdtest.NewWithDatabase(t,nil)
2426
owner:=coderdtest.CreateFirstUser(t,client)
25-
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
26-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
27-
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
28-
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
29-
workspace:=coderdtest.CreateWorkspace(t,member,owner.OrganizationID,template.ID)
30-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
27+
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
28+
ws,_:=dbfake.WorkspaceWithAgent(t,db, database.Workspace{
29+
OrganizationID:owner.OrganizationID,
30+
OwnerID:memberUser.ID,
31+
})
3132
inv,root:=clitest.New(t,"ls")
3233
clitest.SetupConfig(t,member,root)
3334
pty:=ptytest.New(t).Attach(inv)
@@ -40,22 +41,21 @@ func TestList(t *testing.T) {
4041
assert.NoError(t,errC)
4142
close(done)
4243
}()
43-
pty.ExpectMatch(workspace.Name)
44+
pty.ExpectMatch(ws.Name)
4445
pty.ExpectMatch("Started")
4546
cancelFunc()
4647
<-done
4748
})
4849

4950
t.Run("JSON",func(t*testing.T) {
5051
t.Parallel()
51-
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
52+
client,db:=coderdtest.NewWithDatabase(t,nil)
5253
owner:=coderdtest.CreateFirstUser(t,client)
53-
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
54-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
55-
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
56-
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
57-
workspace:=coderdtest.CreateWorkspace(t,member,owner.OrganizationID,template.ID)
58-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
54+
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
55+
dbfake.WorkspaceWithAgent(t,db, database.Workspace{
56+
OrganizationID:owner.OrganizationID,
57+
OwnerID:memberUser.ID,
58+
})
5959

6060
inv,root:=clitest.New(t,"list","--output=json")
6161
clitest.SetupConfig(t,member,root)
@@ -68,8 +68,8 @@ func TestList(t *testing.T) {
6868
err:=inv.WithContext(ctx).Run()
6969
require.NoError(t,err)
7070

71-
vartemplates []codersdk.Workspace
72-
require.NoError(t,json.Unmarshal(out.Bytes(),&templates))
73-
require.Len(t,templates,1)
71+
varworkspaces []codersdk.Workspace
72+
require.NoError(t,json.Unmarshal(out.Bytes(),&workspaces))
73+
require.Len(t,workspaces,1)
7474
})
7575
}

‎cli/portforward_test.go

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ import (
1818
"github.com/coder/coder/v2/agent/agenttest"
1919
"github.com/coder/coder/v2/cli/clitest"
2020
"github.com/coder/coder/v2/coderd/coderdtest"
21+
"github.com/coder/coder/v2/coderd/database"
22+
"github.com/coder/coder/v2/coderd/database/dbfake"
2123
"github.com/coder/coder/v2/codersdk"
22-
"github.com/coder/coder/v2/provisioner/echo"
2324
"github.com/coder/coder/v2/pty/ptytest"
2425
"github.com/coder/coder/v2/testutil"
2526
)
@@ -132,10 +133,10 @@ func TestPortForward(t *testing.T) {
132133
// Setup agent once to be shared between test-cases (avoid expensive
133134
// non-parallel setup).
134135
var (
135-
client=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
136-
admin=coderdtest.CreateFirstUser(t,client)
137-
member,_=coderdtest.CreateAnotherUser(t,client,admin.OrganizationID)
138-
workspace=runAgent(t,client,member)
136+
client,db=coderdtest.NewWithDatabase(t,nil)
137+
admin=coderdtest.CreateFirstUser(t,client)
138+
member,memberUser=coderdtest.CreateAnotherUser(t,client,admin.OrganizationID)
139+
workspace=runAgent(t,client,memberUser.ID,db)
139140
)
140141

141142
for_,c:=rangecases {
@@ -299,35 +300,22 @@ func TestPortForward(t *testing.T) {
299300
// runAgent creates a fake workspace and starts an agent locally for that
300301
// workspace. The agent will be cleaned up on test completion.
301302
// nolint:unused
302-
funcrunAgent(t*testing.T,adminClient,userClient*codersdk.Client) codersdk.Workspace {
303-
ctx:=context.Background()
304-
user,err:=userClient.User(ctx,codersdk.Me)
303+
funcrunAgent(t*testing.T,client*codersdk.Client,owner uuid.UUID,db database.Store) database.Workspace {
304+
user,err:=client.User(context.Background(),codersdk.Me)
305305
require.NoError(t,err,"specified user does not exist")
306306
require.Greater(t,len(user.OrganizationIDs),0,"user has no organizations")
307307
orgID:=user.OrganizationIDs[0]
308-
309-
// Setup template
310-
agentToken:=uuid.NewString()
311-
version:=coderdtest.CreateTemplateVersion(t,adminClient,orgID,&echo.Responses{
312-
Parse:echo.ParseComplete,
313-
ProvisionPlan:echo.PlanComplete,
314-
ProvisionApply:echo.ProvisionApplyWithAgent(agentToken),
308+
ws,agentToken:=dbfake.WorkspaceWithAgent(t,db, database.Workspace{
309+
OrganizationID:orgID,
310+
OwnerID:owner,
315311
})
316-
317-
// Create template and workspace
318-
template:=coderdtest.CreateTemplate(t,adminClient,orgID,version.ID)
319-
coderdtest.AwaitTemplateVersionJobCompleted(t,adminClient,version.ID)
320-
workspace:=coderdtest.CreateWorkspace(t,userClient,orgID,template.ID)
321-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,adminClient,workspace.LatestBuild.ID)
322-
323-
_=agenttest.New(t,adminClient.URL,agentToken,
312+
_=agenttest.New(t,client.URL,agentToken,
324313
func(o*agent.Options) {
325314
o.SSHMaxTimeout=60*time.Second
326315
},
327316
)
328-
coderdtest.AwaitWorkspaceAgents(t,adminClient,workspace.ID)
329-
330-
returnworkspace
317+
coderdtest.AwaitWorkspaceAgents(t,client,ws.ID)
318+
returnws
331319
}
332320

333321
// setupTestListener starts accepting connections and echoing a single packet.

‎cli/root_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ func TestDERPHeaders(t *testing.T) {
136136
})
137137

138138
var (
139-
admin=coderdtest.CreateFirstUser(t,client)
140-
member,_=coderdtest.CreateAnotherUser(t,client,admin.OrganizationID)
141-
workspace=runAgent(t,client,member)
139+
admin=coderdtest.CreateFirstUser(t,client)
140+
member,memberUser=coderdtest.CreateAnotherUser(t,client,admin.OrganizationID)
141+
workspace=runAgent(t,client,memberUser.ID,newOptions.Database)
142142
)
143143

144144
// Inject custom /derp handler so we can inspect the headers.

‎coderd/database/dbfake/dbfake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func WorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed
124124
Valid:true,
125125
},
126126
})
127+
ProvisionerJobResources(t,db,jobID,seed.Transition,resources...)
127128
seed.TemplateVersionID=templateVersion.ID
128129
}
129130
build:=dbgen.WorkspaceBuild(t,db,seed)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp