import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Collection;
+import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
return true;
}
+ // Sort the Policies list based on index
+ policiesList.sort(Comparator.comparing(org.opendaylight.yang.gen.v1.urn
+ .opendaylight.params.xml.ns.yang.aaa.rev161214.http
+ .authorization.policies.Policies::getIndex));
+
for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214.http.authorization
.policies.Policies policy : policiesList) {
final String resource = policy.getResource();
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214.http.authorization.Policies;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214.http.permission.Permissions;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.common.Uint32;
/**
* Tests the Dynamic Authorization Filter.
org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214.http.authorization
.policies.Policies.class);
when(innerPolicies.getResource()).thenReturn(resource);
+ when(innerPolicies.getIndex()).thenReturn(Uint32.valueOf(5));
when(innerPolicies.getDescription()).thenReturn(description);
when(innerPolicies.getPermissions()).thenReturn(permissionsList);
final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214.http.authorization
org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214.http.authorization
.policies.Policies.class);
when(innerPolicies2.getResource()).thenReturn(resource2);
+ when(innerPolicies2.getIndex()).thenReturn(Uint32.valueOf(10));
final Permissions permissions2 = mock(Permissions.class);
when(permissions2.getRole()).thenReturn("dog");
when(permissions2.getActions()).thenReturn(actionsList);
// because the Subject making the request is not granted the "dog" role.
policiesList = Lists.newArrayList(innerPolicies2, innerPolicies);
when(policies.getPolicies()).thenReturn(policiesList);
+ // Modify Index to ensure the innerPolicies2 actually gets
+ // used instead of innerPolicies
+ when(innerPolicies2.getIndex()).thenReturn(Uint32.valueOf(4));
when(request.getRequestURI()).thenReturn("/abc");
assertTrue(filter.isAccessAllowed(request, null, null));
when(request.getRequestURI()).thenReturn("/specialendpoint");