@@ -40,7 +40,6 @@ Cypress.Commands.add('containsnear', {}, (...args) => {
40
40
Cypress . Commands . add ( 'menuItem' , { } , ( name ) => {
41
41
return cy . contains ( '#page-sidebar a' , name ) ;
42
42
} ) ;
43
-
44
43
Cypress . Commands . add ( 'logout' , { } , ( ) => {
45
44
cy . server ( ) ;
46
45
cy . route ( 'GET' , Cypress . env ( 'prefix' ) + '_ui/v1/me/' ) . as ( 'me' ) ;
@@ -59,15 +58,15 @@ Cypress.Commands.add('login', {}, (username, password) => {
59
58
cy . wait ( '@me' ) ;
60
59
} ) ;
61
60
62
- Cypress . Commands . add ( 'createUser' , { } , ( username , password , firstName = null , lastName = null , email = null ) => {
61
+ Cypress . Commands . add ( 'createUser' , { } , ( username , password = null , firstName = null , lastName = null , email = null ) => {
63
62
cy . contains ( '#page-sidebar a' , 'Users' ) . click ( ) ;
64
63
65
64
const user = {
66
65
firstName : firstName || 'First Name' ,
67
66
lastName : lastName || 'Last Name' ,
68
67
username : username ,
69
68
email : email || 'firstName@example.com' ,
70
- password : password ,
69
+ password : password || 'I am a complicated passw0rd' ,
71
70
} ;
72
71
cy . contains ( 'Create user' ) . click ( ) ;
73
72
cy . get ( '#first_name' ) . type ( user . firstName ) ;
@@ -77,7 +76,102 @@ Cypress.Commands.add('createUser', {}, (username, password, firstName = null, la
77
76
cy . get ( '#password' ) . type ( user . password ) ;
78
77
cy . get ( '#password-confirm' ) . type ( user . password ) ;
79
78
79
+ cy . server ( ) ;
80
+ cy . route ( 'POST' , Cypress . env ( 'prefix' ) + '_ui/v1/users/' ) . as ( 'createUser' ) ;
81
+
80
82
cy . contains ( 'Save' ) . click ( ) ;
83
+ cy . wait ( '@createUser' ) ;
84
+ } ) ;
85
+
86
+ Cypress . Commands . add ( 'createGroup' , { } , ( name => {
87
+ cy . contains ( '#page-sidebar a' , 'Groups' ) . click ( ) ;
88
+
89
+ cy . contains ( 'Create' ) . click ( ) ;
90
+
91
+ cy . contains ( 'div' , 'Name *' ) . findnear ( 'input' ) . first ( ) . type ( name ) ;
92
+
93
+ cy . server ( ) ;
94
+ cy . route ( 'POST' , Cypress . env ( 'prefix' ) + '_ui/v1/groups/' ) . as ( 'createGroup' ) ;
95
+ cy . contains ( '[role=dialog] button' , 'Create' ) . click ( ) ;
96
+ cy . wait ( '@createGroup' ) ;
97
+ } ) ;
98
+
99
+ Cypress . Commands . add ( 'addPermissions' , { } , ( groupName , permissions ) => {
100
+ cy . server ( ) ;
101
+ cy . route ( 'GET' , Cypress . env ( 'prefix' ) + '_ui/v1/groups/*/model-permissions/*' ) . as ( 'groups' ) ;
102
+ cy . contains ( '#page-sidebar a' , 'Groups' ) . click ( ) ;
103
+ cy . get ( `[aria-labelledby=${ groupName } ] a` ) . click ( ) ;
104
+ cy . wait ( '@groups' ) ;
105
+ cy . contains ( 'button' , 'Edit' ) . click ( ) ;
106
+ permissions . forEach ( permissionElement => {
107
+ // closes previously open dropdowns
108
+ cy . get ( 'h1' ) . click ( ) ;
109
+ cy . get ( `.pf-l-flex.pf-m-align-items-center.${ permissionElement . group } [aria-label="Options menu"]` ) . click ( ) ;
110
+ permissionElement . permissions . forEach ( permission => {
111
+ cy . contains ( 'button' , permission ) . click ( ) ;
112
+ } )
113
+ } ) ;
114
+ cy . contains ( 'button' , 'Save' ) . click ( ) ;
115
+ } ) ;
116
+
117
+ Cypress . Commands . add ( 'removePermissions' , { } , ( groupName , permissions ) => {
118
+ cy . contains ( '#page-sidebar a' , 'Groups' ) . click ( ) ;
119
+ cy . get ( `[aria-labelledby=${ groupName } ] a` ) . click ( ) ;
120
+ cy . contains ( 'button' , 'Edit' ) . click ( ) ;
121
+ permissions . forEach ( permissionElement => {
122
+ // closes previously open dropdowns
123
+ cy . get ( 'h1' ) . click ( ) ;
124
+ if ( permissionElement . permissions . length > 3 ) {
125
+ // Make sure all permissions are visible
126
+ cy . containsnear ( `.pf-l-flex.pf-m-align-items-center.${ permissionElement . group } ` , '1 more' ) . first ( ) . click ( ) ;
127
+ }
128
+ permissionElement . permissions . forEach ( permission => {
129
+ cy . containsnear ( `.pf-l-flex.pf-m-align-items-center.${ permissionElement . group } ` , permission ) . findnear ( 'button' ) . first ( ) . click ( ) ;
130
+ } ) ;
131
+ } ) ;
132
+ cy . contains ( 'button' , 'Save' ) . click ( ) ;
133
+ } ) ;
134
+
135
+ const allPerms = [ {
136
+ group : 'namespaces' , permissions : [ 'Add namespace' , 'Change namespace' , 'Upload to namespace' ]
137
+ } , {
138
+ group : 'collections' , permissions : [ 'Modify Ansible repo content' ]
139
+ } , {
140
+ group : 'users' , permissions : [ 'View user' , 'Delete user' , 'Add user' , 'Change user' ]
141
+ } , {
142
+ group : 'groups' , permissions : [ 'View group' , 'Delete group' , 'Add group' , 'Change group' ]
143
+ } , {
144
+ group : 'remotes' , permissions : [ 'Change collection remote' , 'View collection remote' ]
145
+ } ] ;
146
+
147
+ Cypress . Commands . add ( 'removeAllPermissions' , { } , ( groupName ) => {
148
+ cy . removePermissions ( groupName , allPerms ) ;
149
+ } ) ;
150
+
151
+ Cypress . Commands . add ( 'addAllPermissions' , { } , ( groupName ) => {
152
+ cy . addPermissions ( groupName , allPerms ) ;
153
+ } ) ;
154
+
155
+ Cypress . Commands . add ( 'addUserToGroup' , { } , ( groupName , userName ) => {
156
+ cy . contains ( '#page-sidebar a' , 'Groups' ) . click ( ) ;
157
+ cy . get ( `[aria-labelledby=${ groupName } ] a` ) . click ( ) ;
158
+ cy . contains ( 'button' , 'Users' ) . click ( ) ;
159
+ cy . contains ( 'button' , 'Add' ) . click ( ) ;
160
+ cy . get ( 'input.pf-c-select__toggle-typeahead' ) . type ( userName ) ;
161
+ cy . contains ( 'button' , userName ) . click ( ) ;
162
+ // closes previously open dropdown
163
+ cy . get ( '[aria-label="Options menu"]' ) . click ( ) ;
164
+ cy . contains ( 'footer > button' , 'Add' ) . click ( ) ;
165
+ cy . get ( `[aria-labelledby=${ userName } ]` ) . should ( 'exist' ) ;
166
+ } ) ;
167
+
168
+ Cypress . Commands . add ( 'removeUserFromGroup' , { } , ( groupName , userName ) => {
169
+ cy . contains ( '#page-sidebar a' , 'Groups' ) . click ( ) ;
170
+ cy . get ( `[aria-labelledby=${ groupName } ] a` ) . click ( ) ;
171
+ cy . contains ( 'button' , 'Users' ) . click ( ) ;
172
+ cy . get ( `[aria-labelledby=${ userName } ] [aria-label=Actions]` ) . click ( ) ;
173
+ cy . containsnear ( `[aria-labelledby=${ userName } ] [aria-label=Actions]` , 'Remove' ) . click ( ) ;
174
+ cy . contains ( userName ) . should ( 'not.exist' ) ;
81
175
} ) ;
82
176
83
177
Cypress . Commands . add ( 'deleteUser' , { } , ( username ) => {
@@ -88,8 +182,27 @@ Cypress.Commands.add('deleteUser', {}, (username) => {
88
182
cy . login ( adminUsername , adminPassword ) ;
89
183
90
184
cy . contains ( '#page-sidebar a' , 'Users' ) . click ( ) ;
91
-
185
+ cy . server ( ) ;
186
+ cy . route ( 'DELETE' , Cypress . env ( 'prefix' ) + '_ui/v1/users/**' ) . as ( 'deleteUser' ) ;
92
187
cy . get ( `[aria-labelledby=${ username } ] [aria-label=Actions]` ) . click ( ) ;
93
188
cy . containsnear ( `[aria-labelledby=${ username } ] [aria-label=Actions]` , 'Delete' ) . click ( ) ;
94
189
cy . contains ( '[role=dialog] button' , 'Delete' ) . click ( ) ;
190
+ cy . wait ( '@deleteUser' ) ;
191
+ cy . get ( '@deleteUser' ) . should ( 'have.property' , 'status' , 204 ) ;
192
+ } ) ;
193
+
194
+ Cypress . Commands . add ( 'deleteGroup' , { } , ( name ) => {
195
+ var adminUsername = Cypress . env ( 'username' ) ;
196
+ var adminPassword = Cypress . env ( 'password' ) ;
197
+
198
+ cy . logout ( ) ;
199
+ cy . login ( adminUsername , adminPassword ) ;
200
+
201
+ cy . contains ( '#page-sidebar a' , 'Groups' ) . click ( ) ;
202
+ cy . server ( ) ;
203
+ cy . route ( 'DELETE' , Cypress . env ( 'prefix' ) + '_ui/v1/groups/**' ) . as ( 'deleteGroup' ) ;
204
+ cy . get ( `[aria-labelledby=${ name } ] [aria-label=Delete]` ) . click ( ) ;
205
+ cy . contains ( '[role=dialog] button' , 'Delete' ) . click ( ) ;
206
+ cy . wait ( '@deleteGroup' ) ;
207
+ cy . get ( '@deleteGroup' ) . should ( 'have.property' , 'status' , 204 ) ;
95
208
} ) ;
0 commit comments