@@ -2,6 +2,7 @@ package coderd_test
2
2
3
3
import (
4
4
"context"
5
+ "net/http"
5
6
"testing"
6
7
7
8
"github.com/google/uuid"
@@ -10,143 +11,135 @@ import (
10
11
"github.com/coder/coder/coderd"
11
12
"github.com/coder/coder/coderd/coderdtest"
12
13
"github.com/coder/coder/codersdk"
13
- "github.com/coder/coder/database"
14
14
)
15
15
16
16
func TestWorkspaces (t * testing.T ) {
17
17
t .Parallel ()
18
-
19
18
t .Run ("ListNone" , func (t * testing.T ) {
20
19
t .Parallel ()
21
20
client := coderdtest .New (t )
22
21
_ = coderdtest .CreateInitialUser (t , client )
23
- workspaces , err := client .WorkspacesByUser (context .Background (), "" )
22
+ workspaces , err := client .Workspaces (context .Background (), "" )
24
23
require .NoError (t , err )
24
+ require .NotNil (t , workspaces )
25
25
require .Len (t , workspaces , 0 )
26
26
})
27
27
28
- setupProjectAndWorkspace := func (t * testing.T , client * codersdk.Client , user coderd.CreateInitialUserRequest ) (coderd.Project , coderd.Workspace ) {
29
- project , err := client .CreateProject (context .Background (), user .Organization , coderd.CreateProjectRequest {
30
- Name : "banana" ,
31
- Provisioner : database .ProvisionerTypeEcho ,
32
- })
33
- require .NoError (t , err )
34
- workspace , err := client .CreateWorkspace (context .Background (), "" , coderd.CreateWorkspaceRequest {
35
- Name : "example" ,
36
- ProjectID : project .ID ,
37
- })
38
- require .NoError (t , err )
39
- return project , workspace
40
- }
41
-
42
28
t .Run ("List" , func (t * testing.T ) {
43
29
t .Parallel ()
44
30
client := coderdtest .New (t )
45
31
user := coderdtest .CreateInitialUser (t , client )
46
- _ , _ = setupProjectAndWorkspace (t , client , user )
47
- workspaces , err := client .WorkspacesByUser (context .Background (), "" )
32
+ project := coderdtest .CreateProject (t , client , user .Organization )
33
+ _ = coderdtest .CreateWorkspace (t , client , "" , project .ID )
34
+ workspaces , err := client .Workspaces (context .Background (), "" )
48
35
require .NoError (t , err )
49
36
require .Len (t , workspaces , 1 )
50
37
})
38
+ }
51
39
52
- t .Run ("ListNoneForProject" , func (t * testing.T ) {
40
+ func TestPostWorkspaceByUser (t * testing.T ) {
41
+ t .Parallel ()
42
+ t .Run ("InvalidProject" , func (t * testing.T ) {
53
43
t .Parallel ()
54
44
client := coderdtest .New (t )
55
- user : = coderdtest .CreateInitialUser (t , client )
56
- project , err := client .CreateProject (context .Background (), user . Organization , coderd.CreateProjectRequest {
57
- Name : "banana" ,
58
- Provisioner : database . ProvisionerTypeEcho ,
45
+ _ = coderdtest .CreateInitialUser (t , client )
46
+ _ , err := client .CreateWorkspace (context .Background (), "" , coderd.CreateWorkspaceRequest {
47
+ ProjectID : uuid . New () ,
48
+ Name : "workspace" ,
59
49
})
60
- require .NoError (t , err )
61
- workspaces , err := client . WorkspacesByProject ( context . Background (), user . Organization , project . Name )
62
- require .NoError (t , err )
63
- require .Len (t , workspaces , 0 )
50
+ require .Error (t , err )
51
+ var apiErr * codersdk. Error
52
+ require .ErrorAs (t , err , & apiErr )
53
+ require .Equal (t , http . StatusBadRequest , apiErr . StatusCode () )
64
54
})
65
55
66
- t .Run ("ListForProject " , func (t * testing.T ) {
56
+ t .Run ("NoProjectAccess " , func (t * testing.T ) {
67
57
t .Parallel ()
68
58
client := coderdtest .New (t )
69
59
user := coderdtest .CreateInitialUser (t , client )
70
- project , _ := setupProjectAndWorkspace (t , client , user )
71
- workspaces , err := client .WorkspacesByProject (context .Background (), user .Organization , project .Name )
72
- require .NoError (t , err )
73
- require .Len (t , workspaces , 1 )
74
- })
60
+ project := coderdtest .CreateProject (t , client , user .Organization )
75
61
76
- t .Run ("CreateInvalidInput" , func (t * testing.T ) {
77
- t .Parallel ()
78
- client := coderdtest .New (t )
79
- user := coderdtest .CreateInitialUser (t , client)
80
- project , err := client .CreateProject (context .Background (), user .Organization , coderd.CreateProjectRequest {
81
- Name : "banana" ,
82
- Provisioner : database .ProvisionerTypeEcho ,
62
+ anotherUser := coderd.CreateUserRequest {
63
+ Email : "another@user.org" ,
64
+ Username : "someuser" ,
65
+ Password : "somepass" ,
66
+ }
67
+ _ , err := client .CreateUser (context .Background (), anotherUser )
68
+ require .NoError (t , err )
69
+ token , err := client .LoginWithPassword (context .Background (), coderd.LoginWithPasswordRequest {
70
+ Email : anotherUser .Email ,
71
+ Password : anotherUser .Password ,
83
72
})
84
73
require .NoError (t , err )
74
+ err = client .SetSessionToken (token .SessionToken )
75
+ require .NoError (t , err )
76
+
85
77
_ , err = client .CreateWorkspace (context .Background (), "" , coderd.CreateWorkspaceRequest {
86
78
ProjectID : project .ID ,
87
- Name : "$$$ " ,
79
+ Name : "workspace " ,
88
80
})
89
81
require .Error (t , err )
82
+ var apiErr * codersdk.Error
83
+ require .ErrorAs (t , err , & apiErr )
84
+ require .Equal (t , http .StatusUnauthorized , apiErr .StatusCode ())
90
85
})
91
86
92
- t .Run ("CreateInvalidProject " , func (t * testing.T ) {
87
+ t .Run ("AlreadyExists " , func (t * testing.T ) {
93
88
t .Parallel ()
94
89
client := coderdtest .New (t )
95
- _ = coderdtest .CreateInitialUser (t , client )
90
+ user := coderdtest .CreateInitialUser (t , client )
91
+ project := coderdtest .CreateProject (t , client , user .Organization )
92
+ workspace := coderdtest .CreateWorkspace (t , client , "" , project .ID )
96
93
_ , err := client .CreateWorkspace (context .Background (), "" , coderd.CreateWorkspaceRequest {
97
- ProjectID : uuid . New () ,
98
- Name : "moo" ,
94
+ ProjectID : project . ID ,
95
+ Name : workspace . Name ,
99
96
})
100
97
require .Error (t , err )
98
+ var apiErr * codersdk.Error
99
+ require .ErrorAs (t , err , & apiErr )
100
+ require .Equal (t , http .StatusConflict , apiErr .StatusCode ())
101
101
})
102
102
103
- t .Run ("CreateNotInProjectOrganization " , func (t * testing.T ) {
103
+ t .Run ("Create " , func (t * testing.T ) {
104
104
t .Parallel ()
105
105
client := coderdtest .New (t )
106
- initial := coderdtest .CreateInitialUser (t , client )
107
- project , err := client .CreateProject (context .Background (), initial .Organization , coderd.CreateProjectRequest {
108
- Name : "banana" ,
109
- Provisioner : database .ProvisionerTypeEcho ,
110
- })
111
- require .NoError (t , err )
112
- _ , err = client .CreateUser (context .Background (), coderd.CreateUserRequest {
113
- Email : "hello@ok.io" ,
114
- Username : "example" ,
115
- Password : "password" ,
116
- })
117
- require .NoError (t , err )
118
- token , err := client .LoginWithPassword (context .Background (), coderd.LoginWithPasswordRequest {
119
- Email : "hello@ok.io" ,
120
- Password : "password" ,
121
- })
122
- require .NoError (t , err )
123
- err = client .SetSessionToken (token .SessionToken )
124
- require .NoError (t , err )
125
- _ , err = client .CreateWorkspace (context .Background (), "" , coderd.CreateWorkspaceRequest {
126
- ProjectID : project .ID ,
127
- Name : "moo" ,
128
- })
129
- require .Error (t , err )
106
+ user := coderdtest .CreateInitialUser (t , client )
107
+ project := coderdtest .CreateProject (t , client , user .Organization )
108
+ _ = coderdtest .CreateWorkspace (t , client , "" , project .ID )
130
109
})
110
+ }
111
+
112
+ func TestWorkspaceByUser (t * testing.T ) {
113
+ t .Parallel ()
114
+ client := coderdtest .New (t )
115
+ user := coderdtest .CreateInitialUser (t , client )
116
+ project := coderdtest .CreateProject (t , client , user .Organization )
117
+ workspace := coderdtest .CreateWorkspace (t , client , "" , project .ID )
118
+ _ , err := client .Workspace (context .Background (), "" , workspace .Name )
119
+ require .NoError (t , err )
120
+ }
131
121
132
- t .Run ("CreateAlreadyExists" , func (t * testing.T ) {
122
+ func TestWorkspacesByProject (t * testing.T ) {
123
+ t .Parallel ()
124
+ t .Run ("ListEmpty" , func (t * testing.T ) {
133
125
t .Parallel ()
134
126
client := coderdtest .New (t )
135
127
user := coderdtest .CreateInitialUser (t , client )
136
- project , workspace := setupProjectAndWorkspace (t , client , user )
137
- _ , err := client .CreateWorkspace (context .Background (), "" , coderd.CreateWorkspaceRequest {
138
- Name : workspace .Name ,
139
- ProjectID : project .ID ,
140
- })
141
- require .Error (t , err )
128
+ project := coderdtest .CreateProject (t , client , user .Organization )
129
+ workspaces , err := client .WorkspacesByProject (context .Background (), user .Organization , project .Name )
130
+ require .NoError (t , err )
131
+ require .NotNil (t , workspaces )
142
132
})
143
133
144
- t .Run ("Single " , func (t * testing.T ) {
134
+ t .Run ("List " , func (t * testing.T ) {
145
135
t .Parallel ()
146
136
client := coderdtest .New (t )
147
137
user := coderdtest .CreateInitialUser (t , client )
148
- _ , workspace := setupProjectAndWorkspace (t , client , user )
149
- _ , err := client .Workspace (context .Background (), "" , workspace .Name )
138
+ project := coderdtest .CreateProject (t , client , user .Organization )
139
+ _ = coderdtest .CreateWorkspace (t , client , "" , project .ID )
140
+ workspaces , err := client .WorkspacesByProject (context .Background (), user .Organization , project .Name )
150
141
require .NoError (t , err )
142
+ require .NotNil (t , workspaces )
143
+ require .Len (t , workspaces , 1 )
151
144
})
152
145
}
0 commit comments