1
1
package cli_test
2
2
3
3
import (
4
- "context"
5
4
"fmt"
6
5
"net/http"
7
6
"os"
@@ -11,7 +10,6 @@ import (
11
10
"sync/atomic"
12
11
"testing"
13
12
14
- "github.com/google/uuid"
15
13
"github.com/stretchr/testify/assert"
16
14
"github.com/stretchr/testify/require"
17
15
@@ -21,10 +19,7 @@ import (
21
19
"github.com/coder/coder/v2/coderd/coderdtest"
22
20
"github.com/coder/coder/v2/coderd/database"
23
21
"github.com/coder/coder/v2/coderd/database/dbfake"
24
- "github.com/coder/coder/v2/coderd/database/dbtestutil"
25
22
"github.com/coder/coder/v2/codersdk"
26
- "github.com/coder/coder/v2/codersdk/workspacesdk"
27
- "github.com/coder/coder/v2/provisionersdk/proto"
28
23
"github.com/coder/coder/v2/testutil"
29
24
)
30
25
@@ -64,158 +59,6 @@ func TestWorkspaceAgent(t *testing.T) {
64
59
}, testutil .WaitLong , testutil .IntervalMedium )
65
60
})
66
61
67
- t .Run ("Azure" , func (t * testing.T ) {
68
- t .Parallel ()
69
- instanceID := "instanceidentifier"
70
- certificates , metadataClient := coderdtest .NewAzureInstanceIdentity (t , instanceID )
71
- db , ps := dbtestutil .NewDB (t ,
72
- dbtestutil .WithDumpOnFailure (),
73
- )
74
- client := coderdtest .New (t , & coderdtest.Options {
75
- Database : db ,
76
- Pubsub : ps ,
77
- AzureCertificates : certificates ,
78
- })
79
- user := coderdtest .CreateFirstUser (t , client )
80
- r := dbfake .WorkspaceBuild (t , db , database.WorkspaceTable {
81
- OrganizationID : user .OrganizationID ,
82
- OwnerID : user .UserID ,
83
- }).WithAgent (func (agents []* proto.Agent ) []* proto.Agent {
84
- agents [0 ].Auth = & proto.Agent_InstanceId {InstanceId : instanceID }
85
- return agents
86
- }).Do ()
87
-
88
- inv , _ := clitest .New (t , "agent" , "--auth" , "azure-instance-identity" , "--agent-url" , client .URL .String ())
89
- inv = inv .WithContext (
90
- //nolint:revive,staticcheck
91
- context .WithValue (inv .Context (), "azure-client" , metadataClient ),
92
- )
93
-
94
- ctx := inv .Context ()
95
- clitest .Start (t , inv )
96
- coderdtest .NewWorkspaceAgentWaiter (t , client , r .Workspace .ID ).
97
- MatchResources (matchAgentWithVersion ).Wait ()
98
- workspace , err := client .Workspace (ctx , r .Workspace .ID )
99
- require .NoError (t , err )
100
- resources := workspace .LatestBuild .Resources
101
- if assert .NotEmpty (t , workspace .LatestBuild .Resources ) && assert .NotEmpty (t , resources [0 ].Agents ) {
102
- assert .NotEmpty (t , resources [0 ].Agents [0 ].Version )
103
- }
104
- dialer , err := workspacesdk .New (client ).
105
- DialAgent (ctx , resources [0 ].Agents [0 ].ID , nil )
106
- require .NoError (t , err )
107
- defer dialer .Close ()
108
- require .True (t , dialer .AwaitReachable (ctx ))
109
- })
110
-
111
- t .Run ("AWS" , func (t * testing.T ) {
112
- t .Parallel ()
113
- instanceID := "instanceidentifier"
114
- certificates , metadataClient := coderdtest .NewAWSInstanceIdentity (t , instanceID )
115
- db , ps := dbtestutil .NewDB (t ,
116
- dbtestutil .WithDumpOnFailure (),
117
- )
118
- client := coderdtest .New (t , & coderdtest.Options {
119
- Database : db ,
120
- Pubsub : ps ,
121
- AWSCertificates : certificates ,
122
- })
123
- user := coderdtest .CreateFirstUser (t , client )
124
- r := dbfake .WorkspaceBuild (t , db , database.WorkspaceTable {
125
- OrganizationID : user .OrganizationID ,
126
- OwnerID : user .UserID ,
127
- }).WithAgent (func (agents []* proto.Agent ) []* proto.Agent {
128
- agents [0 ].Auth = & proto.Agent_InstanceId {InstanceId : instanceID }
129
- return agents
130
- }).Do ()
131
-
132
- inv , _ := clitest .New (t , "agent" , "--auth" , "aws-instance-identity" , "--agent-url" , client .URL .String ())
133
- inv = inv .WithContext (
134
- //nolint:revive,staticcheck
135
- context .WithValue (inv .Context (), "aws-client" , metadataClient ),
136
- )
137
-
138
- clitest .Start (t , inv )
139
- ctx := inv .Context ()
140
- coderdtest .NewWorkspaceAgentWaiter (t , client , r .Workspace .ID ).
141
- MatchResources (matchAgentWithVersion ).
142
- Wait ()
143
- workspace , err := client .Workspace (ctx , r .Workspace .ID )
144
- require .NoError (t , err )
145
- resources := workspace .LatestBuild .Resources
146
- if assert .NotEmpty (t , resources ) && assert .NotEmpty (t , resources [0 ].Agents ) {
147
- assert .NotEmpty (t , resources [0 ].Agents [0 ].Version )
148
- }
149
- dialer , err := workspacesdk .New (client ).
150
- DialAgent (ctx , resources [0 ].Agents [0 ].ID , nil )
151
- require .NoError (t , err )
152
- defer dialer .Close ()
153
- require .True (t , dialer .AwaitReachable (ctx ))
154
- })
155
-
156
- t .Run ("GoogleCloud" , func (t * testing.T ) {
157
- t .Parallel ()
158
- instanceID := "instanceidentifier"
159
- validator , metadataClient := coderdtest .NewGoogleInstanceIdentity (t , instanceID , false )
160
- db , ps := dbtestutil .NewDB (t ,
161
- dbtestutil .WithDumpOnFailure (),
162
- )
163
- client := coderdtest .New (t , & coderdtest.Options {
164
- Database : db ,
165
- Pubsub : ps ,
166
- GoogleTokenValidator : validator ,
167
- })
168
- owner := coderdtest .CreateFirstUser (t , client )
169
- member , memberUser := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
170
- r := dbfake .WorkspaceBuild (t , db , database.WorkspaceTable {
171
- OrganizationID : owner .OrganizationID ,
172
- OwnerID : memberUser .ID ,
173
- }).WithAgent (func (agents []* proto.Agent ) []* proto.Agent {
174
- agents [0 ].Auth = & proto.Agent_InstanceId {InstanceId : instanceID }
175
- return agents
176
- }).Do ()
177
-
178
- inv , cfg := clitest .New (t , "agent" , "--auth" , "google-instance-identity" , "--agent-url" , client .URL .String ())
179
- clitest .SetupConfig (t , member , cfg )
180
-
181
- clitest .Start (t ,
182
- inv .WithContext (
183
- //nolint:revive,staticcheck
184
- context .WithValue (inv .Context (), "gcp-client" , metadataClient ),
185
- ),
186
- )
187
-
188
- ctx := inv .Context ()
189
- coderdtest .NewWorkspaceAgentWaiter (t , client , r .Workspace .ID ).
190
- MatchResources (matchAgentWithVersion ).
191
- Wait ()
192
- workspace , err := client .Workspace (ctx , r .Workspace .ID )
193
- require .NoError (t , err )
194
- resources := workspace .LatestBuild .Resources
195
- if assert .NotEmpty (t , resources ) && assert .NotEmpty (t , resources [0 ].Agents ) {
196
- assert .NotEmpty (t , resources [0 ].Agents [0 ].Version )
197
- }
198
- dialer , err := workspacesdk .New (client ).DialAgent (ctx , resources [0 ].Agents [0 ].ID , nil )
199
- require .NoError (t , err )
200
- defer dialer .Close ()
201
- require .True (t , dialer .AwaitReachable (ctx ))
202
- sshClient , err := dialer .SSHClient (ctx )
203
- require .NoError (t , err )
204
- defer sshClient .Close ()
205
- session , err := sshClient .NewSession ()
206
- require .NoError (t , err )
207
- defer session .Close ()
208
- key := "CODER_AGENT_TOKEN"
209
- command := "sh -c 'echo $" + key + "'"
210
- if runtime .GOOS == "windows" {
211
- command = "cmd.exe /c echo %" + key + "%"
212
- }
213
- token , err := session .CombinedOutput (command )
214
- require .NoError (t , err )
215
- _ , err = uuid .Parse (strings .TrimSpace (string (token )))
216
- require .NoError (t , err )
217
- })
218
-
219
62
t .Run ("PostStartup" , func (t * testing.T ) {
220
63
t .Parallel ()
221
64
0 commit comments