43
loading...
This website collects cookies to deliver better user experience
@Test
fun passwordValidatorTest() {
val minCharsCount = 6
val passwordValidator = PasswordValidator(
ContainsUpperCaseLetterValidator(),
MinCharsValidator(minCharsCount),
ContainsDigitValidator()
)
assertThat(
passwordValidator.validate("123456")
).contains("no upper case letters")
assertThat(
passwordValidator.validate("1234A")
).contains("contains less than $minCharsCount chars")
assertThat(
passwordValidator.validate("ABCDEF")
).contains("no digits")
}
@Test
fun advancedPasswordValidatorTest() {
val minCharsCount = 6
val passwordValidator = PasswordValidator(
ContainsUpperCaseLetterValidator(),
MinCharsValidator(minCharsCount),
ContainsDigitValidator(),
ContainsLowerCaseLetterValidator(),
NoBlanksValidator()
)
assertThat(
passwordValidator.validate("123456")
).contains("no upper case letters")
assertThat(
passwordValidator.validate("1234A")
).contains("contains less than $minCharsCount chars")
assertThat(
passwordValidator.validate("ABCDEF")
).contains("no digits")
assertThat(
passwordValidator.validate("HELLO")
).contains("no lower case letters")
assertThat(
passwordValidator.validate("12 3 456")
).contains("contains blanks")
}
val passwordValidator = PasswordValidator(
ContainsUpperCaseLetterValidator(),
MinCharsValidator(6),
ContainsDigitValidator(),
ContainsLowerCaseLetterValidator(),
NoBlanksValidator()
)
@Test
fun passwordValidatorNoUpperCaseTest_showsError() {
assertThat(
passwordValidator.validate("123456")
).contains("no upper case letters")
}
@Test
fun passwordValidatorNoLowerCaseTest_showsError() {
assertThat(
passwordValidator.validate("HELLO")
).contains("no lower case letters")
}
@Test
fun passwordValidatorNoDigitsTest_showsError() {
assertThat(
passwordValidator.validate("ABCDEF")
).contains("no digits")
}
...
val passwordValidator = PasswordValidator(
ContainsUpperCaseLetterValidator(),
MinCharsValidator(6),
ContainsDigitValidator(),
ContainsLowerCaseLetterValidator(),
NoBlanksValidator()
)
@DisplayName("PasswordValidator for invalid passwords")
@ParameterizedTest(name = "When password is \"{0}\", the error contains \"{1}\"")
@CsvSource(
"123456, no upper case letters",
"ABCDEF, no digits",
"HELLO, no lower case letters",
"1234A, contains less than 6 chars",
"12 3 456, contains blanks"
)
fun testPasswordValidatorRight(password: String?, expectedError: String?) {
val actualError = passwordValidator.validate(password)
assertThat(actualError).contains(expectedError)
}
Apart from @CsvSource, Junit5 comes with other annotations to provide inputs, such as @CsvFileSource, @EnumSource or even @MethodSource for more complex input sets. You can take a deeper look at them here to find which one fits your needs better.