6
6
7
7
"github.com/google/uuid"
8
8
"github.com/stretchr/testify/require"
9
+ "k8s.io/utils/pointer"
9
10
10
11
"github.com/coder/coder/coderd/coderdtest"
11
12
"github.com/coder/coder/coderd/database"
@@ -28,10 +29,12 @@ func TestCreateGroup(t *testing.T) {
28
29
})
29
30
ctx , _ := testutil .Context (t )
30
31
group , err := client .CreateGroup (ctx , user .OrganizationID , codersdk.CreateGroupRequest {
31
- Name : "hi" ,
32
+ Name : "hi" ,
33
+ AvatarURL : "https://example.com" ,
32
34
})
33
35
require .NoError (t , err )
34
36
require .Equal (t , "hi" , group .Name )
37
+ require .Equal (t , "https://example.com" , group .AvatarURL )
35
38
require .Empty (t , group .Members )
36
39
require .NotEqual (t , uuid .Nil .String (), group .ID .String ())
37
40
})
@@ -83,7 +86,7 @@ func TestCreateGroup(t *testing.T) {
83
86
func TestPatchGroup (t * testing.T ) {
84
87
t .Parallel ()
85
88
86
- t .Run ("Name " , func (t * testing.T ) {
89
+ t .Run ("OK " , func (t * testing.T ) {
87
90
t .Parallel ()
88
91
89
92
client := coderdenttest .New (t , nil )
@@ -94,15 +97,43 @@ func TestPatchGroup(t *testing.T) {
94
97
})
95
98
ctx , _ := testutil .Context (t )
96
99
group , err := client .CreateGroup (ctx , user .OrganizationID , codersdk.CreateGroupRequest {
97
- Name : "hi" ,
100
+ Name : "hi" ,
101
+ AvatarURL : "https://example.com" ,
98
102
})
99
103
require .NoError (t , err )
100
104
101
105
group , err = client .PatchGroup (ctx , group .ID , codersdk.PatchGroupRequest {
102
- Name : "bye" ,
106
+ Name : "bye" ,
107
+ AvatarURL : pointer .String ("https://google.com" ),
103
108
})
104
109
require .NoError (t , err )
105
110
require .Equal (t , "bye" , group .Name )
111
+ require .Equal (t , "https://google.com" , group .AvatarURL )
112
+ })
113
+
114
+ // The FE sends a request from the edit page where the old name == new name.
115
+ // This should pass since it's not really an error to update a group name
116
+ // to itself.
117
+ t .Run ("SameNameOK" , func (t * testing.T ) {
118
+ t .Parallel ()
119
+
120
+ client := coderdenttest .New (t , nil )
121
+ user := coderdtest .CreateFirstUser (t , client )
122
+
123
+ _ = coderdenttest .AddLicense (t , client , coderdenttest.LicenseOptions {
124
+ TemplateRBACEnabled : true ,
125
+ })
126
+ ctx , _ := testutil .Context (t )
127
+ group , err := client .CreateGroup (ctx , user .OrganizationID , codersdk.CreateGroupRequest {
128
+ Name : "hi" ,
129
+ })
130
+ require .NoError (t , err )
131
+
132
+ group , err = client .PatchGroup (ctx , group .ID , codersdk.PatchGroupRequest {
133
+ Name : "hi" ,
134
+ })
135
+ require .NoError (t , err )
136
+ require .Equal (t , "hi" , group .Name )
106
137
})
107
138
108
139
t .Run ("AddUsers" , func (t * testing.T ) {
@@ -166,6 +197,37 @@ func TestPatchGroup(t *testing.T) {
166
197
require .Contains (t , group .Members , user4 )
167
198
})
168
199
200
+ t .Run ("NameConflict" , func (t * testing.T ) {
201
+ t .Parallel ()
202
+
203
+ client := coderdenttest .New (t , nil )
204
+ user := coderdtest .CreateFirstUser (t , client )
205
+
206
+ _ = coderdenttest .AddLicense (t , client , coderdenttest.LicenseOptions {
207
+ TemplateRBACEnabled : true ,
208
+ })
209
+ ctx , _ := testutil .Context (t )
210
+ group1 , err := client .CreateGroup (ctx , user .OrganizationID , codersdk.CreateGroupRequest {
211
+ Name : "hi" ,
212
+ AvatarURL : "https://example.com" ,
213
+ })
214
+ require .NoError (t , err )
215
+
216
+ group2 , err := client .CreateGroup (ctx , user .OrganizationID , codersdk.CreateGroupRequest {
217
+ Name : "bye" ,
218
+ })
219
+ require .NoError (t , err )
220
+
221
+ group1 , err = client .PatchGroup (ctx , group1 .ID , codersdk.PatchGroupRequest {
222
+ Name : group2 .Name ,
223
+ AvatarURL : pointer .String ("https://google.com" ),
224
+ })
225
+ require .Error (t , err )
226
+ cerr , ok := codersdk .AsError (err )
227
+ require .True (t , ok )
228
+ require .Equal (t , http .StatusConflict , cerr .StatusCode ())
229
+ })
230
+
169
231
t .Run ("UserNotExist" , func (t * testing.T ) {
170
232
t .Parallel ()
171
233
0 commit comments