@@ -60,7 +60,115 @@ func TestRestart(t *testing.T) {
60
60
require .NoError (t , err , "execute failed" )
61
61
})
62
62
63
- t .Run ("BuildOptions" , func (t * testing.T ) {
63
+ t .Run ("PromptEphemeralParameters" , func (t * testing.T ) {
64
+ t .Parallel ()
65
+
66
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
67
+ owner := coderdtest .CreateFirstUser (t , client )
68
+ member , memberUser := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
69
+ version := coderdtest .CreateTemplateVersion (t , client , owner .OrganizationID , echoResponses )
70
+ coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
71
+ template := coderdtest .CreateTemplate (t , client , owner .OrganizationID , version .ID )
72
+ workspace := coderdtest .CreateWorkspace (t , member , template .ID )
73
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , workspace .LatestBuild .ID )
74
+
75
+ inv , root := clitest .New (t , "restart" , workspace .Name , "--prompt-ephemeral-parameters" )
76
+ clitest .SetupConfig (t , member , root )
77
+ doneChan := make (chan struct {})
78
+ pty := ptytest .New (t ).Attach (inv )
79
+ go func () {
80
+ defer close (doneChan )
81
+ err := inv .Run ()
82
+ assert .NoError (t , err )
83
+ }()
84
+
85
+ matches := []string {
86
+ ephemeralParameterDescription , ephemeralParameterValue ,
87
+ "Restart workspace?" , "yes" ,
88
+ "Stopping workspace" , "" ,
89
+ "Starting workspace" , "" ,
90
+ "workspace has been restarted" , "" ,
91
+ }
92
+ for i := 0 ; i < len (matches ); i += 2 {
93
+ match := matches [i ]
94
+ value := matches [i + 1 ]
95
+ pty .ExpectMatch (match )
96
+
97
+ if value != "" {
98
+ pty .WriteLine (value )
99
+ }
100
+ }
101
+ <- doneChan
102
+
103
+ // Verify if build option is set
104
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
105
+ defer cancel ()
106
+
107
+ workspace , err := client .WorkspaceByOwnerAndName (ctx , memberUser .ID .String (), workspace .Name , codersdk.WorkspaceOptions {})
108
+ require .NoError (t , err )
109
+ actualParameters , err := client .WorkspaceBuildParameters (ctx , workspace .LatestBuild .ID )
110
+ require .NoError (t , err )
111
+ require .Contains (t , actualParameters , codersdk.WorkspaceBuildParameter {
112
+ Name : ephemeralParameterName ,
113
+ Value : ephemeralParameterValue ,
114
+ })
115
+ })
116
+
117
+ t .Run ("EphemeralParameterFlags" , func (t * testing.T ) {
118
+ t .Parallel ()
119
+
120
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
121
+ owner := coderdtest .CreateFirstUser (t , client )
122
+ member , memberUser := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
123
+ version := coderdtest .CreateTemplateVersion (t , client , owner .OrganizationID , echoResponses )
124
+ coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
125
+ template := coderdtest .CreateTemplate (t , client , owner .OrganizationID , version .ID )
126
+ workspace := coderdtest .CreateWorkspace (t , member , template .ID )
127
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , workspace .LatestBuild .ID )
128
+
129
+ inv , root := clitest .New (t , "restart" , workspace .Name ,
130
+ "--ephemeral-parameter" , fmt .Sprintf ("%s=%s" , ephemeralParameterName , ephemeralParameterValue ))
131
+ clitest .SetupConfig (t , member , root )
132
+ doneChan := make (chan struct {})
133
+ pty := ptytest .New (t ).Attach (inv )
134
+ go func () {
135
+ defer close (doneChan )
136
+ err := inv .Run ()
137
+ assert .NoError (t , err )
138
+ }()
139
+
140
+ matches := []string {
141
+ "Restart workspace?" , "yes" ,
142
+ "Stopping workspace" , "" ,
143
+ "Starting workspace" , "" ,
144
+ "workspace has been restarted" , "" ,
145
+ }
146
+ for i := 0 ; i < len (matches ); i += 2 {
147
+ match := matches [i ]
148
+ value := matches [i + 1 ]
149
+ pty .ExpectMatch (match )
150
+
151
+ if value != "" {
152
+ pty .WriteLine (value )
153
+ }
154
+ }
155
+ <- doneChan
156
+
157
+ // Verify if build option is set
158
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
159
+ defer cancel ()
160
+
161
+ workspace , err := client .WorkspaceByOwnerAndName (ctx , memberUser .ID .String (), workspace .Name , codersdk.WorkspaceOptions {})
162
+ require .NoError (t , err )
163
+ actualParameters , err := client .WorkspaceBuildParameters (ctx , workspace .LatestBuild .ID )
164
+ require .NoError (t , err )
165
+ require .Contains (t , actualParameters , codersdk.WorkspaceBuildParameter {
166
+ Name : ephemeralParameterName ,
167
+ Value : ephemeralParameterValue ,
168
+ })
169
+ })
170
+
171
+ t .Run ("with deprecated build-options flag" , func (t * testing.T ) {
64
172
t .Parallel ()
65
173
66
174
client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
@@ -114,7 +222,7 @@ func TestRestart(t *testing.T) {
114
222
})
115
223
})
116
224
117
- t .Run ("BuildOptionFlags " , func (t * testing.T ) {
225
+ t .Run ("with deprecated build-option flag " , func (t * testing.T ) {
118
226
t .Parallel ()
119
227
120
228
client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
0 commit comments