diff --git a/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceAuthorizationRequest.java b/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceAuthorizationRequest.java
index 6a79c030ed..153fc0413b 100644
--- a/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceAuthorizationRequest.java
+++ b/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceAuthorizationRequest.java
@@ -33,6 +33,17 @@ public interface IResourceAuthorizationRequest extends IAuthorizationRequest {
@NonNull
IAuthorizationRequest asGeneral();
+ /**
+ * Creates a resource-specific request, of type {@code IResourceSpecificAuthorizationRequest}, having the same user,
+ * action and resource.
+ *
+ * If the current instance is already of type {@code IResourceSpecificAuthorizationRequest}, it is returned as-is.
+ *
+ * @return A corresponding specific resource request.
+ */
+ @NonNull
+ IResourceSpecificAuthorizationRequest asSpecific();
+
/**
* Creates a new instance of {@code IResourceAuthorizationRequest} with the same user and action, but with a
* different resource.
diff --git a/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceSpecificAuthorizationRequest.java b/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceSpecificAuthorizationRequest.java
new file mode 100644
index 0000000000..68855c2164
--- /dev/null
+++ b/api/src/main/java/org/pentaho/platform/api/engine/security/authorization/resources/IResourceSpecificAuthorizationRequest.java
@@ -0,0 +1,16 @@
+/*! ******************************************************************************
+ *
+ * Pentaho
+ *
+ * Copyright (C) 2024 by Hitachi Vantara, LLC : http://www.pentaho.com
+ *
+ * Use of this software is governed by the Business Source License included
+ * in the LICENSE.TXT file.
+ *
+ * Change Date: 2029-07-20
+ ******************************************************************************/
+
+package org.pentaho.platform.api.engine.security.authorization.resources;
+
+public interface IResourceSpecificAuthorizationRequest extends IResourceAuthorizationRequest {
+}
diff --git a/assemblies/pentaho-solutions/src/main/resources/pentaho-solutions/system/pentahoObjects.spring.xml b/assemblies/pentaho-solutions/src/main/resources/pentaho-solutions/system/pentahoObjects.spring.xml
index 5a94abdf89..f50a3935fe 100644
--- a/assemblies/pentaho-solutions/src/main/resources/pentaho-solutions/system/pentahoObjects.spring.xml
+++ b/assemblies/pentaho-solutions/src/main/resources/pentaho-solutions/system/pentahoObjects.spring.xml
@@ -465,7 +465,7 @@ not directly from the PentahoObjectFactory. -->
-
+
@@ -473,6 +473,13 @@ not directly from the PentahoObjectFactory. -->
+
+
+
+
+
+
+
diff --git a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceActionGeneralRequirementAuthorizationDecision.java b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceGeneralAuthorizationDecision.java
similarity index 54%
rename from core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceActionGeneralRequirementAuthorizationDecision.java
rename to core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceGeneralAuthorizationDecision.java
index 2ea28e20c4..e9e7cf5140 100644
--- a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceActionGeneralRequirementAuthorizationDecision.java
+++ b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceGeneralAuthorizationDecision.java
@@ -5,14 +5,12 @@
import org.pentaho.platform.api.engine.security.authorization.decisions.IAuthorizationDecision;
import org.pentaho.platform.engine.security.messages.Messages;
-public class ResourceActionGeneralRequirementAuthorizationDecision extends DerivedAuthorizationDecision {
+public class ResourceGeneralAuthorizationDecision extends DerivedAuthorizationDecision {
private static final String JUSTIFICATION =
- Messages.getInstance().getString( "ResourceActionGeneralRequirementAuthorizationDecision.JUSTIFICATION" );
+ Messages.getInstance().getString( "ResourceGeneralAuthorizationDecision.JUSTIFICATION" );
- public ResourceActionGeneralRequirementAuthorizationDecision( @NonNull
- IAuthorizationRequest request,
- @NonNull
- IAuthorizationDecision derivedFromDecision ) {
+ public ResourceGeneralAuthorizationDecision( @NonNull IAuthorizationRequest request,
+ @NonNull IAuthorizationDecision derivedFromDecision ) {
super( request, derivedFromDecision );
}
@@ -25,7 +23,7 @@ public String getShortJustification() {
@Override
public String toString() {
- // Example: "ResourceActionGeneralRequirementAuthorizationDecision[Granted, from: ]"
+ // Example: "ResourceGeneralAuthorizationDecision[Granted, from: ]"
return String.format(
"%s[%s, from: %s]",
getClass().getSimpleName(),
diff --git a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceSpecificAuthorizationDecision.java b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceSpecificAuthorizationDecision.java
new file mode 100644
index 0000000000..2562904766
--- /dev/null
+++ b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceSpecificAuthorizationDecision.java
@@ -0,0 +1,33 @@
+package org.pentaho.platform.engine.security.authorization.core.decisions;
+
+import edu.umd.cs.findbugs.annotations.NonNull;
+import org.pentaho.platform.api.engine.security.authorization.IAuthorizationRequest;
+import org.pentaho.platform.api.engine.security.authorization.decisions.IAuthorizationDecision;
+import org.pentaho.platform.engine.security.messages.Messages;
+
+public class ResourceSpecificAuthorizationDecision extends DerivedAuthorizationDecision {
+ private static final String JUSTIFICATION =
+ Messages.getInstance().getString( "ResourceSpecificAuthorizationDecision.JUSTIFICATION" );
+
+ public ResourceSpecificAuthorizationDecision( @NonNull IAuthorizationRequest request,
+ @NonNull IAuthorizationDecision derivedFromDecision ) {
+ super( request, derivedFromDecision );
+ }
+
+ @NonNull
+ @Override
+ public String getShortJustification() {
+ // Example: "From specific permission"
+ return JUSTIFICATION;
+ }
+
+ @Override
+ public String toString() {
+ // Example: "ResourceSpecificAuthorizationDecision[Granted, from: ]"
+ return String.format(
+ "%s[%s, from: %s]",
+ getClass().getSimpleName(),
+ getGrantedLogText(),
+ getDerivedFromDecision() );
+ }
+}
diff --git a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceAuthorizationRequest.java b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceAuthorizationRequest.java
index 5eef730e87..a89c148799 100644
--- a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceAuthorizationRequest.java
+++ b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceAuthorizationRequest.java
@@ -15,9 +15,10 @@
import edu.umd.cs.findbugs.annotations.NonNull;
import org.pentaho.platform.api.engine.IAuthorizationAction;
import org.pentaho.platform.api.engine.security.authorization.IAuthorizationRequest;
-import org.pentaho.platform.api.engine.security.authorization.resources.IAuthorizationResource;
import org.pentaho.platform.api.engine.security.authorization.IAuthorizationUser;
+import org.pentaho.platform.api.engine.security.authorization.resources.IAuthorizationResource;
import org.pentaho.platform.api.engine.security.authorization.resources.IResourceAuthorizationRequest;
+import org.pentaho.platform.api.engine.security.authorization.resources.IResourceSpecificAuthorizationRequest;
import org.pentaho.platform.engine.security.authorization.core.AuthorizationRequest;
import java.util.Objects;
@@ -73,6 +74,12 @@ public IAuthorizationRequest asGeneral() {
return new AuthorizationRequest( getUser(), getAction() );
}
+ @NonNull
+ @Override
+ public IResourceSpecificAuthorizationRequest asSpecific() {
+ return new ResourceSpecificAuthorizationRequest( this );
+ }
+
@Override
public boolean equals( Object o ) {
if ( !super.equals( o ) ) {
diff --git a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceSpecificAuthorizationRequest.java b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceSpecificAuthorizationRequest.java
new file mode 100644
index 0000000000..a37edf3e96
--- /dev/null
+++ b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/resources/ResourceSpecificAuthorizationRequest.java
@@ -0,0 +1,68 @@
+/*! ******************************************************************************
+ *
+ * Pentaho
+ *
+ * Copyright (C) 2024 by Hitachi Vantara, LLC : http://www.pentaho.com
+ *
+ * Use of this software is governed by the Business Source License included
+ * in the LICENSE.TXT file.
+ *
+ * Change Date: 2029-07-20
+ ******************************************************************************/
+
+package org.pentaho.platform.engine.security.authorization.core.resources;
+
+import edu.umd.cs.findbugs.annotations.NonNull;
+import org.pentaho.platform.api.engine.IAuthorizationAction;
+import org.pentaho.platform.api.engine.security.authorization.IAuthorizationUser;
+import org.pentaho.platform.api.engine.security.authorization.resources.IAuthorizationResource;
+import org.pentaho.platform.api.engine.security.authorization.resources.IResourceAuthorizationRequest;
+import org.pentaho.platform.api.engine.security.authorization.resources.IResourceSpecificAuthorizationRequest;
+
+/**
+ * The {@code ResourceSpecificAuthorizationRequest} class is a basic implementation of the
+ * {@link IResourceSpecificAuthorizationRequest} interface.
+ */
+public class ResourceSpecificAuthorizationRequest extends ResourceAuthorizationRequest
+ implements IResourceSpecificAuthorizationRequest {
+
+ /**
+ * Constructs an {@code ResourceSpecificAuthorizationRequest} with the specified user and action name.
+ *
+ * @param resourceRequest The resource request to initialize from.
+ */
+ public ResourceSpecificAuthorizationRequest( @NonNull ResourceAuthorizationRequest resourceRequest ) {
+ super( resourceRequest.getUser(), resourceRequest.getAction(), resourceRequest.getResource() );
+ }
+
+ /**
+ * Constructs an {@code ResourceSpecificAuthorizationRequest} with the specified user and action name.
+ *
+ * @param user The user for whom the authorization is being evaluated.
+ * @param action The action to be evaluated.
+ * @param resource The resource for which the authorization is being evaluated.
+ */
+ public ResourceSpecificAuthorizationRequest( @NonNull IAuthorizationUser user,
+ @NonNull IAuthorizationAction action,
+ @NonNull IAuthorizationResource resource ) {
+ super( user, action, resource );
+ }
+
+ @NonNull
+ @Override
+ public IResourceAuthorizationRequest withAction( @NonNull IAuthorizationAction action ) {
+ return new ResourceSpecificAuthorizationRequest( getUser(), action, getResource() );
+ }
+
+ @NonNull
+ @Override
+ public IResourceAuthorizationRequest withResource( @NonNull IAuthorizationResource resource ) {
+ return new ResourceSpecificAuthorizationRequest( getUser(), getAction(), resource );
+ }
+
+ @NonNull
+ @Override
+ public IResourceSpecificAuthorizationRequest asSpecific() {
+ return this;
+ }
+}
diff --git a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceActionGeneralRequirementAuthorizationRule.java b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceGeneralAuthorizationRule.java
similarity index 75%
rename from core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceActionGeneralRequirementAuthorizationRule.java
rename to core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceGeneralAuthorizationRule.java
index 9070954f35..693d709289 100644
--- a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceActionGeneralRequirementAuthorizationRule.java
+++ b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceGeneralAuthorizationRule.java
@@ -16,11 +16,12 @@
import org.pentaho.platform.api.engine.security.authorization.IAuthorizationContext;
import org.pentaho.platform.api.engine.security.authorization.decisions.IAuthorizationDecision;
import org.pentaho.platform.api.engine.security.authorization.resources.IResourceAuthorizationRequest;
-import org.pentaho.platform.engine.security.authorization.core.decisions.ResourceActionGeneralRequirementAuthorizationDecision;
+import org.pentaho.platform.api.engine.security.authorization.resources.IResourceSpecificAuthorizationRequest;
+import org.pentaho.platform.engine.security.authorization.core.decisions.ResourceGeneralAuthorizationDecision;
import java.util.Optional;
-public class ResourceActionGeneralRequirementAuthorizationRule
+public class ResourceGeneralAuthorizationRule
extends AbstractAuthorizationRule {
@NonNull
@@ -33,9 +34,13 @@ public Class getRequestType() {
@Override
public Optional authorize( @NonNull IResourceAuthorizationRequest resourceRequest,
@NonNull IAuthorizationContext context ) {
+ if ( resourceRequest instanceof IResourceSpecificAuthorizationRequest ) {
+ return abstain();
+ }
+ // Dispatch a corresponding general request.
var generalRequest = resourceRequest.asGeneral();
var generalDecision = context.authorize( generalRequest );
- return Optional.of( new ResourceActionGeneralRequirementAuthorizationDecision( resourceRequest, generalDecision ) );
+ return Optional.of( new ResourceGeneralAuthorizationDecision( resourceRequest, generalDecision ) );
}
}
diff --git a/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceSpecificAuthorizationRule.java b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceSpecificAuthorizationRule.java
new file mode 100644
index 0000000000..ac0ed14d1c
--- /dev/null
+++ b/core/src/main/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceSpecificAuthorizationRule.java
@@ -0,0 +1,47 @@
+/*! ******************************************************************************
+ *
+ * Pentaho
+ *
+ * Copyright (C) 2024 by Hitachi Vantara, LLC : http://www.pentaho.com
+ *
+ * Use of this software is governed by the Business Source License included
+ * in the LICENSE.TXT file.
+ *
+ * Change Date: 2029-07-20
+ ******************************************************************************/
+
+package org.pentaho.platform.engine.security.authorization.core.rules;
+
+import edu.umd.cs.findbugs.annotations.NonNull;
+import org.pentaho.platform.api.engine.security.authorization.IAuthorizationContext;
+import org.pentaho.platform.api.engine.security.authorization.decisions.IAuthorizationDecision;
+import org.pentaho.platform.api.engine.security.authorization.resources.IResourceAuthorizationRequest;
+import org.pentaho.platform.api.engine.security.authorization.resources.IResourceSpecificAuthorizationRequest;
+import org.pentaho.platform.engine.security.authorization.core.decisions.ResourceSpecificAuthorizationDecision;
+
+import java.util.Optional;
+
+public class ResourceSpecificAuthorizationRule
+ extends AbstractAuthorizationRule {
+
+ @NonNull
+ @Override
+ public Class getRequestType() {
+ return IResourceAuthorizationRequest.class;
+ }
+
+ @NonNull
+ @Override
+ public Optional authorize( @NonNull IResourceAuthorizationRequest resourceRequest,
+ @NonNull IAuthorizationContext context ) {
+ // Rule only applies to abstract/effective/top-level resource requests
+ if ( resourceRequest instanceof IResourceSpecificAuthorizationRequest ) {
+ return abstain();
+ }
+
+ // Dispatch a corresponding specific request.
+ var specificRequest = resourceRequest.asSpecific();
+ var specificDecision = context.authorize( specificRequest );
+ return Optional.of( new ResourceSpecificAuthorizationDecision( resourceRequest, specificDecision ) );
+ }
+}
diff --git a/core/src/main/resources/org/pentaho/platform/engine/security/messages/messages.properties b/core/src/main/resources/org/pentaho/platform/engine/security/messages/messages.properties
index 6e4bbb74ec..1f618b844c 100644
--- a/core/src/main/resources/org/pentaho/platform/engine/security/messages/messages.properties
+++ b/core/src/main/resources/org/pentaho/platform/engine/security/messages/messages.properties
@@ -64,6 +64,7 @@ DerivedActionAuthorizationDecision.JUSTIFICATION=From operation {0}
# 0 - the role name
MatchedRoleAuthorizationDecision.JUSTIFICATION=Has role {0}
-ResourceActionGeneralRequirementAuthorizationDecision.JUSTIFICATION=From general permission
+ResourceGeneralAuthorizationDecision.JUSTIFICATION=From general permission
+ResourceSpecificAuthorizationDecision.JUSTIFICATION=From specific permission
AuthorizationErrorDecision.JUSTIFICATION=Authorization error
diff --git a/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceActionGeneralRequirementAuthorizationDecisionTest.java b/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceGeneralAuthorizationDecisionTest.java
similarity index 80%
rename from core/src/test/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceActionGeneralRequirementAuthorizationDecisionTest.java
rename to core/src/test/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceGeneralAuthorizationDecisionTest.java
index bc6f56bf7a..7e8e1c284b 100644
--- a/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceActionGeneralRequirementAuthorizationDecisionTest.java
+++ b/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/decisions/ResourceGeneralAuthorizationDecisionTest.java
@@ -31,7 +31,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public class ResourceActionGeneralRequirementAuthorizationDecisionTest {
+public class ResourceGeneralAuthorizationDecisionTest {
private IAuthorizationRequest request1;
private IAuthorizationRequest request2;
@@ -64,13 +64,13 @@ public void setUp() {
@Test
public void testConstructorAndGetters() {
var grantedRequirementDecision =
- new ResourceActionGeneralRequirementAuthorizationDecision( request2, grantedDecision );
+ new ResourceGeneralAuthorizationDecision( request2, grantedDecision );
assertEquals( request2, grantedRequirementDecision.getRequest() );
assertTrue( grantedRequirementDecision.isGranted() );
assertSame( grantedDecision, grantedRequirementDecision.getDerivedFromDecision() );
var deniedRequirementDecision =
- new ResourceActionGeneralRequirementAuthorizationDecision( request2, deniedDecision );
+ new ResourceGeneralAuthorizationDecision( request2, deniedDecision );
assertEquals( request2, deniedRequirementDecision.getRequest() );
assertFalse( deniedRequirementDecision.isGranted() );
assertSame( deniedDecision, deniedRequirementDecision.getDerivedFromDecision() );
@@ -79,23 +79,23 @@ public void testConstructorAndGetters() {
@Test( expected = NullPointerException.class )
public void testConstructorWithNullRequestThrows() {
//noinspection DataFlowIssue
- new ResourceActionGeneralRequirementAuthorizationDecision( null, grantedDecision );
+ new ResourceGeneralAuthorizationDecision( null, grantedDecision );
}
@Test( expected = NullPointerException.class )
public void testConstructorWithNullDerivedFromDecisionThrows() {
//noinspection DataFlowIssue
- new ResourceActionGeneralRequirementAuthorizationDecision( request2, null );
+ new ResourceGeneralAuthorizationDecision( request2, null );
}
@Test( expected = IllegalArgumentException.class )
public void testConstructorWithSameRequestThrows() {
- new ResourceActionGeneralRequirementAuthorizationDecision( request1, grantedDecision );
+ new ResourceGeneralAuthorizationDecision( request1, grantedDecision );
}
@Test
public void testGetShortJustification() {
- var requirementDecision = new ResourceActionGeneralRequirementAuthorizationDecision( request2, grantedDecision );
+ var requirementDecision = new ResourceGeneralAuthorizationDecision( request2, grantedDecision );
var justification = requirementDecision.getShortJustification();
assertNotNull( justification );
assertFalse( justification.isEmpty() );
@@ -104,19 +104,19 @@ public void testGetShortJustification() {
@Test
public void testToStringFormat() {
var grantedRequirementDecision =
- new ResourceActionGeneralRequirementAuthorizationDecision( request2, grantedDecision );
+ new ResourceGeneralAuthorizationDecision( request2, grantedDecision );
var deniedRequirementDecision =
- new ResourceActionGeneralRequirementAuthorizationDecision( request2, deniedDecision );
+ new ResourceGeneralAuthorizationDecision( request2, deniedDecision );
var grantedString = grantedRequirementDecision.toString();
var deniedString = deniedRequirementDecision.toString();
- assertTrue( grantedString.contains( "ResourceActionGeneralRequirementAuthorizationDecision" ) );
+ assertTrue( grantedString.contains( "ResourceGeneralAuthorizationDecision" ) );
assertTrue( grantedString.contains( "Granted" ) );
assertTrue( grantedString.contains( "from:" ) );
assertTrue( grantedString.contains( "GrantedGeneralDecision" ) );
- assertTrue( deniedString.contains( "ResourceActionGeneralRequirementAuthorizationDecision" ) );
+ assertTrue( deniedString.contains( "ResourceGeneralAuthorizationDecision" ) );
assertTrue( deniedString.contains( "Denied" ) );
assertTrue( deniedString.contains( "from:" ) );
assertTrue( deniedString.contains( "DeniedGeneralDecision" ) );
diff --git a/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceActionGeneralRequirementAuthorizationRuleTest.java b/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceGeneralAuthorizationRuleTest.java
similarity index 84%
rename from core/src/test/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceActionGeneralRequirementAuthorizationRuleTest.java
rename to core/src/test/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceGeneralAuthorizationRuleTest.java
index 24cd9ad344..f440607e3f 100644
--- a/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceActionGeneralRequirementAuthorizationRuleTest.java
+++ b/core/src/test/java/org/pentaho/platform/engine/security/authorization/core/rules/ResourceGeneralAuthorizationRuleTest.java
@@ -19,7 +19,7 @@
import org.pentaho.platform.api.engine.security.authorization.decisions.IAuthorizationDecision;
import org.pentaho.platform.api.engine.security.authorization.resources.IResourceAuthorizationRequest;
import org.pentaho.platform.engine.security.authorization.core.AuthorizationRequest;
-import org.pentaho.platform.engine.security.authorization.core.decisions.ResourceActionGeneralRequirementAuthorizationDecision;
+import org.pentaho.platform.engine.security.authorization.core.decisions.ResourceGeneralAuthorizationDecision;
import org.pentaho.platform.engine.security.authorization.core.resources.GenericAuthorizationResource;
import org.pentaho.platform.engine.security.authorization.core.resources.ResourceAuthorizationRequest;
@@ -32,13 +32,13 @@
import static org.pentaho.platform.engine.security.authorization.core.AuthorizationTestHelpers.createTestAction;
import static org.pentaho.platform.engine.security.authorization.core.AuthorizationTestHelpers.createTestUser;
-public class ResourceActionGeneralRequirementAuthorizationRuleTest {
+public class ResourceGeneralAuthorizationRuleTest {
private IResourceAuthorizationRequest resourceRequest;
private IAuthorizationContext context;
private IAuthorizationRequest generalRequest;
- private ResourceActionGeneralRequirementAuthorizationRule rule;
+ private ResourceGeneralAuthorizationRule rule;
@Before
public void setUp() {
@@ -56,7 +56,7 @@ public void setUp() {
// Mock asGeneral() to return our controlled general request.
when( resourceRequest.asGeneral() ).thenReturn( generalRequest );
- rule = new ResourceActionGeneralRequirementAuthorizationRule();
+ rule = new ResourceGeneralAuthorizationRule();
}
@Test
@@ -75,9 +75,9 @@ public void testAuthorizeWithGrantedGeneralDecision() {
var result = rule.authorize( resourceRequest, context );
assertTrue( result.isPresent() );
- assertTrue( result.get() instanceof ResourceActionGeneralRequirementAuthorizationDecision );
+ assertTrue( result.get() instanceof ResourceGeneralAuthorizationDecision );
- var decision = (ResourceActionGeneralRequirementAuthorizationDecision) result.get();
+ var decision = (ResourceGeneralAuthorizationDecision) result.get();
assertTrue( decision.isGranted() );
assertEquals( resourceRequest, decision.getRequest() );
assertEquals( grantedGeneralDecision, decision.getDerivedFromDecision() );
@@ -94,9 +94,9 @@ public void testAuthorizeWithDeniedGeneralDecision() {
var result = rule.authorize( resourceRequest, context );
assertTrue( result.isPresent() );
- assertTrue( result.get() instanceof ResourceActionGeneralRequirementAuthorizationDecision );
+ assertTrue( result.get() instanceof ResourceGeneralAuthorizationDecision );
- var decision = (ResourceActionGeneralRequirementAuthorizationDecision) result.get();
+ var decision = (ResourceGeneralAuthorizationDecision) result.get();
assertFalse( decision.isGranted() );
assertEquals( resourceRequest, decision.getRequest() );
assertEquals( deniedGeneralDecision, decision.getDerivedFromDecision() );
@@ -106,6 +106,6 @@ public void testAuthorizeWithDeniedGeneralDecision() {
public void testToStringFormat() {
var result = rule.toString();
- assertTrue( result.contains( ResourceActionGeneralRequirementAuthorizationRule.class.getSimpleName() ) );
+ assertTrue( result.contains( ResourceGeneralAuthorizationRule.class.getSimpleName() ) );
}
}