Skip to content

Commit 30d3889

Browse files
committed
Merge branch '3.4.x' into 3.5.x
Closes gh-47346
2 parents 93c9413 + e8b6ab1 commit 30d3889

File tree

2 files changed

+56
-32
lines changed

2 files changed

+56
-32
lines changed

spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpoint.java

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

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/liquibase/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

@@ -34,7 +34,9 @@
3434
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection;
3535
import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
3636
import org.springframework.boot.sql.init.DatabaseInitializationSettings;
37+
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3738
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
39+
import org.springframework.boot.test.context.runner.ContextConsumer;
3840
import org.springframework.boot.testsupport.classpath.resources.WithResource;
3941
import org.springframework.context.ApplicationContext;
4042
import org.springframework.context.annotation.Bean;
@@ -65,14 +67,7 @@ class LiquibaseEndpointTests {
6567

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

7873
@Test
@@ -90,33 +85,60 @@ void liquibaseReportIsReturnedForContextHierarchy() {
9085
}
9186

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

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

122144
@Test
@@ -179,7 +201,7 @@ DataSource dataSource() {
179201
.setName(UUID.randomUUID().toString())
180202
.build();
181203
DatabaseInitializationSettings settings = new DatabaseInitializationSettings();
182-
settings.setSchemaLocations(Arrays.asList("classpath:/db/create-custom-schema.sql"));
204+
settings.setSchemaLocations(List.of("classpath:/db/create-custom-schema.sql"));
183205
DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer(dataSource,
184206
settings);
185207
initializer.initializeDatabase();

0 commit comments

Comments
 (0)