// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.core.service;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class PasswordValidatorTest {
private final String password;
private final boolean isExpectedToBeValid;
public PasswordValidatorTest(String password, boolean isExpectedToBeValid) {
this.password = password;
this.isExpectedToBeValid = isExpectedToBeValid;
}
@Parameters
public static Object[][] data() {
return new Object[][]{
{ "i2E45678", true }, // min length
{ "i2E456789012345", true }, // max length
{ "å2Ä%&$)[^@#$%_-", true }, // å,ä,ö + special chars
{ null, false},
{ "12E45678", false }, // missing lowercase letter
{ "i2345678", false }, // missing uppercase letter
{ "i2E4 5678", false }, // whitespace inside
{ "i2E4567", false }, // too short
{ "i2E4567890123456", false }, // too long
};
}
@Test
public void testPassword() {
try {
PasswordValidator.validate(password);
assertTrue("Invalid password '"+ password + "' was valid", isExpectedToBeValid);
} catch (ValidationException e) {
assertFalse("Valid password '" + password + "' was invalid", isExpectedToBeValid);
}
}
}