diff --git a/TP3/src/main/java/automaticmocking/AuthenticationByBiometryService.java b/TP3/src/main/java/automaticmocking/AuthenticationByBiometryService.java
new file mode 100644
index 0000000000000000000000000000000000000000..39b90393c1b95a16198d7cf6c1228af3e49f8b3f
--- /dev/null
+++ b/TP3/src/main/java/automaticmocking/AuthenticationByBiometryService.java
@@ -0,0 +1,30 @@
+package automaticmocking;
+
+import authentication.AuthenticationService;
+import authentication.Strength;
+import interfacemanualmocking.DirectoryInterface;
+
+public class AuthenticationByBiometryService  implements AuthenticationService {
+    private interfacemanualmocking.DirectoryInterface directory;
+    private Strength strength;
+
+    public AuthenticationByBiometryService(interfacemanualmocking.DirectoryInterface directory, Strength strength) {
+        this.directory = directory;
+        this.strength = strength;
+    }
+
+    public void setDirectory(DirectoryInterface directory) {
+        this.directory = directory;
+    }
+
+    @Override
+    public boolean isAMatch(String identifier, String autenthicationData) {
+        String match = directory.getMatch(identifier);
+        return match.equals(autenthicationData);
+    }
+
+    @Override
+    public Strength dataStrenth(String autenthicationData) {
+        return Strength.STRONG;
+    }
+}
diff --git a/TP3/src/main/java/automaticmocking/AuthenticationByPasswordService.java b/TP3/src/main/java/automaticmocking/AuthenticationByPasswordService.java
new file mode 100644
index 0000000000000000000000000000000000000000..a87a7e1dc1582009d536af4ea6b97e56450501a4
--- /dev/null
+++ b/TP3/src/main/java/automaticmocking/AuthenticationByPasswordService.java
@@ -0,0 +1,65 @@
+package automaticmocking;
+
+import authentication.AuthenticationService;
+import authentication.Strength;
+import interfacemanualmocking.DirectoryInterface;
+import interfacemanualmocking.StrengthEstimationServiceInterface;
+
+public class AuthenticationByPasswordService implements AuthenticationService {
+    private interfacemanualmocking.DirectoryInterface directory;
+
+
+
+    private interfacemanualmocking.StrengthEstimationServiceInterface strengthEstimationService;
+
+    public void setStrengthEstimationService(interfacemanualmocking.StrengthEstimationServiceInterface strengthEstimationService) {
+        this.strengthEstimationService = strengthEstimationService;
+    }
+
+    public AuthenticationByPasswordService(interfacemanualmocking.DirectoryInterface directory, StrengthEstimationServiceInterface strengthEstimationService) {
+        this.directory = directory;
+        this.strengthEstimationService = strengthEstimationService;
+    }
+
+
+    @Override
+    public boolean isAMatch(String identifier, String autenthicationData) {
+        String match = directory.getMatch(identifier);
+        return match.equals(autenthicationData);
+    }
+
+    @Override
+    public Strength dataStrenth(String autenthicationData) {
+        int datasize = autenthicationData.length();
+        int alphabetSize = 142;
+        int strength = strengthEstimationService.equivalentBitLength(alphabetSize,datasize);
+
+        Strength result = null ;
+        if( strength >= 0 && strength <= 49 ) {
+            result = Strength.VERY_WEAK;
+        }
+        else if ( strength >= 50 && strength <= 79 ) {
+            result = Strength.WEAK;
+        }
+        else if ( strength >= 80 && strength <= 99 ) {
+            result = Strength.REGULAR;
+        }
+        else if ( strength >= 100 ) {
+            result = Strength.STRONG;
+        }
+        return result;
+    }
+    public void setDirectory(DirectoryInterface directory) {
+        this.directory = directory;
+    }
+
+
+}
+
+
+    //private StrengthEstimationServiceInterface dataStrenth(String autenthicationData) {
+     //   int alphabetSize = 0;
+       // int datasize = autenthicationData.length();
+        //return strengthEstimationService.equivalentBitLength(alphabetSize, datasize);
+    //}
+
diff --git a/TP3/src/main/java/automaticmocking/AuthenticationService.java b/TP3/src/main/java/automaticmocking/AuthenticationService.java
new file mode 100644
index 0000000000000000000000000000000000000000..96730a44d4fc4bc1238bab94eecc016f33127925
--- /dev/null
+++ b/TP3/src/main/java/automaticmocking/AuthenticationService.java
@@ -0,0 +1,8 @@
+package automaticmocking;
+
+import authentication.Strength;
+
+public interface AuthenticationService {
+    boolean isAMatch(String identifier, String autenthicationData);
+    Strength dataStrenth(String autenthicationData);
+}
diff --git a/TP3/src/main/java/automaticmocking/DirectoryInterface.java b/TP3/src/main/java/automaticmocking/DirectoryInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad05fc1aa9386191068eeef7f8e302c17ab78463
--- /dev/null
+++ b/TP3/src/main/java/automaticmocking/DirectoryInterface.java
@@ -0,0 +1,5 @@
+package automaticmocking;
+
+public interface DirectoryInterface {
+    String getMatch(String identifier);
+}
diff --git a/TP3/src/main/java/automaticmocking/StrengthEstimationServiceInterface.java b/TP3/src/main/java/automaticmocking/StrengthEstimationServiceInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c3c514cf81a018b3fd6d66df2261a99991159a6
--- /dev/null
+++ b/TP3/src/main/java/automaticmocking/StrengthEstimationServiceInterface.java
@@ -0,0 +1,5 @@
+package automaticmocking;
+
+public interface StrengthEstimationServiceInterface {
+    int equivalentBitLength(int alphabetSize, int datasize);
+}
diff --git a/TP3/src/test/java/AuthenticationByBiometryServiceTest.java b/TP3/src/test/java/AuthenticationByBiometryServiceTest.java
index e3d80c286d4b329bbb2935f6a9a7c458bda7a79f..0f3c585e1aa9324d0e1775d12f16659d97818a7b 100644
--- a/TP3/src/test/java/AuthenticationByBiometryServiceTest.java
+++ b/TP3/src/test/java/AuthenticationByBiometryServiceTest.java
@@ -1,15 +1,24 @@
+import static authentication.Strength.STRONG;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+import org.junit.jupiter.api.extension.ExtendWith;
+
 import interfacemanualmocking.AuthenticationByBiometryService;
-import interfacemanualmocking.AuthenticationByPasswordService;
 import interfacemanualmocking.MockDirectory;
-import interfacemanualmocking.MockStrengthEstimationService;
 import org.junit.jupiter.api.*;
 
-import static authentication.Strength.*;
-import static authentication.Strength.STRONG;
-import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+//import org.mockito.junit.jupiter.MockitoExtension;
+
 
 public class AuthenticationByBiometryServiceTest {
+
+    @Mock
     private MockDirectory directory;
+
+    @InjectMocks
     private AuthenticationByBiometryService authenticationByBiometryService;
 
     @BeforeAll
@@ -23,13 +32,11 @@ public class AuthenticationByBiometryServiceTest {
     }
 
     @BeforeEach
-    void setUp()  {
-        directory = new MockDirectory();
+    void setUp() {
+        // Pas besoin de créer le mock manuellement, Mockito le fait pour vous avec @Mock
         authenticationByBiometryService = new AuthenticationByBiometryService(directory, STRONG);
-        authenticationByBiometryService.setDirectory(directory);
     }
 
-
     @AfterEach
     void tearDown() throws Exception {
         System.out.println("After each");
@@ -37,13 +44,41 @@ public class AuthenticationByBiometryServiceTest {
 
     @Test
     void testIsAMatch() {
+        // Définir un comportement attendu sur le mock
+        when(authenticationByBiometryService.isAMatch("regix", "azerty")).thenReturn(true);
+
         assertThat(authenticationByBiometryService.isAMatch("regix", "azerty")).isTrue();
 
+        // Vérifier que la méthode du mock a été appelée avec les bons arguments
+        verify(authenticationByBiometryService, times(1)).isAMatch("regix", "azerty");
+
+        // Vérifier qu'aucune autre méthode du mock n'a été appelée
+        verifyNoMoreInteractions(directory);
     }
 
     @Test
-    void testDataStrenth() {
+    void testDataStrength() {
+        // Définir un comportement attendu sur le mock
+        when(authenticationByBiometryService.dataStrenth("azerty")).thenReturn(STRONG);
+
         assertThat(authenticationByBiometryService.dataStrenth("azerty")).isEqualTo(STRONG);
+
+        // Vérifier que la méthode du mock a été appelée avec les bons arguments
+        verify(authenticationByBiometryService, times(1)).dataStrenth("azerty");
+
+        // Vérifier qu'aucune autre méthode du mock n'a été appelée
+        verifyNoMoreInteractions(directory);
+
+        // Ajouter un autre cas de test avec des données différentes
+        when(authenticationByBiometryService.dataStrenth("azertyuiopqsdfghjklmwxcvbn1234567890")).thenReturn(STRONG);
+
         assertThat(authenticationByBiometryService.dataStrenth("azertyuiopqsdfghjklmwxcvbn1234567890")).isEqualTo(STRONG);
+
+        // Vérifier que la méthode du mock a été appelée avec les bons arguments
+        verify(authenticationByBiometryService, times(1)).dataStrenth("azertyuiopqsdfghjklmwxcvbn1234567890");
+
+        // Vérifier qu'aucune autre méthode du mock n'a été appelée
+        verifyNoMoreInteractions(directory);
     }
 }
+