diff --git a/src/main/java/com/clevercloud/biscuit/token/Authorizer.java b/src/main/java/com/clevercloud/biscuit/token/Authorizer.java index df257f9e..407c7aec 100644 --- a/src/main/java/com/clevercloud/biscuit/token/Authorizer.java +++ b/src/main/java/com/clevercloud/biscuit/token/Authorizer.java @@ -232,6 +232,11 @@ public Authorizer add_policy(String s) throws Error.Parser { return this; } + public Authorizer add_policy(Policy p) { + this.policies.add(p); + return this; + } + public Set query(Rule query) throws Error.TooManyFacts, Error.TooManyIterations, Error.Timeout { return this.query(query, new RunLimits()); } diff --git a/src/test/java/com/clevercloud/biscuit/token/AuthorizerTest.java b/src/test/java/com/clevercloud/biscuit/token/AuthorizerTest.java new file mode 100644 index 00000000..391fd1b2 --- /dev/null +++ b/src/test/java/com/clevercloud/biscuit/token/AuthorizerTest.java @@ -0,0 +1,39 @@ +package com.clevercloud.biscuit.token; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import com.clevercloud.biscuit.error.Error.Parser; +import com.clevercloud.biscuit.token.builder.Expression; +import com.clevercloud.biscuit.token.builder.Term; +import static com.clevercloud.biscuit.token.builder.Utils.*; + +public class AuthorizerTest { + + @Test + public void testAuthorizerPolicy() throws Parser { + Authorizer authorizer = new Authorizer(); + List policies = authorizer.policies; + authorizer.deny(); + assertEquals(1, policies.size()); + + authorizer.add_policy(new Policy( + Arrays.asList( + constrained_rule( + "deny", + new ArrayList<>(), + new ArrayList<>(), + Arrays.asList(new Expression.Value(new Term.Bool(true))) + ) + ), Policy.Kind.Deny)); + assertEquals(2, policies.size()); + + authorizer.add_policy("deny if true"); + assertEquals(3, policies.size()); + } +}