use of io.helidon.security.ProviderRequest in project helidon by oracle.
the class RoleValidatorTest method testUserRoles.
@Test
void testUserRoles() {
RoleValidator validator = RoleValidator.create();
RoleValidator.Roles annot = mock(RoleValidator.Roles.class);
String[] roleArray = new String[] { "admin" };
when(annot.value()).thenReturn(roleArray);
when(annot.subjectType()).thenReturn(SubjectType.USER);
SecurityLevel appSecurityLevel = mock(SecurityLevel.class);
SecurityLevel classSecurityLevel = mock(SecurityLevel.class);
List<SecurityLevel> securityLevels = new ArrayList<>();
securityLevels.add(appSecurityLevel);
securityLevels.add(classSecurityLevel);
EndpointConfig ep = mock(EndpointConfig.class);
when(ep.securityLevels()).thenReturn(securityLevels);
when(classSecurityLevel.filterAnnotations(RoleValidator.Roles.class, EndpointConfig.AnnotationScope.METHOD)).thenReturn(List.of(annot));
RoleValidator.RoleConfig rConfig = validator.fromAnnotations(ep);
Errors.Collector collector = Errors.collector();
ProviderRequest request = mock(ProviderRequest.class);
when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Role.create("admin")).build()));
when(request.service()).thenReturn(Optional.empty());
validator.validate(rConfig, collector, request);
collector.collect().checkValid();
}
use of io.helidon.security.ProviderRequest in project helidon by oracle.
the class RoleValidatorTest method testRolesAllowedPermit.
@Test
void testRolesAllowedPermit() {
RoleValidator validator = RoleValidator.create();
RolesAllowed annot = mock(RolesAllowed.class);
String[] roleArray = new String[] { "admin" };
when(annot.value()).thenReturn(roleArray);
SecurityLevel appSecurityLevel = mock(SecurityLevel.class);
SecurityLevel classSecurityLevel = mock(SecurityLevel.class);
List<SecurityLevel> securityLevels = new ArrayList<>();
securityLevels.add(appSecurityLevel);
securityLevels.add(classSecurityLevel);
EndpointConfig ep = mock(EndpointConfig.class);
when(ep.securityLevels()).thenReturn(securityLevels);
when(classSecurityLevel.filterAnnotations(RolesAllowed.class, EndpointConfig.AnnotationScope.METHOD)).thenReturn(List.of(annot));
RoleValidator.RoleConfig rConfig = validator.fromAnnotations(ep);
Errors.Collector collector = Errors.collector();
ProviderRequest request = mock(ProviderRequest.class);
when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Role.create("admin")).build()));
when(request.service()).thenReturn(Optional.empty());
validator.validate(rConfig, collector, request);
collector.collect().checkValid();
}
use of io.helidon.security.ProviderRequest in project helidon by oracle.
the class RoleValidatorTest method testAllAccessModificationsOnTheSameLevelFromConfig.
@Test
void testAllAccessModificationsOnTheSameLevelFromConfig() {
RoleValidator roleValidator = RoleValidator.create();
RoleValidator.RoleConfig roleConfig = roleValidator.fromConfig(config.get("test4"));
Errors.Collector collector = Errors.collector();
ProviderRequest request = mock(ProviderRequest.class);
when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Role.create("test")).build()));
roleValidator.validate(roleConfig, collector, request);
if (collector.collect().isValid()) {
fail("DenyAll is set on this method, this should have failed");
}
}
use of io.helidon.security.ProviderRequest in project helidon by oracle.
the class RoleValidatorTest method testRolesFromConfig.
@Test
void testRolesFromConfig() {
RoleValidator roleValidator = RoleValidator.create();
RoleValidator.RoleConfig roleConfig = roleValidator.fromConfig(config.get("test1"));
Errors.Collector collector = Errors.collector();
ProviderRequest request = mock(ProviderRequest.class);
when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Role.create("admin")).build()));
roleValidator.validate(roleConfig, collector, request);
collector.collect().checkValid();
}
use of io.helidon.security.ProviderRequest in project helidon by oracle.
the class JakartaElPolicyExecutorTest method testSimpleExpression.
@Test
public void testSimpleExpression() {
JavaxElPolicyExecutor ex = JavaxElPolicyExecutor.create();
SecurityEnvironment env = SecurityEnvironment.create();
Subject user = Subject.builder().principal(Principal.create("unit-test-user")).addGrant(Role.create("unit-test-user-role")).build();
Subject service = Subject.builder().principal(Principal.create("unit-test-service")).addGrant(Role.create("unit-test-service-role")).build();
MyResource object = new MyResource("unit-test-user");
ProviderRequest request = mock(ProviderRequest.class);
when(request.service()).thenReturn(Optional.of(service));
when(request.subject()).thenReturn(Optional.of(user));
when(request.env()).thenReturn(env);
when(request.getObject()).thenReturn(Optional.of(object));
Errors.Collector collector = Errors.collector();
ex.executePolicy("${user.principal.id == object.owner}", collector, request);
collector.collect().checkValid();
collector = Errors.collector();
ex.executePolicy("${user.principal.id == object.owner}", collector, request);
collector.collect().checkValid();
collector = Errors.collector();
ex.executePolicy("${inRole(user, 'unit-test-user-role') && inRole(service, 'unit-test-service-role')}", collector, request);
collector.collect().checkValid();
collector = Errors.collector();
ex.executePolicy("${service.principal.id == object.owner}", collector, request);
if (collector.collect().isValid()) {
fail("Should have failed, as service is not the owner of the object");
}
collector = Errors.collector();
ex.executePolicy("${env.time.year >= 2017}", collector, request);
collector.collect().checkValid();
}
Aggregations