diff --git a/src/components/custom/Compte/CompteSkeleton.vue b/src/components/custom/Compte/CompteSkeleton.vue index 3991244f0..07aca5bd7 100644 --- a/src/components/custom/Compte/CompteSkeleton.vue +++ b/src/components/custom/Compte/CompteSkeleton.vue @@ -28,15 +28,23 @@ diff --git a/src/components/dsfr/Header.vue b/src/components/dsfr/Header.vue index 4c08ab17d..923651827 100644 --- a/src/components/dsfr/Header.vue +++ b/src/components/dsfr/Header.vue @@ -208,6 +208,9 @@ import { RouteAidesName } from '@/router/aides/routeAidesName'; import { RouteThematiquesName } from '@/router/thematiques/routes'; import { ClefThematiqueAPI, MenuThematiques } from '@/domaines/thematiques/MenuThematiques'; + import { DeconnecterUtilisateurUsecase } from '@/domaines/authentification/deconnecterUtilisateur.usecase'; + import { UtilisateurRepositoryAxios } from '@/domaines/authentification/adapters/utilisateur.repository.axios'; + import { SessionRepositoryStore } from '@/domaines/authentification/adapters/session.repository.store'; const route = useRoute(); const store = utilisateurStore(); @@ -218,9 +221,16 @@ () => estConnecte.value && !store.utilisateur.onboardingAEteRealise, ); - const logout = () => { - store.reset(); - router.replace('/'); + const utilisateurId = utilisateurStore().utilisateur.id; + const seDeconnecterUsecase = new DeconnecterUtilisateurUsecase( + new UtilisateurRepositoryAxios(), + new SessionRepositoryStore(), + ); + + const logout = async () => { + await seDeconnecterUsecase.execute(utilisateurId).finally(async () => { + await router.push('/'); + }); }; diff --git a/src/domaines/authentification/adapters/session.repository.store.ts b/src/domaines/authentification/adapters/session.repository.store.ts index 0b1fcbcc2..d11f9a8b9 100644 --- a/src/domaines/authentification/adapters/session.repository.store.ts +++ b/src/domaines/authentification/adapters/session.repository.store.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; import { Score } from '@/domaines/score/ports/score.repository'; import { utilisateurStore } from '@/store/utilisateur'; @@ -15,4 +15,8 @@ export class SessionRepositoryStore implements SessionRepository { sauvegarderScore(score: Score): void { utilisateurStore().setScore(score); } + + deconnecterUtilisateur() { + utilisateurStore().reset(); + } } diff --git a/src/domaines/authentification/adapters/utilisateur.repository.axios.ts b/src/domaines/authentification/adapters/utilisateur.repository.axios.ts index a55fbe0c5..527715df9 100644 --- a/src/domaines/authentification/adapters/utilisateur.repository.axios.ts +++ b/src/domaines/authentification/adapters/utilisateur.repository.axios.ts @@ -122,4 +122,9 @@ export class UtilisateurRepositoryAxios implements UtilisateurRepository { token: response.data.token, }; } + + async deconnecterUtilisateur(idUtilisateur: string): Promise { + const axiosInstance = AxiosFactory.getAxios(); + await axiosInstance.post(`/utilisateurs/${idUtilisateur}/logout`, {}); + } } diff --git a/src/domaines/authentification/authentifierUtilisateur.usecase.ts b/src/domaines/authentification/authentifierUtilisateur.usecase.ts index ac4288ef4..9adcc65f1 100644 --- a/src/domaines/authentification/authentifierUtilisateur.usecase.ts +++ b/src/domaines/authentification/authentifierUtilisateur.usecase.ts @@ -1,11 +1,4 @@ -import { Utilisateur, UtilisateurRepository } from '@/domaines/authentification/ports/utilisateur.repository'; -import { Score } from '@/domaines/score/ports/score.repository'; - -export interface SessionRepository { - sauvegarderUtilisateur(utilisateur: Partial): void; - - sauvegarderScore(score: Score): void; -} +import { UtilisateurRepository } from '@/domaines/authentification/ports/utilisateur.repository'; export class AuthentifierUtilisateurUsecase { constructor(private readonly utilisateurRepository: UtilisateurRepository) {} diff --git a/src/domaines/authentification/authentifierUtilisateurFranceConnect.usecase.ts b/src/domaines/authentification/authentifierUtilisateurFranceConnect.usecase.ts index 30d5fffa1..4bf22974a 100644 --- a/src/domaines/authentification/authentifierUtilisateurFranceConnect.usecase.ts +++ b/src/domaines/authentification/authentifierUtilisateurFranceConnect.usecase.ts @@ -1,6 +1,6 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; import { AuthentificationResultatPresenter } from '@/domaines/authentification/ports/authentificationResultatPresenter'; import { PostOnboardingRepository } from '@/domaines/authentification/ports/postOnboarding.repository'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { UtilisateurRepository } from '@/domaines/authentification/ports/utilisateur.repository'; import { AuthentificationResultat } from '@/domaines/authentification/validerAuthentificationUtilisateur.usecase'; diff --git a/src/domaines/authentification/deconnecterUtilisateur.usecase.ts b/src/domaines/authentification/deconnecterUtilisateur.usecase.ts new file mode 100644 index 000000000..8bbed3bb3 --- /dev/null +++ b/src/domaines/authentification/deconnecterUtilisateur.usecase.ts @@ -0,0 +1,14 @@ +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; +import { UtilisateurRepository } from '@/domaines/authentification/ports/utilisateur.repository'; + +export class DeconnecterUtilisateurUsecase { + constructor( + private utilisateurRepository: UtilisateurRepository, + private sessionRepository: SessionRepository, + ) {} + + async execute(utilisateurId: string): Promise { + await this.utilisateurRepository.deconnecterUtilisateur(utilisateurId); + this.sessionRepository.deconnecterUtilisateur(); + } +} diff --git a/src/domaines/authentification/ports/session.repository.ts b/src/domaines/authentification/ports/session.repository.ts new file mode 100644 index 000000000..3155e0484 --- /dev/null +++ b/src/domaines/authentification/ports/session.repository.ts @@ -0,0 +1,10 @@ +import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; +import { Score } from '@/domaines/score/ports/score.repository'; + +export interface SessionRepository { + sauvegarderUtilisateur(utilisateur: Partial): void; + + sauvegarderScore(score: Score): void; + + deconnecterUtilisateur(): void; +} diff --git a/src/domaines/authentification/ports/utilisateur.repository.ts b/src/domaines/authentification/ports/utilisateur.repository.ts index 48214d95d..2576c14c0 100644 --- a/src/domaines/authentification/ports/utilisateur.repository.ts +++ b/src/domaines/authentification/ports/utilisateur.repository.ts @@ -32,4 +32,6 @@ export interface UtilisateurRepository { terminerRedefinirMotDePasse(email: string, motDePasse: string, code: string): Promise; seConnecterAvecFranceConnect(oidcCode: string, oidcState: string): Promise; + + deconnecterUtilisateur(idUtilisateur: string): Promise; } diff --git a/src/domaines/authentification/validerAuthentificationUtilisateur.usecase.ts b/src/domaines/authentification/validerAuthentificationUtilisateur.usecase.ts index 203c2cbb7..2aaea01c2 100644 --- a/src/domaines/authentification/validerAuthentificationUtilisateur.usecase.ts +++ b/src/domaines/authentification/validerAuthentificationUtilisateur.usecase.ts @@ -1,5 +1,5 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; import { AuthentificationResultatPresenter } from '@/domaines/authentification/ports/authentificationResultatPresenter'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { UtilisateurRepository } from '@/domaines/authentification/ports/utilisateur.repository'; export enum AuthentificationResultat { diff --git a/src/domaines/authentification/validerCompteUtilisateur.usecase.ts b/src/domaines/authentification/validerCompteUtilisateur.usecase.ts index 22e69f387..c74904471 100644 --- a/src/domaines/authentification/validerCompteUtilisateur.usecase.ts +++ b/src/domaines/authentification/validerCompteUtilisateur.usecase.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { UtilisateurRepository } from '@/domaines/authentification/ports/utilisateur.repository'; export class ValiderCompteUtilisateurUsecase { diff --git a/src/domaines/compte/chargerCompteUtilisateur.usecase.ts b/src/domaines/compte/chargerCompteUtilisateur.usecase.ts index 2765a102d..a993000d5 100644 --- a/src/domaines/compte/chargerCompteUtilisateur.usecase.ts +++ b/src/domaines/compte/chargerCompteUtilisateur.usecase.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { CompteUtilisateurPresenter } from '@/domaines/compte/ports/compteUtilisateur.presenter'; import { CompteUtilisateurRepository } from '@/domaines/compte/ports/compteUtilisateur.repository'; diff --git a/src/domaines/compte/creerCompteUtilisateur.usecase.ts b/src/domaines/compte/creerCompteUtilisateur.usecase.ts index 55d5ec594..ac5b97280 100644 --- a/src/domaines/compte/creerCompteUtilisateur.usecase.ts +++ b/src/domaines/compte/creerCompteUtilisateur.usecase.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { CompteUtilisateurRepository } from '@/domaines/compte/ports/compteUtilisateur.repository'; import { CreerComptePresenter } from '@/domaines/compte/ports/creerComptePresenter'; diff --git a/src/domaines/compte/validerOnboardingPostCreationCompte.usecase.ts b/src/domaines/compte/validerOnboardingPostCreationCompte.usecase.ts index a584a6c6c..2226f88e6 100644 --- a/src/domaines/compte/validerOnboardingPostCreationCompte.usecase.ts +++ b/src/domaines/compte/validerOnboardingPostCreationCompte.usecase.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { CompteUtilisateurRepository } from '@/domaines/compte/ports/compteUtilisateur.repository'; import { OnboardingPostCreationCompteState } from '@/store/onboardingPostCreationCompte'; diff --git a/src/domaines/profileUtilisateur/mettreAJourProfileUtilisateurUsecase.ts b/src/domaines/profileUtilisateur/mettreAJourProfileUtilisateurUsecase.ts index 6c811adf7..8a300796a 100644 --- a/src/domaines/profileUtilisateur/mettreAJourProfileUtilisateurUsecase.ts +++ b/src/domaines/profileUtilisateur/mettreAJourProfileUtilisateurUsecase.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { ProfileUtilisateurViewModel } from '@/domaines/profileUtilisateur/adapters/profileUtilisateur.presenter.impl'; import { ProfileUtilisateurRepository } from '@/domaines/profileUtilisateur/ports/profileUtilisateur.repository'; diff --git a/src/domaines/score/chargementScore.usecase.ts b/src/domaines/score/chargementScore.usecase.ts index ec699eff1..bdc0570b5 100644 --- a/src/domaines/score/chargementScore.usecase.ts +++ b/src/domaines/score/chargementScore.usecase.ts @@ -1,4 +1,4 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; import { ScoreRepository } from '@/domaines/score/ports/score.repository'; export class ChargementScoreUsecase { diff --git a/tests/authentification/adapters/mockUtilisateurRepository.ts b/tests/authentification/adapters/utilisateur.repository.mock.ts similarity index 90% rename from tests/authentification/adapters/mockUtilisateurRepository.ts rename to tests/authentification/adapters/utilisateur.repository.mock.ts index 5188f2617..d925db2a0 100644 --- a/tests/authentification/adapters/mockUtilisateurRepository.ts +++ b/tests/authentification/adapters/utilisateur.repository.mock.ts @@ -4,7 +4,7 @@ import { UtilisateurRepository, } from '@/domaines/authentification/ports/utilisateur.repository'; -export class MockUtilisateurRepository implements UtilisateurRepository { +export class UtilisateurRepositoryMock implements UtilisateurRepository { authentifierUtilisateur(email: string, motDePasse: string): Promise { throw Error; } @@ -62,4 +62,8 @@ export class MockUtilisateurRepository implements UtilisateurRepository { token: 'token', }); } + + deconnecterUtilisateur(idUtilisateur: string): Promise { + return Promise.resolve(); + } } diff --git a/tests/authentification/adapters/spyUtilisateurRepository.ts b/tests/authentification/adapters/utilisateur.repository.spy.ts similarity index 79% rename from tests/authentification/adapters/spyUtilisateurRepository.ts rename to tests/authentification/adapters/utilisateur.repository.spy.ts index b8a8abc95..3bee2c7bc 100644 --- a/tests/authentification/adapters/spyUtilisateurRepository.ts +++ b/tests/authentification/adapters/utilisateur.repository.spy.ts @@ -4,7 +4,7 @@ import { UtilisateurRepository, } from '@/domaines/authentification/ports/utilisateur.repository'; -export class SpyUtilisateurRepository implements UtilisateurRepository { +export class UtilisateurRepositorySpy implements UtilisateurRepository { constructor() {} private _authentifierUtilisateurArgs: { motDePasse: string; nomUtilisateur: string } | null = null; @@ -13,6 +13,12 @@ export class SpyUtilisateurRepository implements UtilisateurRepository { return this._authentifierUtilisateurArgs; } + private _utilisateurAEteDeco: boolean = false; + + get utilisateurAEteDeco(): boolean { + return this._utilisateurAEteDeco; + } + authentifierUtilisateur(nomUtilisateur: string, motDePasse: string): Promise { this._authentifierUtilisateurArgs = { nomUtilisateur, motDePasse }; return Promise.resolve(); @@ -45,4 +51,9 @@ export class SpyUtilisateurRepository implements UtilisateurRepository { seConnecterAvecFranceConnect(oidcCode: string, oidcState: string): Promise { throw Error; } + + deconnecterUtilisateur(idUtilisateur: string): Promise { + this._utilisateurAEteDeco = true; + return Promise.resolve(); + } } diff --git a/tests/authentification/adapters/utilisateurRepositoryForTest.ts b/tests/authentification/adapters/utilisateurRepositoryForTest.ts index 8fd3d3897..5f300ccca 100644 --- a/tests/authentification/adapters/utilisateurRepositoryForTest.ts +++ b/tests/authentification/adapters/utilisateurRepositoryForTest.ts @@ -67,4 +67,8 @@ export class UtilisateurRepositoryForTest implements UtilisateurRepository { afficherDisclaimerAides: false, }); } + + deconnecterUtilisateur(idUtilisateur: string): Promise { + throw Error; + } } diff --git a/tests/authentification/authentifierUtilisateur.usecase.spec.ts b/tests/authentification/authentifierUtilisateur.usecase.spec.ts index e87c60d86..1b4a3d565 100644 --- a/tests/authentification/authentifierUtilisateur.usecase.spec.ts +++ b/tests/authentification/authentifierUtilisateur.usecase.spec.ts @@ -1,10 +1,10 @@ import { AuthentifierUtilisateurUsecase } from '@/domaines/authentification/authentifierUtilisateur.usecase'; -import { SpyUtilisateurRepository } from './adapters/spyUtilisateurRepository'; +import { UtilisateurRepositorySpy } from './adapters/utilisateur.repository.spy'; describe("Fichier de tests concernant l'authentification ", () => { it("Lorsque je passe un email et un mot de passe doit lancer le processus d'authentification", async () => { // GIVEN - const spyUtilisateurRepository = new SpyUtilisateurRepository(); + const spyUtilisateurRepository = new UtilisateurRepositorySpy(); const usecase = new AuthentifierUtilisateurUsecase(spyUtilisateurRepository); // WHEN await usecase.execute('john.doe@example.com', '123'); diff --git a/tests/authentification/authentifierUtilisateurFranceConnect.usecase.spec.ts b/tests/authentification/authentifierUtilisateurFranceConnect.usecase.spec.ts index 82fd3e003..ee468bfe9 100644 --- a/tests/authentification/authentifierUtilisateurFranceConnect.usecase.spec.ts +++ b/tests/authentification/authentifierUtilisateurFranceConnect.usecase.spec.ts @@ -1,5 +1,4 @@ import { SpySauvegarderUtilisateurSessionRepository } from '../compte/sessionRepository.sauvegarderUtilisateur.spy'; -import { MockUtilisateurRepository } from './adapters/mockUtilisateurRepository'; import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; import { AuthentifierUtilisateurFranceConnectUsecase } from '@/domaines/authentification/authentifierUtilisateurFranceConnect.usecase'; import { AuthentificationResultatPresenterImpl } from '@/domaines/authentification/adapters/authentificationResultatPresenterImpl'; @@ -7,6 +6,7 @@ import { UtilisateurRepositoryForTest } from './adapters/utilisateurRepositoryFo import { RouteComptePath } from '@/router/compte/routes'; import { RouteCoachPath } from '@/router/coach/routes'; import { PostOnboardingRepositorySpy } from './adapters/postOnboarding.repository.spy'; +import { UtilisateurRepositoryMock } from './adapters/utilisateur.repository.mock'; describe("Fichier de tests concernant l'authentification France Connect", () => { it("En donnant un state et un code doit valider l'authentification puis le sauvegarder en session", async () => { @@ -15,7 +15,7 @@ describe("Fichier de tests concernant l'authentification France Connect", () => const spySessionRepository = SpySauvegarderUtilisateurSessionRepository.sansOnBoardingRealise(); const spyPostOnboardingRepositorySpy = new PostOnboardingRepositorySpy(); const usecase = new AuthentifierUtilisateurFranceConnectUsecase( - new MockUtilisateurRepository(), + new UtilisateurRepositoryMock(), spySessionRepository, spyPostOnboardingRepositorySpy, ); diff --git a/tests/authentification/commencerRedefinirMotDePasse.usecase.spec.ts b/tests/authentification/commencerRedefinirMotDePasse.usecase.spec.ts index 448d30a6c..dc543554e 100644 --- a/tests/authentification/commencerRedefinirMotDePasse.usecase.spec.ts +++ b/tests/authentification/commencerRedefinirMotDePasse.usecase.spec.ts @@ -43,6 +43,10 @@ class SpyUtilisateurRepository implements UtilisateurRepository { seConnecterAvecFranceConnect(oidcCode: string, oidcState: string): Promise { throw Error; } + + deconnecterUtilisateur(idUtilisateur: string): Promise { + throw Error('not implemented yet'); + } } describe('Fichier de tests concernant la réinitialisation du mot de passe', () => { diff --git a/tests/authentification/deconnecterUtilisateur.usecase.spec.ts b/tests/authentification/deconnecterUtilisateur.usecase.spec.ts new file mode 100644 index 000000000..739056274 --- /dev/null +++ b/tests/authentification/deconnecterUtilisateur.usecase.spec.ts @@ -0,0 +1,32 @@ +import { DeconnecterUtilisateurUsecase } from '@/domaines/authentification/deconnecterUtilisateur.usecase'; +import { UtilisateurRepositorySpy } from './adapters/utilisateur.repository.spy'; +import { SpySauvegarderUtilisateurSessionRepository } from '../compte/sessionRepository.sauvegarderUtilisateur.spy'; +import { expect } from 'vitest'; + +describe("Fichier de tests concernant la déconnexion d'un compte utilisateur", () => { + it("L'utilisateur est déconnecté du service et sa session est terminée", async () => { + // GIVEN + const utilisateurRepository = new UtilisateurRepositorySpy(); + const sessionRepository = SpySauvegarderUtilisateurSessionRepository.avecOnBoardingRealise({ + id: 'id', + mail: 'mail', + prenom: 'prenom', + nom: 'nom', + }); + + // WHEN + const usecase = new DeconnecterUtilisateurUsecase(utilisateurRepository, sessionRepository); + await usecase.execute('utilisateurId'); + + // THEN + expect(sessionRepository.utilisateur).toStrictEqual({ + id: '', + mail: '', + prenom: '', + nom: '', + onboardingAEteRealise: false, + afficherDisclaimerAides: false, + }); + expect(utilisateurRepository.utilisateurAEteDeco).toBeTruthy(); + }); +}); diff --git a/tests/authentification/renvoyerCodeOTP.usecase.spec.ts b/tests/authentification/renvoyerCodeOTP.usecase.spec.ts index 0df0baa43..5a9f93614 100644 --- a/tests/authentification/renvoyerCodeOTP.usecase.spec.ts +++ b/tests/authentification/renvoyerCodeOTP.usecase.spec.ts @@ -44,6 +44,10 @@ class SpyUtilisateurRepository implements UtilisateurRepository { seConnecterAvecFranceConnect(oidcCode: string, oidcState: string): Promise { throw Error; } + + deconnecterUtilisateur(idUtilisateur: string): Promise { + throw Error('not implemented yet'); + } } describe('Fichier de tests concernant le renvoie du code OTP', () => { diff --git a/tests/authentification/terminerRedefinirMotDePasse.usecase.spec.ts b/tests/authentification/terminerRedefinirMotDePasse.usecase.spec.ts index fdf2a76ea..ae1a93b37 100644 --- a/tests/authentification/terminerRedefinirMotDePasse.usecase.spec.ts +++ b/tests/authentification/terminerRedefinirMotDePasse.usecase.spec.ts @@ -56,6 +56,9 @@ class SpyUtilisateurRepository implements UtilisateurRepository { seConnecterAvecFranceConnect(oidcCode: string, oidcState: string): Promise { throw Error; } + deconnecterUtilisateur(idUtilisateur: string): Promise { + throw Error; + } } describe('Fichier de tests concernant la fin de la réinitialisation du mot de passe', () => { diff --git a/tests/authentification/validerAuthentificationUtilisateur.usecase.spec.ts b/tests/authentification/validerAuthentificationUtilisateur.usecase.spec.ts index 084c4062d..2c989f188 100644 --- a/tests/authentification/validerAuthentificationUtilisateur.usecase.spec.ts +++ b/tests/authentification/validerAuthentificationUtilisateur.usecase.spec.ts @@ -1,6 +1,6 @@ import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; import { SpySauvegarderUtilisateurSessionRepository } from '../compte/sessionRepository.sauvegarderUtilisateur.spy'; -import { MockUtilisateurRepository } from './adapters/mockUtilisateurRepository'; +import { UtilisateurRepositoryMock } from './adapters/utilisateur.repository.mock'; import { AuthentificationResultatPresenterImpl } from '@/domaines/authentification/adapters/authentificationResultatPresenterImpl'; import { ValiderAuthentificationUtilisateurUsecase } from '@/domaines/authentification/validerAuthentificationUtilisateur.usecase'; import { RouteComptePath } from '@/router/compte/routes'; @@ -13,14 +13,10 @@ describe("Fichier de tests concernant la validation de l'authentification de l'u // WHEN const spySessionRepository = SpySauvegarderUtilisateurSessionRepository.sansOnBoardingRealise(); const usecase = new ValiderAuthentificationUtilisateurUsecase( - new MockUtilisateurRepository(), + new UtilisateurRepositoryMock(), spySessionRepository, ); - await usecase.execute( - 'john@exemple.com', - '123456', - new AuthentificationResultatPresenterImpl((viewModel: string) => {}), - ); + await usecase.execute('john@exemple.com', '123456', new AuthentificationResultatPresenterImpl(() => {})); // THEN expect(spySessionRepository.utilisateur).toStrictEqual({ diff --git a/tests/authentification/validerCompteUtilisateur.usecase.spec.ts b/tests/authentification/validerCompteUtilisateur.usecase.spec.ts index b93b7da9b..4efda1279 100644 --- a/tests/authentification/validerCompteUtilisateur.usecase.spec.ts +++ b/tests/authentification/validerCompteUtilisateur.usecase.spec.ts @@ -1,14 +1,14 @@ import { ValiderCompteUtilisateurUsecase } from '@/domaines/authentification/validerCompteUtilisateur.usecase'; import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; import { SpySauvegarderUtilisateurSessionRepository } from '../compte/sessionRepository.sauvegarderUtilisateur.spy'; -import { MockUtilisateurRepository } from './adapters/mockUtilisateurRepository'; +import { UtilisateurRepositoryMock } from './adapters/utilisateur.repository.mock'; describe('Fichier de tests concernant la validation du compte utilisateur', () => { it('En donnant un mail et un code doit valider le compte puis le sauvegarder en session', async () => { // GIVEN // WHEN const spySessionRepository = SpySauvegarderUtilisateurSessionRepository.sansOnBoardingRealise(); - const usecase = new ValiderCompteUtilisateurUsecase(new MockUtilisateurRepository(), spySessionRepository); + const usecase = new ValiderCompteUtilisateurUsecase(new UtilisateurRepositoryMock(), spySessionRepository); await usecase.execute('john@exemple.com', '123456'); // THEN expect(spySessionRepository.utilisateur).toStrictEqual({ diff --git a/tests/compte/sessionRepository.sauvegarderUtilisateur.spy.ts b/tests/compte/sessionRepository.sauvegarderUtilisateur.spy.ts index 00b2d27de..1943cf524 100644 --- a/tests/compte/sessionRepository.sauvegarderUtilisateur.spy.ts +++ b/tests/compte/sessionRepository.sauvegarderUtilisateur.spy.ts @@ -1,6 +1,6 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; import { Score } from '@/domaines/score/ports/score.repository'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; export class SpySauvegarderUtilisateurSessionRepository implements SessionRepository { private _utilisateur: Utilisateur = { @@ -36,4 +36,15 @@ export class SpySauvegarderUtilisateurSessionRepository implements SessionReposi } sauvegarderScore(score: Score): void {} + + deconnecterUtilisateur() { + this._utilisateur = { + id: '', + mail: '', + prenom: '', + nom: '', + onboardingAEteRealise: false, + afficherDisclaimerAides: false, + }; + } } diff --git a/tests/score/adapters/sauvergarderScore.session.repository.spy.ts b/tests/score/adapters/sauvergarderScore.session.repository.spy.ts index 68f165a51..b5dc114f4 100644 --- a/tests/score/adapters/sauvergarderScore.session.repository.spy.ts +++ b/tests/score/adapters/sauvergarderScore.session.repository.spy.ts @@ -1,6 +1,6 @@ -import { SessionRepository } from '@/domaines/authentification/authentifierUtilisateur.usecase'; import { Score } from '@/domaines/score/ports/score.repository'; import { Utilisateur } from '@/domaines/authentification/ports/utilisateur.repository'; +import { SessionRepository } from '@/domaines/authentification/ports/session.repository'; export class SauvergarderScoreSessionRepositorySpy implements SessionRepository { private _score: Score | null = null; @@ -14,4 +14,6 @@ export class SauvergarderScoreSessionRepositorySpy implements SessionRepository } sauvegarderUtilisateur(utilisateur: Partial): void {} + + deconnecterUtilisateur() {} }