/* * ***************************************************************************** * Cloud Foundry * Copyright (c) [2009-2015] Pivotal Software, Inc. All Rights Reserved. * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. * ***************************************************************************** */ package org.cloudfoundry.identity.uaa.db; import org.cloudfoundry.identity.uaa.mock.InjectedMockContextTest; import org.cloudfoundry.identity.uaa.scim.ScimGroup; import org.cloudfoundry.identity.uaa.scim.ScimGroupMember; import org.cloudfoundry.identity.uaa.scim.ScimUser; import org.cloudfoundry.identity.uaa.scim.endpoints.ScimGroupEndpoints; import org.cloudfoundry.identity.uaa.scim.endpoints.ScimUserEndpoints; import org.cloudfoundry.identity.uaa.zone.IdentityZone; import org.cloudfoundry.identity.uaa.zone.IdentityZoneEndpoints; import org.cloudfoundry.identity.uaa.zone.IdentityZoneHolder; import org.cloudfoundry.identity.uaa.zone.MultitenancyFixture; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.security.oauth2.common.util.RandomValueStringGenerator; import org.springframework.validation.AbstractBindingResult; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import static org.hamcrest.CoreMatchers.is; public class TestZonifyGroupSchema_V2_4_1 extends InjectedMockContextTest { public static final int ENTITY_COUNT = 5; @Before public void populateDataUsingEndpoints() throws Exception { RandomValueStringGenerator generator = new RandomValueStringGenerator(16); Map<IdentityZone,List<ScimGroup>> zones = new HashMap<>(); for (int i=0; i<ENTITY_COUNT; i++) { String subdomain = generator.generate(); IdentityZone zone = MultitenancyFixture.identityZone(subdomain, subdomain); getWebApplicationContext().getBean(IdentityZoneEndpoints.class).createIdentityZone(zone, new AbstractBindingResult(null) { @Override public Object getTarget() { return null; } @Override protected Object getActualFieldValue(String field) { return null; } }); List<ScimGroup> groups = new LinkedList<>(); IdentityZoneHolder.set(zone); for (int j=0; j<ENTITY_COUNT; j++) { ScimGroup group = new ScimGroup(null, generator.generate(), null); group = getWebApplicationContext().getBean(ScimGroupEndpoints.class).createGroup(group, new MockHttpServletResponse()); groups.add(group); } zones.put(zone, groups); IdentityZoneHolder.clear(); } Map<IdentityZone, List<ScimUser>> zoneUsers = new HashMap<>(); for (Map.Entry<IdentityZone, List<ScimGroup>> zone : zones.entrySet()) { List<ScimUser> users = new LinkedList<>(); for (int i=0; i<ENTITY_COUNT; i++) { String id = generator.generate(); String email = id + "@test.org"; ScimUser user = new ScimUser(null, id, id, id); user.setPrimaryEmail(email); user.setPassword(id); try { IdentityZoneHolder.set(zone.getKey()); user = getWebApplicationContext().getBean(ScimUserEndpoints.class).createUser(user, new MockHttpServletRequest(), new MockHttpServletResponse()); users.add(user); ScimGroupMember member = new ScimGroupMember(user.getId()); ScimGroup group = getWebApplicationContext().getBean(ScimGroupEndpoints.class).getGroup(zone.getValue().get(i).getId(), new MockHttpServletResponse()); group.setMembers(Arrays.asList(member)); getWebApplicationContext().getBean(ScimGroupEndpoints.class).updateGroup(group, group.getId(),String.valueOf(group.getVersion()), new MockHttpServletResponse()); }finally { IdentityZoneHolder.clear(); } } zoneUsers.put(zone.getKey(), users); } } @Test public void test_Ensure_That_New_Fields_NotNull() throws Exception { Assert.assertThat(getWebApplicationContext().getBean(JdbcTemplate.class).queryForObject("SELECT count(*) FROM external_group_mapping WHERE origin IS NULL", Integer.class), is(0)); Assert.assertThat(getWebApplicationContext().getBean(JdbcTemplate.class).queryForObject("SELECT count(*) FROM groups WHERE identity_zone_id IS NULL", Integer.class), is(0)); } }