|
|
|
|
@ -22,9 +22,11 @@ import org.springframework.expression.Expression;
@@ -22,9 +22,11 @@ import org.springframework.expression.Expression;
|
|
|
|
|
import org.springframework.expression.spel.standard.SpelExpressionParser; |
|
|
|
|
import org.springframework.expression.spel.support.StandardEvaluationContext; |
|
|
|
|
import org.springframework.security.authorization.AuthorizationDecision; |
|
|
|
|
import org.springframework.security.authorization.AuthorizationDeniedException; |
|
|
|
|
import org.springframework.security.authorization.ExpressionAuthorizationDecision; |
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
|
import static org.assertj.core.api.Assertions.assertThatExceptionOfType; |
|
|
|
|
|
|
|
|
|
public class ExpressionUtilsTests { |
|
|
|
|
|
|
|
|
|
@ -48,10 +50,23 @@ public class ExpressionUtilsTests {
@@ -48,10 +50,23 @@ public class ExpressionUtilsTests {
|
|
|
|
|
assertThat(ExpressionUtils.evaluate(expression, context)).isInstanceOf(ExpressionAuthorizationDecision.class); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void evaluateWhenExpressionThrowsAuthorizationDeniedExceptionThenPropagates() { |
|
|
|
|
SpelExpressionParser parser = new SpelExpressionParser(); |
|
|
|
|
Expression expression = parser.parseExpression("#root.throwException()"); |
|
|
|
|
StandardEvaluationContext context = new StandardEvaluationContext(this); |
|
|
|
|
assertThatExceptionOfType(AuthorizationDeniedException.class) |
|
|
|
|
.isThrownBy(() -> ExpressionUtils.evaluate(expression, context)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public AuthorizationDecision returnDecision() { |
|
|
|
|
return new AuthorizationDecisionDetails(false, this.details); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public Object throwException() { |
|
|
|
|
throw new AuthorizationDeniedException("denied"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public boolean returnResult() { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|