11package org .testcontainers .junit .mssqlserver ;
22
33import org .apache .commons .lang3 .RandomStringUtils ;
4- import org .junit .Test ;
5- import org .junit .runner . RunWith ;
6- import org .junit .runners . Parameterized ;
4+ import org .junit .jupiter . params . ParameterizedTest ;
5+ import org .junit .jupiter . params . provider . Arguments ;
6+ import org .junit .jupiter . params . provider . MethodSource ;
77import org .testcontainers .MSSQLServerTestImages ;
88import org .testcontainers .containers .MSSQLServerContainer ;
99
10- import java .util .Arrays ;
11- import java .util .Collection ;
10+ import java .util .stream .Stream ;
1211
1312import static org .assertj .core .api .Assertions .fail ;
1413
1514/**
1615 * Tests if the password passed to the container satisfied the password policy described at
1716 * https://docs.microsoft.com/en-us/sql/relational-databases/security/password-policy?view=sql-server-2017
1817 */
19- @ RunWith (Parameterized .class )
2018public class CustomPasswordMSSQLServerTest {
2119
2220 private static String UPPER_CASE_LETTERS = "ABCDE" ;
@@ -27,51 +25,40 @@ public class CustomPasswordMSSQLServerTest {
2725
2826 private static String SPECIAL_CHARS = "_(!)_" ;
2927
30- private String password ;
31-
32- private Boolean valid ;
33-
34- public CustomPasswordMSSQLServerTest (String password , Boolean valid ) {
35- this .password = password ;
36- this .valid = valid ;
37- }
38-
39- @ Parameterized .Parameters
40- public static Collection <Object []> data () {
41- return Arrays .asList (
42- new Object [][] {
43- new Object [] { null , false },
44- // too short
45- { "abc123" , false },
46- // too long
47- { RandomStringUtils .randomAlphabetic (129 ), false },
48- // only 2 categories
49- { UPPER_CASE_LETTERS + NUMBERS , false },
50- { UPPER_CASE_LETTERS + SPECIAL_CHARS , false },
51- { LOWER_CASE_LETTERS + NUMBERS , false },
52- { LOWER_CASE_LETTERS + SPECIAL_CHARS , false },
53- { NUMBERS + SPECIAL_CHARS , false },
54- // 3 categories
55- { UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + NUMBERS , true },
56- { UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + SPECIAL_CHARS , true },
57- { UPPER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS , true },
58- { LOWER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS , true },
59- // 4 categories
60- { UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS , true },
61- }
28+ public static Stream <Arguments > data () {
29+ return Stream .of (
30+ Arguments .arguments (null , false ),
31+ // too short
32+ Arguments .arguments ("abc123" , false ),
33+ // too long
34+ Arguments .arguments (RandomStringUtils .randomAlphabetic (129 ), false ),
35+ // only 2 categories
36+ Arguments .arguments (UPPER_CASE_LETTERS + NUMBERS , false ),
37+ Arguments .arguments (UPPER_CASE_LETTERS + SPECIAL_CHARS , false ),
38+ Arguments .arguments (LOWER_CASE_LETTERS + NUMBERS , false ),
39+ Arguments .arguments (LOWER_CASE_LETTERS + SPECIAL_CHARS , false ),
40+ Arguments .arguments (NUMBERS + SPECIAL_CHARS , false ),
41+ // 3 categories
42+ Arguments .arguments (UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + NUMBERS , true ),
43+ Arguments .arguments (UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + SPECIAL_CHARS , true ),
44+ Arguments .arguments (UPPER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS , true ),
45+ Arguments .arguments (LOWER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS , true ),
46+ // 4 categories
47+ Arguments .arguments (UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS , true )
6248 );
6349 }
6450
65- @ Test
66- public void runPasswordTests () {
51+ @ ParameterizedTest
52+ @ MethodSource ("data" )
53+ public void runPasswordTests (String password , boolean valid ) {
6754 try {
68- new MSSQLServerContainer <>(MSSQLServerTestImages .MSSQL_SERVER_IMAGE ).withPassword (this . password );
55+ new MSSQLServerContainer <>(MSSQLServerTestImages .MSSQL_SERVER_IMAGE ).withPassword (password );
6956 if (!valid ) {
70- fail ("Password " + this . password + " is not valid. Expected exception" );
57+ fail ("Password " + password + " is not valid. Expected exception" );
7158 }
7259 } catch (IllegalArgumentException e ) {
7360 if (valid ) {
74- fail ("Password " + this . password + " should have been validated" );
61+ fail ("Password " + password + " should have been validated" );
7562 }
7663 }
7764 }
0 commit comments