@@ -450,4 +450,65 @@ public function testLengthSessionIDSessionException(): void
450450 $ database = new Database ();
451451 $ database ->setLengthSessionID (1 );
452452 }
453- }
453+
454+ /**
455+ * @throws DatabaseException
456+ * @throws SessionException
457+ */
458+ public function testDeleteUserSessions (): void
459+ {
460+ $ database = new Database ();
461+ $ database ->setCurrentDatabase (static ::$ db );
462+
463+ $ data = 'azerty ' ;
464+
465+ $ database ->setUserId (10 );
466+
467+ static ::assertTrue ($ database ->write ('session_id_10 ' , $ data ));
468+ static ::assertTrue ($ database ->write ('session_id_20 ' , $ data ));
469+ static ::assertTrue ($ database ->write ('session_id_30 ' , $ data ));
470+
471+ $ database ->setUserId (20 );
472+
473+ static ::assertTrue ($ database ->write ('session_id_40 ' , $ data ));
474+ static ::assertTrue ($ database ->write ('session_id_50 ' , $ data ));
475+ static ::assertTrue ($ database ->write ('session_id_60 ' , $ data ));
476+
477+ $ sql = 'SELECT id FROM sessions WHERE id_user = :id_user ' ;
478+ $ params = ['id_user ' => 10 ];
479+ $ sessionsFromDatabase = static ::$ db ->selectCol ($ sql , $ params );
480+ static ::assertSame (['session_id_10 ' , 'session_id_20 ' , 'session_id_30 ' ], $ sessionsFromDatabase );
481+
482+ $ sql = 'SELECT id FROM sessions WHERE id_user = :id_user ' ;
483+ $ params = ['id_user ' => 20 ];
484+ $ sessionsFromDatabase = static ::$ db ->selectCol ($ sql , $ params );
485+ static ::assertSame (['session_id_40 ' , 'session_id_50 ' , 'session_id_60 ' ], $ sessionsFromDatabase );
486+
487+ $ database ->deleteUserSessions (10 );
488+
489+ $ sql = 'SELECT id FROM sessions ' ;
490+ $ sessionsFromDatabase = static ::$ db ->selectCol ($ sql );
491+ static ::assertSame (['session_id_40 ' , 'session_id_50 ' , 'session_id_60 ' ], $ sessionsFromDatabase );
492+ }
493+
494+ /**
495+ * @throws DatabaseException
496+ * @throws SessionException
497+ */
498+ public function testDeleteUserSessionsSessionException (): void
499+ {
500+ $ this ->expectException (SessionException::class);
501+ $ this ->expectExceptionMessage ('could not delete sessions: Error Connecting Database ' );
502+
503+ $ database = new Database ();
504+ $ database ->setNewDatabase ([
505+ 'driver ' => 'mysql ' ,
506+ 'host ' => 'mariadb ' ,
507+ 'user ' => 'invalid ' ,
508+ 'password ' => '' ,
509+ 'database ' => 'test_database '
510+ ]);
511+
512+ $ database ->deleteUserSessions (1 );
513+ }
514+ }
0 commit comments