@@ -9,17 +9,17 @@ mod test_helpers;
9
9
10
10
use crate :: database:: {
11
11
create_ticket, create_user, delete_ticket, edit_ticket, filter_tickets_in_database,
12
- get_all_tickets, get_single_ticket, get_user_by_email, remove_session_from_db,
12
+ get_all_tickets, get_all_users , get_single_ticket, get_user_by_email, remove_session_from_db,
13
13
write_session_to_db, DataBase ,
14
14
} ;
15
15
use crate :: middleware:: validator;
16
16
use crate :: models:: { NewSession , NewUser , Ticket , TokenClaims } ;
17
17
use crate :: payloads:: { FilterPayload , LoginPayload , TicketPayload } ;
18
18
use crate :: status_messages:: {
19
19
CANNOT_LOGOUT , ERROR_COULD_NOT_CREATE_TICKET , ERROR_COULD_NOT_CREATE_USER ,
20
- ERROR_COULD_NOT_DELETE , ERROR_COULD_NOT_GET , ERROR_COULD_NOT_UPDATE , ERROR_INCORRECT_PASSWORD ,
21
- ERROR_INVALID_ID , ERROR_NOT_FOUND , ERROR_NOT_LOGGED_IN , ERROR_NO_USER_FOUND ,
22
- ERROR_USER_ALREADY_EXISTS , SUCCESS_LOGOUT ,
20
+ ERROR_COULD_NOT_DELETE , ERROR_COULD_NOT_GET , ERROR_COULD_NOT_RETRIEVE_USERS ,
21
+ ERROR_COULD_NOT_UPDATE , ERROR_INCORRECT_PASSWORD , ERROR_INVALID_ID , ERROR_NOT_FOUND ,
22
+ ERROR_NOT_LOGGED_IN , ERROR_NO_USER_FOUND , ERROR_USER_ALREADY_EXISTS , SUCCESS_LOGOUT ,
23
23
} ;
24
24
use actix_cors:: Cors ;
25
25
use actix_web:: cookie:: time:: { Duration , OffsetDateTime } ;
@@ -54,7 +54,8 @@ async fn main() -> Result<()> {
54
54
. service ( delete)
55
55
. service ( edit)
56
56
. service ( filter_tickets)
57
- . service ( logout) ,
57
+ . service ( logout)
58
+ . service ( get_users) ,
58
59
) ,
59
60
)
60
61
} )
@@ -258,6 +259,16 @@ async fn login(payload: Json<LoginPayload>) -> impl Responder {
258
259
}
259
260
}
260
261
262
+ #[ get( "/users" ) ]
263
+ async fn get_users ( ) -> impl Responder {
264
+ let mut database = DataBase :: new ( ) ;
265
+
266
+ match get_all_users ( & mut database. connection ) {
267
+ Ok ( all_users) => HttpResponse :: Ok ( ) . json ( all_users) ,
268
+ Err ( _) => HttpResponse :: InternalServerError ( ) . json ( ERROR_COULD_NOT_RETRIEVE_USERS ) ,
269
+ }
270
+ }
271
+
261
272
/*
262
273
* To fully understand the tests and the test data,
263
274
* have a look at the setup_database function in test_helpers.rs.
@@ -754,6 +765,30 @@ mod tests {
754
765
}
755
766
}
756
767
768
+ mod test_get_users {
769
+ use actix_web:: {
770
+ test:: { self , TestRequest } ,
771
+ App ,
772
+ } ;
773
+ use serial_test:: serial;
774
+
775
+ use crate :: { get_users, models:: DisplayUser , test_helpers:: helpers:: setup_database} ;
776
+
777
+ #[ actix_web:: test]
778
+ #[ serial]
779
+ async fn test_get_all_users ( ) {
780
+ setup_database ( ) ;
781
+
782
+ let app = test:: init_service ( App :: new ( ) . service ( get_users) ) . await ;
783
+ let req = TestRequest :: get ( ) . uri ( "/users" ) . to_request ( ) ;
784
+
785
+ let response: Vec < DisplayUser > = test:: call_and_read_body_json ( & app, req) . await ;
786
+
787
+ assert_eq ! ( response[ 0 ] . email, "test@example.com" ) ;
788
+ assert_eq ! ( response[ 0 ] . display_name, "user" ) ;
789
+ }
790
+ }
791
+
757
792
mod test_logout {
758
793
use crate :: database:: DataBase ;
759
794
use crate :: logout;
0 commit comments