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