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() {}
}