/**
* JBoss, Home of Professional Open Source
* Copyright Red Hat, Inc., and individual contributors.
*
* 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.jboss.aerogear.unifiedpush.migrator;
import static liquibase.util.SystemUtils.IS_OS_WINDOWS;
import static org.junit.Assume.assumeTrue;
import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.database.DatabaseFactory;
import liquibase.resource.FileSystemResourceAccessor;
import liquibase.resource.ResourceAccessor;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class MigratorTest {
private Database database;
private ResourceAccessor resourceAccessor;
private EmbeddedMysqlDatabase embeddedMysqlDatabase;
@Before
public void init() throws Exception {
initResourceAccessor();
initDatabase();
}
private void initResourceAccessor() {
String baseDir = "target/classes/liquibase";
resourceAccessor = new FileSystemResourceAccessor(baseDir);
}
private void initDatabase() throws Exception {
String url = System.getProperty("jdbc.url");
String username = System.getProperty("jdbc.username", "unifiedpush");
String password = System.getProperty("jdbc.password", "unifiedpush");
if (url == null) {
assumeTrue("Skip test on Windows, because mysql-connector-mxj has issue on new versions, see http://stackoverflow.com/questions/9520536/missingresourceexception-running-mxj-for-mysql for more details.", !IS_OS_WINDOWS);
embeddedMysqlDatabase = new EmbeddedMysqlDatabase();
embeddedMysqlDatabase.start("unifiedpush");
url = embeddedMysqlDatabase.getUrl();
username = "root";
password = "";
}
database = DatabaseFactory.getInstance().openDatabase(url, username, password, null, resourceAccessor);
}
@After
public void close() throws Exception {
if (database != null) {
database.close();
}
if (embeddedMysqlDatabase != null) {
embeddedMysqlDatabase.close();
}
}
@Test
public void shouldCreateDatabaseFromScratch() throws Exception {
String changeLogFile = "master.xml";
Liquibase liquibase = new Liquibase(changeLogFile, resourceAccessor, database);
liquibase.dropAll();
liquibase.update("");
}
}