@@ -660,3 +660,93 @@ pub fn routes() -> Vec<Route> {
660660pub async fn migrate ( pool : & PgPool ) -> anyhow:: Result < ( ) > {
661661Ok ( sqlx:: migrate!( "./migrations" ) . run ( pool) . await ?)
662662}
663+
664+ #[ cfg( test) ]
665+ mod test_current_user{
666+ use crate :: CurrentUser ;
667+ use crate :: models:: User ;
668+ use std:: collections:: HashMap ;
669+
670+ // New current user should set user and visible clusters to none.
671+ #[ test]
672+ fn test_new_current_user ( ) {
673+ let test_user =CurrentUser :: new ( ) ;
674+ assert ! ( test_user. get_user( ) . is_none( ) && test_user. get_visible_clusters( ) . is_none( ) ) ;
675+ }
676+
677+ // It should be possible to set and get current user.
678+ #[ test]
679+ fn test_set_get_current_user ( ) {
680+ let test_user =CurrentUser :: new ( ) ;
681+ let new_user_data =User {
682+ id : 1 ,
683+ email : "test@email.com" . to_string ( ) ,
684+ } ;
685+
686+ test_user. set_user ( new_user_data. clone ( ) ) ;
687+ assert_eq ! (
688+ (
689+ test_user. get_user( ) . unwrap( ) . id,
690+ test_user. get_user( ) . unwrap( ) . email,
691+ ) , (
692+ new_user_data. id,
693+ new_user_data. email,
694+ ) ) ;
695+ }
696+
697+ // It should be possible to set and get visible clusters.
698+ #[ test]
699+ fn test_set_get_visible_clusters ( ) {
700+ let test_user =CurrentUser :: new ( ) ;
701+ let new_visible_clusters: HashMap < String , String > =HashMap :: from ( [
702+ ( "1" . to_string ( ) , "123456789" . to_string ( ) ) ,
703+ ( "2" . to_string ( ) , "987654321" . to_string ( ) ) ,
704+ ] ) ;
705+ test_user. set_visible_clusters ( new_visible_clusters. clone ( ) ) ;
706+ assert_eq ! (
707+ (
708+ test_user. get_visible_clusters( ) . unwrap( ) . get( "1" ) ,
709+ test_user. get_visible_clusters( ) . unwrap( ) . get( "2" ) ,
710+ ) , (
711+ new_visible_clusters. get( "1" ) ,
712+ new_visible_clusters. get( "2" )
713+ )
714+ )
715+ }
716+
717+ // It should reset current user and visible clusters to none.
718+ #[ test]
719+ fn test_reset_user_to_default ( ) {
720+ let test_user =CurrentUser :: new ( ) ;
721+ let new_user_data =User {
722+ id : 1 ,
723+ email : "test@email.com" . to_string ( ) ,
724+ } ;
725+ let new_visible_clusters: HashMap < String , String > =HashMap :: from ( [ ( "1" . to_string ( ) , "123456789" . to_string ( ) ) ] ) ;
726+ test_user. set_user ( new_user_data) ;
727+ test_user. set_visible_clusters ( new_visible_clusters) ;
728+ test_user. set_to_default ( ) ;
729+ assert ! ( test_user. get_user( ) . is_none( ) && test_user. get_visible_clusters( ) . is_none( ) )
730+
731+ }
732+ }
733+
734+ #[ cfg( test) ]
735+ mod test_clusters{
736+ use crate :: Clusters ;
737+
738+ // It should initiate with context and pool being empty hashmaps.
739+ #[ test]
740+ fn test_new_clusters ( ) {
741+ let test_clusters =Clusters :: new ( ) ;
742+ assert_eq ! (
743+ (
744+ test_clusters. pools. lock( ) . len( ) ,
745+ test_clusters. contexts. lock( ) . len( ) ,
746+ ) , (
747+ 0 ,
748+ 0 ,
749+ ) ) ;
750+ }
751+
752+ }