From dc42328858cce8589a5481ccec6b063beb97f67d Mon Sep 17 00:00:00 2001
From: Setondji <setondji.mededji@etu.univ-amu.fr>
Date: Tue, 23 Jan 2024 23:46:39 +0100
Subject: [PATCH] debut etape 2

---
 .../AuthenticationByBiometryService.java      | 30 +++++++++
 .../AuthenticationByPasswordService.java      | 65 +++++++++++++++++++
 .../AuthenticationService.java                |  8 +++
 .../automaticmocking/DirectoryInterface.java  |  5 ++
 .../StrengthEstimationServiceInterface.java   |  5 ++
 .../AuthenticationByBiometryServiceTest.java  | 55 +++++++++++++---
 6 files changed, 158 insertions(+), 10 deletions(-)
 create mode 100644 TP3/src/main/java/automaticmocking/AuthenticationByBiometryService.java
 create mode 100644 TP3/src/main/java/automaticmocking/AuthenticationByPasswordService.java
 create mode 100644 TP3/src/main/java/automaticmocking/AuthenticationService.java
 create mode 100644 TP3/src/main/java/automaticmocking/DirectoryInterface.java
 create mode 100644 TP3/src/main/java/automaticmocking/StrengthEstimationServiceInterface.java

diff --git a/TP3/src/main/java/automaticmocking/AuthenticationByBiometryService.java b/TP3/src/main/java/automaticmocking/AuthenticationByBiometryService.java
new file mode 100644
index 0000000..39b9039
--- /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 0000000..a87a7e1
--- /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 0000000..96730a4
--- /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 0000000..ad05fc1
--- /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 0000000..2c3c514
--- /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 e3d80c2..0f3c585 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);
     }
 }
+
-- 
GitLab