// 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;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import java.util.List;
import org.assertj.core.groups.Tuple;
import fi.hsl.parkandride.core.domain.Violation;
import fi.hsl.parkandride.core.service.ValidationException;
public class ViolationAssert {
public static List<Violation> violations(Runnable r) {
try {
r.run();
throw new AssertionError("did not throw ValidationException");
} catch (ValidationException e) {
return e.violations;
}
}
public static void assertOperatorRequired(Runnable r) {
assertTypeAndPath(r, tuple("OperatorRequired", "operator"));
}
public static void assertBadPassword(Runnable r) {
assertTypeAndPath(r, tuple("BadPassword", "password"));
}
public static void assertOperatorNotAllowed(Runnable r) {
assertTypeAndPath(r, tuple("OperatorNotAllowed", "operator"));
}
public static void assertNotNull(Runnable r) {
assertTypeAndPath(r, tuple("NotNull", "role"));
}
public static void assertPerpetualTokenNotAllowed(Runnable r) {
assertTypeAndPath(r, tuple("PerpetualTokenNotAllowed", ""));
}
public static void assertPasswordUpdateNotApplicable(Runnable r) {
assertTypeAndPath(r, tuple("PasswordUpdateNotApplicable", ""));
}
public static void assertTypeAndPath(Runnable r, Tuple... tuples) {
assertThat(violations(r)).extracting("type", "path").containsOnly(tuples);
}
}