Skip to content

Commit 8c5a25e

Browse files
committed
Merge branch '3.5.x'
Closes gh-47347
2 parents db10e3d + 30d3889 commit 8c5a25e

File tree

2 files changed

+56
-32
lines changed

2 files changed

+56
-32
lines changed

module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
* {@link Endpoint @Endpoint} to expose liquibase info.
4545
*
4646
* @author Eddú Meléndez
47+
* @author Nabil Fawwaz Elqayyim
4748
* @since 4.0.0
4849
*/
4950
@Endpoint(id = "liquibase")
@@ -80,9 +81,10 @@ private LiquibaseBeanDescriptor createReport(SpringLiquibase liquibase, Database
8081
Database database = null;
8182
try {
8283
database = factory.findCorrectDatabaseImplementation(connection);
83-
String defaultSchema = liquibase.getDefaultSchema();
84-
if (StringUtils.hasText(defaultSchema)) {
85-
database.setDefaultSchemaName(defaultSchema);
84+
String schemaToUse = StringUtils.hasText(liquibase.getLiquibaseSchema())
85+
? liquibase.getLiquibaseSchema() : liquibase.getDefaultSchema();
86+
if (StringUtils.hasText(schemaToUse)) {
87+
database.setDefaultSchemaName(schemaToUse);
8688
}
8789
database.setDatabaseChangeLogTableName(liquibase.getDatabaseChangeLogTable());
8890
database.setDatabaseChangeLogLockTableName(liquibase.getDatabaseChangeLogLockTable());

module/spring-boot-liquibase/src/test/java/org/springframework/boot/liquibase/actuate/endpoint/LiquibaseEndpointTests.java

Lines changed: 51 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import java.sql.Connection;
2020
import java.sql.SQLException;
21-
import java.util.Arrays;
21+
import java.util.List;
2222
import java.util.Map;
2323
import java.util.UUID;
2424

@@ -35,7 +35,9 @@
3535
import org.springframework.boot.liquibase.endpoint.LiquibaseEndpoint;
3636
import org.springframework.boot.liquibase.endpoint.LiquibaseEndpoint.LiquibaseBeanDescriptor;
3737
import org.springframework.boot.sql.init.DatabaseInitializationSettings;
38+
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3839
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
40+
import org.springframework.boot.test.context.runner.ContextConsumer;
3941
import org.springframework.boot.testsupport.classpath.resources.WithResource;
4042
import org.springframework.context.ApplicationContext;
4143
import org.springframework.context.annotation.Bean;
@@ -66,14 +68,7 @@ class LiquibaseEndpointTests {
6668

6769
@Test
6870
void liquibaseReportIsReturned() {
69-
this.contextRunner.withUserConfiguration(Config.class).run((context) -> {
70-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
71-
.liquibaseBeans()
72-
.getContexts()
73-
.get(context.getId())
74-
.getLiquibaseBeans();
75-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
76-
});
71+
this.contextRunner.withUserConfiguration(Config.class).run(hasEndpointWithInitializedSchema());
7772
}
7873

7974
@Test
@@ -91,33 +86,60 @@ void liquibaseReportIsReturnedForContextHierarchy() {
9186
}
9287

9388
@Test
94-
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOMSCHEMA;")
95-
void invokeWithCustomSchema() {
89+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
90+
void invokeWithCustomDefaultSchemaFailsIfItDoesNotExist() {
9691
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
97-
.withPropertyValues("spring.liquibase.default-schema=CUSTOMSCHEMA")
98-
.run((context) -> {
99-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
100-
.liquibaseBeans()
101-
.getContexts()
102-
.get(context.getId())
103-
.getLiquibaseBeans();
104-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
105-
});
92+
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_DEFAULT_SCHEMA")
93+
.run((context) -> assertThat(context).hasFailed()
94+
.getFailure()
95+
.rootCause()
96+
.hasMessageContaining("CUSTOM_DEFAULT_SCHEMA"));
97+
}
98+
99+
@Test
100+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA CUSTOM_SCHEMA;")
101+
void invokeWithCustomDefaultSchema() {
102+
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
103+
.withPropertyValues("spring.liquibase.default-schema=CUSTOM_SCHEMA")
104+
.run(hasEndpointWithInitializedSchema());
105+
}
106+
107+
@Test
108+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA ANOTHER_SCHEMA;")
109+
void invokeWithLiquibaseSchemaFailsIfItDoesNotExist() {
110+
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
111+
.withPropertyValues("spring.liquibase.liquibase-schema=CUSTOM_LIQUIBASE_SCHEMA")
112+
.run((context) -> assertThat(context).hasFailed()
113+
.getFailure()
114+
.rootCause()
115+
.hasMessageContaining("CUSTOM_LIQUIBASE_SCHEMA"));
116+
}
117+
118+
@Test
119+
@WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA LIQUIBASE_SCHEMA;")
120+
void invokeWithLiquibaseSchema() {
121+
this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class)
122+
.withPropertyValues("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA")
123+
.run(hasEndpointWithInitializedSchema());
106124
}
107125

108126
@Test
109127
void invokeWithCustomTables() {
110128
this.contextRunner.withUserConfiguration(Config.class)
111129
.withPropertyValues("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock",
112130
"spring.liquibase.database-change-log-table=liquibase_database_changelog")
113-
.run((context) -> {
114-
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
115-
.liquibaseBeans()
116-
.getContexts()
117-
.get(context.getId())
118-
.getLiquibaseBeans();
119-
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
120-
});
131+
.run(hasEndpointWithInitializedSchema());
132+
}
133+
134+
private ContextConsumer<AssertableApplicationContext> hasEndpointWithInitializedSchema() {
135+
return (context) -> {
136+
Map<String, LiquibaseBeanDescriptor> liquibaseBeans = context.getBean(LiquibaseEndpoint.class)
137+
.liquibaseBeans()
138+
.getContexts()
139+
.get(context.getId())
140+
.getLiquibaseBeans();
141+
assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1);
142+
};
121143
}
122144

123145
@Test
@@ -180,7 +202,7 @@ DataSource dataSource() {
180202
.setName(UUID.randomUUID().toString())
181203
.build();
182204
DatabaseInitializationSettings settings = new DatabaseInitializationSettings();
183-
settings.setSchemaLocations(Arrays.asList("classpath:/db/create-custom-schema.sql"));
205+
settings.setSchemaLocations(List.of("classpath:/db/create-custom-schema.sql"));
184206
DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer(dataSource,
185207
settings);
186208
initializer.initializeDatabase();

0 commit comments

Comments
 (0)