/* * 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.testers; import org.h2.jdbcx.JdbcDataSource; import org.picketlink.idm.config.IdentityConfigurationBuilder; import org.picketlink.idm.internal.DefaultPartitionManager; import org.picketlink.idm.model.basic.Realm; import org.picketlink.idm.model.basic.Role; import org.picketlink.idm.model.basic.User; import java.io.File; import java.sql.Connection; /** * An {@link IdentityConfigurationTester} for {@link org.picketlink.idm.jdbc.internal.JDBCIdentityStore} * @author Anil Saldhana * @since September 25, 2013 */ public class JDBCStoreConfigurationTester implements IdentityConfigurationTester { public static final String SIMPLE_JDBC_STORE_CONFIG = "SIMPLE_JDBC_STORE_CONFIG"; private JdbcDataSource ds = null; @Override public DefaultPartitionManager getPartitionManager() { IdentityConfigurationBuilder builder = new IdentityConfigurationBuilder(); builder.named(SIMPLE_JDBC_STORE_CONFIG).stores().jdbc().setDataSource(ds).supportType(User.class).supportType(Role.class) .supportAllFeatures(); DefaultPartitionManager partitionManager = new DefaultPartitionManager(builder.buildAll()); if (partitionManager.getPartition(Realm.class, Realm.DEFAULT_REALM) == null) { partitionManager.add(new Realm(Realm.DEFAULT_REALM)); } return partitionManager; } private void setupDB(JdbcDataSource ds) throws Exception{ Connection connection = ds.getConnection(); //User connection.createStatement().executeUpdate("drop table if exists User"); connection.createStatement().executeUpdate("create table User(id varchar,firstName varchar,lastName varchar," + "email varchar,loginName varchar,enabled varchar,createdDate timestamp,expirationDate timestamp,partitionID varchar)"); //Role connection.createStatement().executeUpdate("drop table if exists Role"); connection.createStatement().executeUpdate("create table Role(id varchar,name varchar," + "enabled varchar,createdDate timestamp,expirationDate timestamp,partitionID varchar)"); //Group connection.createStatement().executeUpdate("drop table if exists Groups"); connection.createStatement().executeUpdate("create table Groups(id varchar,name varchar," + "enabled varchar,createdDate timestamp,expirationDate timestamp,parentGroup varchar," + "path varchar,partitionID varchar)"); //Partition connection.createStatement().executeUpdate("drop table if exists Partition"); connection.createStatement().executeUpdate("create table Partition(id varchar,name varchar," + "typeName varchar,configurationName varchar)"); //Attribute connection.createStatement().executeUpdate("drop table if exists Attributes"); connection.createStatement().executeUpdate("create table Attributes(owner varchar,name varchar," + "value varchar,attributeType varchar)"); //Relationship connection.createStatement().executeUpdate("drop table if exists Relationship"); connection.createStatement().executeUpdate("create table Relationship(id varchar,relBegin varchar," + "relEnd varchar,type varchar,enabled varchar)"); } @Override public void beforeTest() { // Construct DataSource ds = new JdbcDataSource(); ds.setURL("jdbc:h2:file:~/picketlink-idm-jdbc"); ds.setUser("sa"); ds.setPassword(""); //Create Tables try { setupDB(ds); } catch (Exception e) { throw new RuntimeException(e); } } @Override public void afterTest() { ds = null; File dbFile = new File(System.getProperty("user.home") + "/" + "picketlink-idm-jdbc.h2.db"); dbFile.delete(); File traceFile = new File(System.getProperty("user.home") + "/" + "picketlink-idm-jdbc.trace.db"); traceFile.delete(); } }