001 package liquibase.maven; 002 003 import java.io.IOException; 004 import java.io.File; 005 import org.apache.maven.it.VerificationException; 006 007 import org.apache.maven.it.Verifier; 008 import org.apache.maven.it.util.ResourceExtractor; 009 import org.junit.Test; 010 import liquibase.database.Database; 011 import liquibase.database.DatabaseConnection; 012 import liquibase.database.DatabaseFactory; 013 import liquibase.test.DatabaseTestContext; 014 import org.junit.Before; 015 import static org.junit.Assert.*; 016 017 /** 018 * Maven integration test. Run an update executing maven as if it was ran by the user 019 * @author lujop 020 */ 021 public class MavenIntegrationTest { 022 private static final String URL="jdbc:hsqldb:file:target/test-classes/maven/liquibase;shutdown=true"; 023 024 @Before 025 public void cleanDatabase() throws Exception { 026 DatabaseConnection connection = DatabaseTestContext.getInstance().getConnection(URL); 027 assertNotNull(connection); 028 Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection); 029 database.dropDatabaseObjects(null); 030 database.close(); 031 DatabaseFactory.reset(); 032 } 033 034 @Test 035 public void testUpdate() throws Exception{ 036 Verifier verifier=createVerifier(); 037 038 verifier.executeGoal( "clean" ); 039 verifier.executeGoal( "install" ); 040 041 //Verify everithing has gone well. 042 verifier.verifyErrorFreeLog(); 043 044 //Reset the streams before executing the verifier 045 verifier.resetStreams(); 046 } 047 048 @Test 049 public void testRollbackTag() throws Exception { 050 Verifier verifier= createVerifier(); 051 052 053 verifier.executeGoal("clean"); 054 verifier.executeGoal("liquibase:tag"); 055 verifier.executeGoal("package"); //runs update that is bound to test phase 056 verifier.executeGoal("liquibase:rollback"); 057 //If we can reupdate rollback has succeded 058 verifier.executeGoal("liquibase:update"); 059 060 //Verify everithing has gone well. 061 verifier.verifyErrorFreeLog(); 062 063 //Reset the streams before executing the verifier 064 verifier.resetStreams(); 065 } 066 067 private Verifier createVerifier() throws IOException, VerificationException { 068 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/maven" ); 069 070 //Clear any artifact created by the test project to avoid unstable test results 071 Verifier verifier = new Verifier(testDir.getAbsolutePath()); 072 verifier.setAutoclean(false); //Don't do clean automatically in each executeGoal 073 verifier.deleteArtifact("org.liquibase", "liquibase-maven-integration-tests", "1.0-SNAPSHOT", "jar"); 074 return verifier; 075 } 076 077 }