From ee345da087c01454c50216d7b3442583a088a8e0 Mon Sep 17 00:00:00 2001 From: John Brain Date: Fri, 31 Jan 2025 14:40:13 +0000 Subject: [PATCH 1/4] Add missing Entity constructors Signed-off-by: John Brain --- .../com/cedarpolicy/model/entity/Entity.java | 19 +++++++++++ .../java/com/cedarpolicy/EntityTests.java | 33 +++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java b/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java index bdb6dfe6..2d1b312f 100644 --- a/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java +++ b/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java @@ -40,6 +40,25 @@ public class Entity { /** Tags on this entity (RFC 82) */ public final Map tags; + /** + * Create an entity from an EntityUID. + * + * @param uid EUID of the Entity. + */ + public Entity(EntityUID uid) { + this(uid, new HashMap<>(), new HashSet<>(), new HashMap<>()); + } + + /** + * Create an entity from an EntityUID and a set of parent EntityUIDs. + * + * @param uid EUID of the Entity. + * @param parentsEUIDs Set of parent entities' EUIDs. + */ + public Entity(EntityUID uid, Set parentsEUIDs) { + this(uid, new HashMap<>(), parentsEUIDs, new HashMap<>()); + } + /** * Create an entity from an EntityUIDs, a map of attributes, and a set of parent EntityUIDs. * diff --git a/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java b/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java index 94c78379..1fb72fa5 100644 --- a/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java +++ b/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ - package com.cedarpolicy; +package com.cedarpolicy; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -27,7 +27,6 @@ import com.cedarpolicy.value.*; import com.cedarpolicy.model.entity.Entity; - public class EntityTests { @Test @@ -49,4 +48,34 @@ public void getAttrTests() { // Test key not found assertEquals(principal.getAttr("decimalAttr"), null); } + + @Test + public void newWithEntityUIDTests() { + EntityTypeName principalType = EntityTypeName.parse("User").get(); + Entity principal = new Entity(principalType.of("Alice")); + + // Test the Entity's uid + assertEquals(principal.getEUID(), principalType.of("Alice")); + + // Test that a key is not found + assertEquals(principal.getAttr("stringAttr"), null); + } + + @Test + public void newWithoutAttributesTests() { + EntityTypeName principalType = EntityTypeName.parse("User").get(); + HashSet parents = new HashSet(); + parents.add(principalType.of("Bob")); + + Entity principal = new Entity(principalType.of("Alice"), parents); + + // Test the Entity's uid + assertEquals(principal.getEUID(), principalType.of("Alice")); + + // Test that a key is not found + assertEquals(principal.getAttr("stringAttr"), null); + + // Test the Entity's parents + assertEquals(principal.getParents(), parents); + } } From 0e48b16416b915470fe698ae14a1581b73d077d4 Mon Sep 17 00:00:00 2001 From: John Brain Date: Fri, 31 Jan 2025 15:39:19 +0000 Subject: [PATCH 2/4] Improve tests Signed-off-by: John Brain --- CedarJava/src/test/java/com/cedarpolicy/EntityTests.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java b/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java index 1fb72fa5..84a0bb2a 100644 --- a/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java +++ b/CedarJava/src/test/java/com/cedarpolicy/EntityTests.java @@ -59,6 +59,9 @@ public void newWithEntityUIDTests() { // Test that a key is not found assertEquals(principal.getAttr("stringAttr"), null); + + // Test the Entity's parents + assertEquals(principal.getParents().size(), 0); } @Test From c1e43b768f01d800e99c82b05ebdec7b5ece43f7 Mon Sep 17 00:00:00 2001 From: John Brain Date: Fri, 7 Feb 2025 14:28:06 -0500 Subject: [PATCH 3/4] Update CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java Co-authored-by: Craig Disselkoen Signed-off-by: John Brain --- .../src/main/java/com/cedarpolicy/model/entity/Entity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java b/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java index 2d1b312f..aee0d5ec 100644 --- a/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java +++ b/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java @@ -41,7 +41,7 @@ public class Entity { public final Map tags; /** - * Create an entity from an EntityUID. + * Create an entity from an EntityUID. It will have no attributes, parents, or tags. * * @param uid EUID of the Entity. */ From c6b57585a155d9509a8e93b7916438d2180eee1e Mon Sep 17 00:00:00 2001 From: John Brain Date: Fri, 7 Feb 2025 14:28:55 -0500 Subject: [PATCH 4/4] Update CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java Co-authored-by: Craig Disselkoen Signed-off-by: John Brain --- .../src/main/java/com/cedarpolicy/model/entity/Entity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java b/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java index aee0d5ec..8b5e348b 100644 --- a/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java +++ b/CedarJava/src/main/java/com/cedarpolicy/model/entity/Entity.java @@ -50,7 +50,7 @@ public Entity(EntityUID uid) { } /** - * Create an entity from an EntityUID and a set of parent EntityUIDs. + * Create an entity from an EntityUID and a set of parent EntityUIDs. It will have no attributes or tags. * * @param uid EUID of the Entity. * @param parentsEUIDs Set of parent entities' EUIDs.