diff --git a/integration-tests/liquibase/src/main/java/io/quarkus/it/liquibase/LiquibaseFunctionalityResource.java b/integration-tests/liquibase/src/main/java/io/quarkus/it/liquibase/LiquibaseFunctionalityResource.java index 5ac440f938368..501fbdb58a82f 100644 --- a/integration-tests/liquibase/src/main/java/io/quarkus/it/liquibase/LiquibaseFunctionalityResource.java +++ b/integration-tests/liquibase/src/main/java/io/quarkus/it/liquibase/LiquibaseFunctionalityResource.java @@ -2,7 +2,7 @@ import java.sql.Connection; import java.sql.ResultSet; -import java.sql.SQLException; +import java.sql.Statement; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -33,7 +33,7 @@ public class LiquibaseFunctionalityResource { @Inject @DataSource("second") - AgroalDataSource dataSource; + AgroalDataSource secondDataSource; @GET @Path("update") @@ -46,6 +46,7 @@ public String doUpdateAuto() { liquibaseFactory.createLabels()); List changeSets = Objects.requireNonNull(status, "ChangeSetStatus is null! Database update was not applied"); + return changeSets.stream() .filter(ChangeSetStatus::getPreviouslyRan) .map(ChangeSetStatus::getChangeSet) @@ -65,29 +66,22 @@ public String updateWithDedicatedUser() { liquibaseSecondFactory.createLabels()); List changeSets = Objects.requireNonNull(status, "ChangeSetStatus is null! Database update was not applied"); - return changeSets.stream() - .filter(ChangeSetStatus::getPreviouslyRan) - .map(ChangeSetStatus::getChangeSet) - .map(ChangeSet::getId) - .collect(Collectors.joining(",")); + + try (Connection connection = secondDataSource.getConnection()) { + try (Statement s = connection.createStatement()) { + ResultSet rs = s.executeQuery("SELECT CREATEDBY FROM QUARKUS_TABLE WHERE ID = 1"); + if (rs.next()) { + return rs.getString("CREATEDBY"); + } + return null; + } + } } catch (Exception ex) { throw new WebApplicationException(ex.getMessage(), ex); } } - @GET - @Path("created-by") - public String returnCreatedByUser() throws SQLException { - try (Connection connection = dataSource.getConnection()) { - ResultSet s = connection.createStatement().executeQuery("SELECT CREATEDBY FROM QUARKUS_TABLE WHERE ID = 1"); - if (s.next()) { - return s.getString("CREATEDBY"); - } - return null; - } - } - private void assertCommandScopeResolvesProperly() { try { new CommandScope("dropAll"); diff --git a/integration-tests/liquibase/src/main/resources/application.properties b/integration-tests/liquibase/src/main/resources/application.properties index a357b4c04ebf7..036f9cef122dc 100644 --- a/integration-tests/liquibase/src/main/resources/application.properties +++ b/integration-tests/liquibase/src/main/resources/application.properties @@ -2,12 +2,12 @@ quarkus.datasource.db-kind=h2 quarkus.datasource.username=sa quarkus.datasource.password=sa -quarkus.datasource.jdbc.url=jdbc:h2:mem:test +quarkus.datasource.jdbc.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 # Second datasource quarkus.datasource.second.db-kind=h2 -quarkus.datasource.second.username=sa -quarkus.datasource.second.password=sa +quarkus.datasource.second.username=readonly +quarkus.datasource.second.password=readonly quarkus.datasource.second.jdbc.url=jdbc:h2:mem:second;INIT=RUNSCRIPT FROM 'src/main/resources/db/second/initdb.sql' # Liquibase config properties @@ -18,7 +18,7 @@ quarkus.liquibase.database-change-log-lock-table-name=changelog_lock quarkus.liquibase.database-change-log-table-name=changelog # Config for second datasource with different user / password -quarkus.liquibase.second.username=usr +quarkus.liquibase.second.username=admin quarkus.liquibase.second.password=pass quarkus.liquibase.second.change-log=db/second/changeLog.xml quarkus.liquibase.second.clean-at-start=false diff --git a/integration-tests/liquibase/src/main/resources/db/second/initdb.sql b/integration-tests/liquibase/src/main/resources/db/second/initdb.sql index ba7afae2a27d8..f1f2c732613c6 100644 --- a/integration-tests/liquibase/src/main/resources/db/second/initdb.sql +++ b/integration-tests/liquibase/src/main/resources/db/second/initdb.sql @@ -1,2 +1,5 @@ -CREATE USER IF NOT EXISTS usr PASSWORD 'pass' ADMIN; -GRANT ALL ON SCHEMA PUBLIC TO usr; \ No newline at end of file +CREATE USER IF NOT EXISTS admin PASSWORD 'pass' ADMIN; +GRANT ALL ON SCHEMA PUBLIC TO admin; + +CREATE USER IF NOT EXISTS readonly PASSWORD 'readonly' ADMIN; +GRANT SELECT ON SCHEMA PUBLIC TO readonly; \ No newline at end of file diff --git a/integration-tests/liquibase/src/test/java/io/quarkus/it/liquibase/LiquibaseFunctionalityTest.java b/integration-tests/liquibase/src/test/java/io/quarkus/it/liquibase/LiquibaseFunctionalityTest.java index f2b7ccfe6a5ad..447537cdef628 100644 --- a/integration-tests/liquibase/src/test/java/io/quarkus/it/liquibase/LiquibaseFunctionalityTest.java +++ b/integration-tests/liquibase/src/test/java/io/quarkus/it/liquibase/LiquibaseFunctionalityTest.java @@ -5,8 +5,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.DisabledOnOs; -import org.junit.jupiter.api.condition.OS; import io.quarkus.test.junit.QuarkusTest; @@ -22,13 +20,9 @@ public void testLiquibaseQuarkusFunctionality() { @Test @DisplayName("Migrates a schema correctly using dedicated username and password from config properties") - @DisabledOnOs(value = OS.WINDOWS, disabledReason = "Our Windows CI does not have Docker installed properly") public void testLiquibaseUsingDedicatedUsernameAndPassword() { when().get("/liquibase/updateWithDedicatedUser").then().body(is( - "create-quarkus-table,insert-into-quarkus-table")); - - when().get("/liquibase/created-by").then().body(is( - "USR")); + "ADMIN")); } static void doTestLiquibaseQuarkusFunctionality(boolean isIncludeAllExpectedToWork) {