diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoService.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoService.java index 32a35ea809ecf7ba7f8f41ed4df790c3820a2d77..f78af5bd04da9bf42d35812d708cc7f6200c82d7 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoService.java @@ -35,8 +35,12 @@ class ForwardingLandesnetzInfoService { LOG.info("{} Landesnetz-Infos entries read.", landesnetzInfo.size()); } - public boolean isDomainInLandesnetz(String domain) { - return isLandesnetzIncludingDomain(domain); + public boolean isEmailInLandesnetz(String email) { + return isLandesnetzIncludingDomain(getDomain(email)); + } + + private String getDomain(String email) { + return email.substring(email.lastIndexOf('@') + 1, email.length()); } private boolean isLandesnetzIncludingDomain(String emailDomain) { diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidator.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidator.java index bfd35bee7134a7bd16db98349273b5dd6b52097f..43a4954799cdbcaec106cda25cebd4b85d353ead 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidator.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidator.java @@ -32,11 +32,7 @@ class ForwardingPasswordValidator implements ConstraintValidator<ForwardingPassw } private boolean isNotInLandesnetz(String email) { - return !landesnetzInfoService.isDomainInLandesnetz(getDomain(email)); - } - - String getDomain(String email) { - return email.substring(email.lastIndexOf('@') + 1, email.length()); + return !landesnetzInfoService.isEmailInLandesnetz(email); } boolean isValidPassword(String password) { diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandMapperTest.java index 199341b6054af70371ea75f9202439b736845122..29864a467f743bfd74aaf0e7941c0087200c075b 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandMapperTest.java @@ -48,8 +48,7 @@ class CommandMapperTest { @Test void shouldMapNullPasswordAsEmpty() { - var request = RedirectRequestTestFactory.createBuilder().password(null).build(); - var command = mapper.toGrpcRedirectRequest(request); + var command = mapper.toGrpcRedirectRequest(RedirectRequestTestFactory.createBuilder().password(null).build()); assertThat(command.getPassword()).isEqualTo(StringUtils.EMPTY); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java index 26436350d1d614b2d7bc6fd28bb8a739eb2bdd11..e8a8b13bb4d8fd8808c40b56c3b14f9e0e4ac370 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.HashSet; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -22,50 +23,62 @@ class ForwardingLandesnetzInfoServiceTest { @Mock private ResourceLoader resourceLoader; + @DisplayName("Is email in landesnetz") @Nested - class TestIstImLandesnetz { + class TestIstInLandesnetz { + + private final String EMAIL_NAME = "testEmailName@"; private final String IN_LANDESNETZ = "itvsh.de"; - private final String IN_LANDESNETZ_MIT_PUNKT = ".itvsh.old.de"; + private final String IN_LANDESNETZ_WITH_DOTS = ".itvsh.old.de"; @BeforeEach void initMap() throws Exception { - ReflectionTestUtils.setField(service, "landesnetzInfo", new HashSet<>(Arrays.asList(IN_LANDESNETZ, IN_LANDESNETZ_MIT_PUNKT))); + ReflectionTestUtils.setField(service, "landesnetzInfo", new HashSet<>(Arrays.asList(IN_LANDESNETZ, IN_LANDESNETZ_WITH_DOTS))); } + @DisplayName("validate with email in Landesnetz") @Nested - class TestExactMatching { + class TestWithMatchingEmail { @Test - void shouldReturnTrue() { - var result = service.isDomainInLandesnetz(IN_LANDESNETZ); + void shouldReturnTrueWithSingleDot() { + var result = service.isEmailInLandesnetz(EMAIL_NAME + IN_LANDESNETZ); assertThat(result).isTrue(); } @Test - void shouldReturnFalse() { - var result = service.isDomainInLandesnetz("me.gmx.de"); + void shouldReturnTrueWithMultipleDots() { + var result = service.isEmailInLandesnetz(EMAIL_NAME + IN_LANDESNETZ_WITH_DOTS); - assertThat(result).isFalse(); + assertThat(result).isTrue(); + } + + @Test + void shouldReturnTrueByConsideringJustTheEnd() { + var result = service.isEmailInLandesnetz(EMAIL_NAME + "me" + IN_LANDESNETZ_WITH_DOTS); + + assertThat(result).isTrue(); } } + @DisplayName("validate with email NOT in Landesnetz") @Nested class TestEndsWithMatching { @Test - void shouldReturnFalse() { - var result = service.isDomainInLandesnetz("me" + IN_LANDESNETZ_MIT_PUNKT + ".nicht.gueltig.de"); + void shouldReturnFalseOnWrongDomain() { + var result = service.isEmailInLandesnetz(EMAIL_NAME + "me.gmx.de"); assertThat(result).isFalse(); } @Test - void shouldReturnTrue() { - var result = service.isDomainInLandesnetz("me" + IN_LANDESNETZ_MIT_PUNKT); + void shouldReturnFalseOnConsideringJustTheEnd() { + var result = service.isEmailInLandesnetz(EMAIL_NAME + "me" + IN_LANDESNETZ_WITH_DOTS + ".nicht.gueltig.de"); - assertThat(result).isTrue(); + assertThat(result).isFalse(); } } } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidatorTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidatorTest.java index 895bc2cfdc8b2218fcc0472aaf23cdf85f38ff69..7b270e631e2147a95620ae4f903c9cd8707491c6 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidatorTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/forwarding/ForwardingPasswordValidatorTest.java @@ -52,7 +52,7 @@ class ForwardingPasswordValidatorTest { @BeforeEach void mock() { - when(landesnetzInfoService.isDomainInLandesnetz(anyString())).thenReturn(true); + when(landesnetzInfoService.isEmailInLandesnetz(anyString())).thenReturn(true); } @Test @@ -72,7 +72,7 @@ class ForwardingPasswordValidatorTest { @BeforeEach void mock() { - when(landesnetzInfoService.isDomainInLandesnetz(anyString())).thenReturn(false); + when(landesnetzInfoService.isEmailInLandesnetz(anyString())).thenReturn(false); doNothing().when(validator).prepareConstraint(any()); } @@ -120,16 +120,4 @@ class ForwardingPasswordValidatorTest { } } } - - @DisplayName("Get domain") - @Nested - class TestGetDomain { - - @Test - void shouldReturnDomainFromEmail() { - var domain = validator.getDomain("snoopy@charlies-home.com"); - - assertThat(domain).isEqualTo("charlies-home.com"); - } - } } \ No newline at end of file