@@ -251,4 +251,68 @@ mod authorization {
251
251
assert_eq ! ( response. status, 200 ) ;
252
252
}
253
253
}
254
+
255
+ mod for_admin_users {
256
+ use torrust_index:: web:: api;
257
+
258
+ use crate :: common:: client:: Client ;
259
+ use crate :: common:: contexts:: tag:: fixtures:: random_tag_name;
260
+ use crate :: common:: contexts:: tag:: forms:: { AddTagForm , DeleteTagForm } ;
261
+ use crate :: e2e:: environment:: TestEnv ;
262
+ use crate :: e2e:: web:: api:: v1:: contexts:: tag:: steps:: { add_random_tag, add_tag} ;
263
+ use crate :: e2e:: web:: api:: v1:: contexts:: user:: steps:: new_logged_in_admin;
264
+
265
+ #[ tokio:: test]
266
+ async fn it_should_allow_admins_to_add_new_tags ( ) {
267
+ let mut env = TestEnv :: new ( ) ;
268
+ env. start ( api:: Version :: V1 ) . await ;
269
+
270
+ let logged_in_admin = new_logged_in_admin ( & env) . await ;
271
+
272
+ let client = Client :: authenticated ( & env. server_socket_addr ( ) . unwrap ( ) , & logged_in_admin. token ) ;
273
+
274
+ let tag_name = random_tag_name ( ) ;
275
+
276
+ let response = client
277
+ . add_tag ( AddTagForm {
278
+ name : tag_name. to_string ( ) ,
279
+ } )
280
+ . await ;
281
+
282
+ assert_eq ! ( response. status, 200 ) ;
283
+ }
284
+ #[ tokio:: test]
285
+ async fn it_should_allow_admins_to_delete_tags ( ) {
286
+ let mut env = TestEnv :: new ( ) ;
287
+ env. start ( api:: Version :: V1 ) . await ;
288
+
289
+ let logged_in_admin = new_logged_in_admin ( & env) . await ;
290
+
291
+ let client = Client :: authenticated ( & env. server_socket_addr ( ) . unwrap ( ) , & logged_in_admin. token ) ;
292
+
293
+ let ( tag_id, _tag_name) = add_random_tag ( & env) . await ;
294
+
295
+ let response = client. delete_tag ( DeleteTagForm { tag_id } ) . await ;
296
+
297
+ assert_eq ! ( response. status, 200 ) ;
298
+ }
299
+ #[ tokio:: test]
300
+ async fn it_should_allow_admin_users_to_get_tags ( ) {
301
+ let mut env = TestEnv :: new ( ) ;
302
+ env. start ( api:: Version :: V1 ) . await ;
303
+
304
+ let logged_in_admin = new_logged_in_admin ( & env) . await ;
305
+
306
+ let client = Client :: authenticated ( & env. server_socket_addr ( ) . unwrap ( ) , & logged_in_admin. token ) ;
307
+
308
+ // Add a tag
309
+ let tag_name = random_tag_name ( ) ;
310
+ let response = add_tag ( & tag_name, & env) . await ;
311
+ assert_eq ! ( response. status, 200 ) ;
312
+
313
+ let response = client. get_tags ( ) . await ;
314
+
315
+ assert_eq ! ( response. status, 200 ) ;
316
+ }
317
+ }
254
318
}
0 commit comments