11package net .datafaker .providers .base ;
22
33import net .datafaker .Faker ;
4+ import net .datafaker .providers .base .Internet .PortRange ;
45import net .datafaker .service .FakeValuesService ;
5-
66import org .apache .commons .validator .routines .EmailValidator ;
77import org .assertj .core .api .Condition ;
88import org .junit .jupiter .api .RepeatedTest ;
1818import java .util .stream .Collectors ;
1919
2020import static java .lang .Integer .parseInt ;
21+ import static net .datafaker .providers .base .Internet .PortRange .RegisteredPorts ;
22+ import static net .datafaker .providers .base .Internet .PortRange .WellKnownPorts ;
2123import static org .assertj .core .api .Assertions .anyOf ;
2224import static org .assertj .core .api .Assertions .assertThat ;
25+ import static org .assertj .core .api .Assertions .assertThatThrownBy ;
2326import static org .junit .jupiter .api .Assertions .assertDoesNotThrow ;
2427import static org .mockito .Mockito .doReturn ;
2528import static org .mockito .Mockito .mock ;
@@ -31,7 +34,7 @@ class InternetTest {
3134 public static final Pattern IPV6_HOST_ADDRESS = Pattern .compile ("[0-9a-fA-F]{1,4}(:([0-9a-fA-F]{1,4})){1,7}" );
3235 private final Faker faker = new Faker ();
3336
34- @ RepeatedTest (100 )
37+ @ RepeatedTest (10 )
3538 @ SuppressWarnings ("removal" )
3639 void testUsername () {
3740 assertThat (faker .internet ().username ()).matches ("^(\\ w+)\\ .(\\ w+)$" );
@@ -182,7 +185,7 @@ void testWebdomain() {
182185 assertThat (faker .internet ().webdomain ()).matches ("www\\ .[\\ w-]+\\ .\\ w+" );
183186 }
184187
185- @ RepeatedTest (100 )
188+ @ RepeatedTest (10 )
186189 void testUrl () {
187190 // This test assumes that java.net.URL has better validation than we can come up with in
188191 // regex.
@@ -263,11 +266,41 @@ void testPasswordMinLengthMaxLengthIncludeUpperCaseIncludeSpecial() {
263266 assertThat (faker .internet ().password (10 , 25 , true , true )).matches ("[a-zA-Z\\ d!@#$%^&*]{10,25}" );
264267 }
265268
266- @ RepeatedTest (100 )
269+ @ RepeatedTest (10 )
267270 void testPort () {
268271 assertThat (faker .internet ().port ()).isBetween (0 , 65535 );
269272 }
270273
274+ @ RepeatedTest (10 )
275+ void portWithinGivenBounds () {
276+ assertThat (faker .internet ().port (0 , 1 )).isBetween (0 , 1 );
277+ assertThat (faker .internet ().port (100 , 200 )).isBetween (100 , 200 );
278+ assertThat (faker .internet ().port (1000 , 1000 )).isEqualTo (1000 );
279+ assertThat (faker .internet ().port (65535 , 65535 )).isEqualTo (65535 );
280+ }
281+
282+ @ RepeatedTest (10 )
283+ void portWithinGivenRange () {
284+ assertThat (faker .internet ().port (WellKnownPorts )).isBetween (0 , 1023 );
285+ assertThat (faker .internet ().port (RegisteredPorts )).isBetween (1024 , 49151 );
286+ assertThat (faker .internet ().port (PortRange .DynamicPrivatePorts )).isBetween (49152 , 65535 );
287+ }
288+
289+ @ Test
290+ void portWithinGivenRange_validation () {
291+ assertThatThrownBy (() -> faker .internet ().port (-1 , 100 ))
292+ .isInstanceOf (IllegalArgumentException .class )
293+ .hasMessage ("Port number -1 cannot be less than 0" );
294+
295+ assertThatThrownBy (() -> faker .internet ().port (100 , 99 ))
296+ .isInstanceOf (IllegalArgumentException .class )
297+ .hasMessage ("Min (100) > Max (99)" );
298+
299+ assertThatThrownBy (() -> faker .internet ().port (65535 , 65536 ))
300+ .isInstanceOf (IllegalArgumentException .class )
301+ .hasMessage ("Port number 65536 cannot be greater than 65535" );
302+ }
303+
271304 @ Test
272305 @ SuppressWarnings ("removal" )
273306 void shouldGenerateAPasswordWithMinAndMaxLength () {
@@ -463,7 +496,7 @@ void testUuidv7() {
463496 assertThat (faker .internet ().uuidv7 ()).matches ("^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$" );
464497 }
465498
466- @ RepeatedTest (100 )
499+ @ RepeatedTest (10 )
467500 void testFarsiIDNs () {
468501 // in this case, we're just making sure Farsi doesn't blow up.
469502 // there have been issues with Farsi not being produced.
0 commit comments