/* * JBoss, Home of Professional Open Source * * Copyright 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.picketlink.test.idm.identitymodel.complex; import org.junit.Test; import org.picketlink.idm.IdentityManager; import org.picketlink.idm.RelationshipManager; import org.picketlink.test.idm.identitymodel.complex.model.Application; import org.picketlink.test.idm.identitymodel.complex.model.ApplicationAuthorization; import org.picketlink.test.idm.identitymodel.complex.model.Company; import org.picketlink.test.idm.identitymodel.complex.model.EmployeeUser; import org.picketlink.idm.query.RelationshipQuery; import org.picketlink.test.idm.AbstractPartitionManagerTestCase; import org.picketlink.test.idm.Configuration; import org.picketlink.test.idm.testers.IdentityConfigurationTester; import org.picketlink.test.idm.testers.JPAStoreComplexSchemaConfigurationTester; import java.util.Date; import java.util.List; import static org.junit.Assert.*; /** * <p> * Test case for custom {@link org.picketlink.idm.model.Relationship} types. * </p> * * @author <a href="mailto:psilva@redhat.com">Pedro Silva</a> * */ @Configuration(include = JPAStoreComplexSchemaConfigurationTester.class) public class ApplicationAuthorizationTestCase extends AbstractPartitionManagerTestCase { private ComplexSchemaHelper helper; public ApplicationAuthorizationTestCase(IdentityConfigurationTester builder) { super(builder); } @Override public void onBefore() { super.onBefore(); this.helper = new ComplexSchemaHelper("Acme", "acme.com", getVisitor()); } @Test public void testCreate() throws Exception { EmployeeUser user = this.helper.createEmployeeUser("Chuck", "Norris", "chuck", this.helper.getSecurityOrgUnit()); IdentityManager identityManager = getIdentityManager(); Application application = new Application("Employee Manager"); identityManager.add(application); ApplicationAuthorization authorization = new ApplicationAuthorization(); authorization.setAccount(user); authorization.setApplication(application); Company company = (Company) user.getPartition(); authorization.setProfileUrl("http://app@" + company.getDomain() + "/" + user.getUserName()); RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager(); relationshipManager.add(authorization); RelationshipQuery<ApplicationAuthorization> query = relationshipManager.createRelationshipQuery(ApplicationAuthorization.class); List<ApplicationAuthorization> result = query.getResultList(); assertEquals(1, result.size()); assertEquals(authorization.getAccount().getId(), result.get(0).getAccount().getId()); assertEquals(authorization.getApplication().getId(), result.get(0).getApplication().getId()); assertEquals(authorization.getApplication().getCreatedDate(), result.get(0).getApplication().getCreatedDate()); assertEquals("http://app@acme.com/chuck", result.get(0).getProfileUrl()); } @Test public void testFindByIdentity() throws Exception { EmployeeUser chuck = this.helper.createEmployeeUser("Chuck", "Norris", "chuck", this.helper.getSecurityOrgUnit()); IdentityManager identityManager = getIdentityManager(); Application application = new Application("Employee Manager"); identityManager.add(application); ApplicationAuthorization chuckAuthorization = new ApplicationAuthorization(); chuckAuthorization.setAccount(chuck); chuckAuthorization.setApplication(application); RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager(); relationshipManager.add(chuckAuthorization); RelationshipQuery<ApplicationAuthorization> query = relationshipManager.createRelationshipQuery(ApplicationAuthorization.class); List<ApplicationAuthorization> result = query.getResultList(); assertEquals(1, result.size()); assertEquals(chuck.getId(), result.get(0).getAccount().getId()); assertEquals(chuckAuthorization.getApplication().getId(), result.get(0).getApplication().getId()); EmployeeUser mary = this.helper.createEmployeeUser("Mary", "Anne", "mary", this.helper.getSecurityOrgUnit()); ApplicationAuthorization maryAuthorization = new ApplicationAuthorization(); maryAuthorization.setAccount(mary); maryAuthorization.setApplication(application); relationshipManager.add(maryAuthorization); query = relationshipManager.createRelationshipQuery(ApplicationAuthorization.class); result = query.getResultList(); assertEquals(2, result.size()); query = relationshipManager.createRelationshipQuery(ApplicationAuthorization.class); query.setParameter(ApplicationAuthorization.ACCOUNT, chuck); result = query.getResultList(); assertEquals(1, result.size()); assertEquals(chuck.getId(), result.get(0).getAccount().getId()); } @Test public void testExpiration() throws Exception { EmployeeUser user = this.helper.createEmployeeUser("Chuck", "Norris", "chuck", this.helper.getSecurityOrgUnit()); IdentityManager identityManager = getIdentityManager(); Application application = new Application("Employee Manager"); identityManager.add(application); ApplicationAuthorization authorization = new ApplicationAuthorization(); authorization.setAccount(user); authorization.setApplication(application); RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager(); relationshipManager.add(authorization); RelationshipQuery<ApplicationAuthorization> query = relationshipManager.createRelationshipQuery(ApplicationAuthorization.class); List<ApplicationAuthorization> result = query.getResultList(); assertEquals(1, result.size()); assertNull(authorization.getApplication().getExpirationDate()); authorization.setExpirationDate(new Date()); relationshipManager.update(authorization); query = relationshipManager.createRelationshipQuery(ApplicationAuthorization.class); result = query.getResultList(); assertEquals(1, result.size()); assertEquals(authorization.getExpirationDate(), result.get(0).getExpirationDate()); } @Override public IdentityManager getIdentityManager() { return this.helper.getIdentityManager(); } }