Skip to content

Commit

Permalink
feat(auth): parse resource definition filter value
Browse files Browse the repository at this point in the history
  • Loading branch information
vkrizan committed Jul 21, 2023
1 parent 2e62a78 commit d161bc2
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,12 @@

import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;

public class ResourceDefinitionFilter {
public String key;
public String operation;
public Object value;

@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
public List<String> value;
}
21 changes: 21 additions & 0 deletions src/test/java/com/redhat/cloud/policies/app/RbacParsingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
package com.redhat.cloud.policies.app;

import java.io.File;
import java.util.List;


import javax.inject.Inject;
import org.junit.jupiter.api.Test;
Expand All @@ -28,6 +30,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertNotNull;

@QuarkusTest
class RbacParsingTest {
Expand Down Expand Up @@ -83,4 +86,22 @@ void testPartialAccess() throws Exception {
assertTrue(rbac.canDo("*", "execute"));
assertTrue(rbac.canDo("foobar", "execute"));
}

@Test
void testResourceDefinitionsParsing() throws Exception {
File file = new File("src/test/resources/rbac_example.json");
RbacRaw rbac = objectMapper.readValue(file, RbacRaw.class);
assertEquals(3, rbac.data.size());

assertNotNull(rbac.data.get(0).resourceDefinitions);
assertEquals(0, rbac.data.get(0).resourceDefinitions.size());

assertNotNull(rbac.data.get(1).resourceDefinitions);
assertEquals(1, rbac.data.get(1).resourceDefinitions.size());
assertEquals(List.of("123456"), rbac.data.get(1).resourceDefinitions.get(0).attributeFilter.value);

assertNotNull(rbac.data.get(2).resourceDefinitions);
assertEquals(1, rbac.data.get(2).resourceDefinitions.size());
assertEquals(List.of("654321"), rbac.data.get(2).resourceDefinitions.get(0).attributeFilter.value);
}
}
12 changes: 12 additions & 0 deletions src/test/resources/rbac_example.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@
}
}
]
},
{
"permission": "foo:*:read",
"resourceDefinitions": [
{
"attributeFilter": {
"key": "hulla.accounts",
"operation": "in",
"value": ["654321"]
}
}
]
}
]
}

0 comments on commit d161bc2

Please sign in to comment.