use of com.sun.identity.entitlement.Application in project OpenAM by OpenRock.
the class UpgradeEntitlementSubConfigsStep method addChangedConditions.
/**
* Clears the conditions currently associated with an application, then replaces them with
* the new set of conditions defined.
*
* @throws UpgradeException If there was an error while updating the application.
*/
private void addChangedConditions() throws UpgradeException {
for (final Map.Entry<String, Set<String>> entry : changedConditions.entrySet()) {
final String name = entry.getKey();
final Set<String> conditions = entry.getValue();
try {
UpgradeProgress.reportStart(AUDIT_MODIFIED_CON_START, name);
if (DEBUG.messageEnabled()) {
DEBUG.message("Modifying application " + name + " ; adding conditions: " + conditions);
}
final Application application = getApplication(name);
application.setConditions(conditions);
entitlementService.storeApplication(application);
UpgradeProgress.reportEnd(AUDIT_UPGRADE_SUCCESS);
} catch (EntitlementException ee) {
UpgradeProgress.reportEnd(AUDIT_UPGRADE_FAIL);
throw new UpgradeException(ee);
}
}
}
use of com.sun.identity.entitlement.Application in project OpenAM by OpenRock.
the class RemoveReferralsStepTest method simpleSuccessfulPassThrough.
@Test
public void simpleSuccessfulPassThrough() throws Exception {
// Given
given(connectionFactory.create()).willReturn(connection);
given(connection.search(isA(SearchRequest.class))).willReturn(entryReader);
given(entryReader.hasNext()).willReturn(true).willReturn(false);
given(entryReader.readEntry()).willReturn(resultEntry);
given(resultEntry.getName()).willReturn(DN.valueOf("ou=test,ou=forgerock,ou=org"));
JsonValue jsonValue = json(object(field("name", "ref"), field("mapApplNameToResources", object(field("app1", array("*://*:*/*")))), field("realms", array("/a"))));
Set<String> values = singleton("serializable=" + jsonValue.toString());
Attribute attribute = new LinkedAttribute("ou", values);
AttributeParser attributeParser = AttributeParser.parseAttribute(attribute);
given(resultEntry.parseAttribute("sunKeyValue")).willReturn(attributeParser);
Application app1 = new Application();
app1.setName("app1");
app1.addAllResourceTypeUuids(singleton("123"));
given(applicationService.getApplication(isA(Subject.class), eq("/"), eq("app1"))).willReturn(app1);
given(policyServiceFactory.get(eq("/a"), isA(Subject.class))).willReturn(policyService);
Privilege policy1 = new OpenSSOPrivilege();
policy1.setName("pol1");
given(policyService.findAllPoliciesByApplication("app1")).willReturn(singletonList(policy1));
ResourceType resourceType1 = ResourceType.builder().setName("resourceType1").setUUID("123").build();
given(resourceTypeService.getResourceType(isA(Subject.class), eq("/"), eq("123"))).willReturn(resourceType1);
// When
testStep.initialize();
boolean isApplicable = testStep.isApplicable();
testStep.perform();
String shortReport = testStep.getShortReport("");
String longReport = testStep.getDetailedReport("");
// Then
assertThat(isApplicable).isTrue();
assertThat(shortReport).containsSequence("applications to be cloned", "Referrals found");
assertThat(longReport).containsSequence("app1", "ou=test,ou=forgerock,ou=org");
verify(resourceTypeService).saveResourceType(isA(Subject.class), eq("/a"), resourceTypeCaptor.capture());
verify(applicationService).saveApplication(isA(Subject.class), eq("/a"), applicationCaptor.capture());
verify(policyService).modify(policyCaptor.capture());
ResourceType clonedResourceType = resourceTypeCaptor.getValue();
assertThat(clonedResourceType).isNotEqualTo(resourceType1);
assertThat(clonedResourceType.getName()).isEqualTo("resourceType1");
Application clonedApplication = applicationCaptor.getValue();
assertThat(clonedApplication).isNotEqualTo(app1);
assertThat(clonedApplication.getName()).isEqualTo("app1");
assertThat(clonedApplication.getResourceTypeUuids()).containsExactly(clonedResourceType.getUUID());
Privilege modifiedPolicy = policyCaptor.getValue();
assertThat(modifiedPolicy).isEqualTo(modifiedPolicy);
assertThat(modifiedPolicy.getResourceTypeUuid()).isEqualTo(clonedResourceType.getUUID());
verify(connection).delete(deleteRequestCaptor.capture());
DeleteRequest request = deleteRequestCaptor.getValue();
assertThat(request.getName().toString()).isEqualTo("ou=test,ou=forgerock,ou=org");
}
use of com.sun.identity.entitlement.Application in project OpenAM by OpenRock.
the class UpgradeResourceTypeStep method perform.
/**
* {@inheritDoc}
*/
@Override
public void perform() throws UpgradeException {
for (Map.Entry<String, Set<ResourceTypeState>> entry : resourceTypeStatePerRealm.entrySet()) {
final String realm = entry.getKey();
final EntitlementConfiguration ec = EntitlementConfiguration.getInstance(getAdminSubject(), realm);
final PrivilegeManager pm = PrivilegeManager.getInstance(realm, getAdminSubject());
for (ResourceTypeState state : entry.getValue()) {
if (state.applicationNeedsResourceType) {
ResourceType resourceType = createResourceType(state, realm);
upgradeApplication(ec, state.appName, resourceType.getUUID());
// Application modified, clear cache.
ApplicationManager.clearCache(realm);
}
if (state.policiesNeedsResourceType) {
final Application application = ec.getApplication(state.appName);
final Set<String> uuids = application.getResourceTypeUuids();
if (!uuids.isEmpty()) {
// there should only be one resource type associated with the application at this stage
upgradePrivileges(pm, state.appName, uuids.iterator().next());
}
}
}
}
}
use of com.sun.identity.entitlement.Application in project OpenAM by OpenRock.
the class UpgradeEntitlementSubConfigsStepTest method setUp.
@BeforeMethod
public void setUp() throws IllegalAccessException, InstantiationException {
mockTypes = new HashSet<ApplicationType>(3);
final ApplicationType type1 = newType("type1");
final ApplicationType type2 = newType("type2");
final ApplicationType type3 = newType("type3");
mockTypes.addAll(Arrays.asList(type1, type2, type3));
this.type1 = type1;
mockApplications = new HashSet<Application>(3);
final Application application1 = newApplication("application1", type1);
final Application application2 = newApplication("application2", type1);
final Application application3 = newApplication("application3", type1);
mockApplications.addAll(Arrays.asList(application1, application2, application3));
entitlementService = mock(EntitlementConfiguration.class);
adminTokenAction = mock(PrivilegedAction.class);
connectionFactory = mock(ConnectionFactory.class);
resourceTypeConfiguration = mock(ResourceTypeConfiguration.class);
upgradeStep = new SafeUpgradeEntitlementSubConfigsStep(entitlementService, resourceTypeConfiguration, adminTokenAction, connectionFactory);
final HashSet<String> conditions = new HashSet<String>();
conditions.add("condition.entry.1");
conditions.add("condition.entry.2");
final HashSet<String> subjects = new HashSet<String>();
subjects.add("subject.entry.1");
subjects.add("subject.entry.2");
final HashSet<String> resources = new HashSet<String>();
resources.add("http://*");
resources.add("https://*");
app = newApplication("application4", type1);
app.setConditions(conditions);
app.setSubjects(subjects);
app.setEntitlementCombinerName(DEFAULT_COMBINER);
}
use of com.sun.identity.entitlement.Application in project OpenAM by OpenRock.
the class PolicyV1Filter method retrieveResourceType.
/**
* Retrieves the resource type Id from the containing application
* and sets it within the policies' JSON representation.
*
* @param jsonValue
* the policies' JSON representation
* @param callingSubject
* the calling subject
* @param realm
* the realm
*
* @throws EntitlementException
* should some policy error occur
* @throws ResourceException
* should some violation occur that doesn't satisfy policy v1.0
*/
private void retrieveResourceType(JsonValue jsonValue, Subject callingSubject, String realm) throws EntitlementException, ResourceException {
final String applicationName = jsonValue.get("applicationName").asString();
if (applicationName == null) {
throw new BadRequestException("Invalid application name defined in request");
}
final ApplicationService applicationService = applicationServiceFactory.create(callingSubject, realm);
final Application application = applicationService.getApplication(applicationName);
if (application == null) {
throw new NotFoundException("Unable to find application " + applicationName);
}
if (application.getResourceTypeUuids().size() != 1) {
throw new BadRequestException("Cannot create policy under an application with more than " + "one resource type using version 1.0 of this endpoint");
}
// Retrieve the resource type from the applications single resource type.
final String resourceTypeUuid = application.getResourceTypeUuids().iterator().next();
jsonValue.put(RESOURCE_TYPE_UUID, resourceTypeUuid);
}
Aggregations