From 0104ff9c8207dae18cdfaadb10090cbe3e34e986 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Thu, 23 Jan 2020 17:26:30 +0200 Subject: [PATCH 1/8] init --- .../configurationproperties/Connection.java | 23 ++++++ .../ConnectionFactory.java | 21 ++++++ .../configurationproperties/Credentials.java | 30 ++++++++ .../CustomCredentialsConverter.java | 16 +++++ .../configurationproperties/MailServer.java | 59 ++++++++++++++++ .../PropertyConversion.java | 67 ++++++++++++++++++ .../configurationproperties/ServerConfig.java | 70 +++++++++++++++++++ .../resources/property-validation.properties | 4 ++ ...ingPropertiesToThirdpartyPOJOUnitTest.java | 25 +++++++ ...ngPropertiesToUserDefinedPOJOUnitTest.java | 32 +++++++++ .../BindingYMLPropertiesUnitTest.java | 30 ++++++++ .../PropertyValidationUnitTest.java | 34 +++++++++ .../SpringPropertiesConversionUnitTest.java | 38 ++++++++++ .../src/test/resources/application.yml | 11 +++ .../property-validation-test.properties | 4 ++ .../resources/server-config-test.properties | 11 +++ .../spring-conversion-test.properties | 10 +++ .../thirdparty-config-test.properties | 7 ++ 18 files changed, 492 insertions(+) create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java create mode 100644 spring-boot-testing/src/main/resources/property-validation.properties create mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java create mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java create mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java create mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java create mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java create mode 100644 spring-boot-testing/src/test/resources/application.yml create mode 100644 spring-boot-testing/src/test/resources/property-validation-test.properties create mode 100644 spring-boot-testing/src/test/resources/server-config-test.properties create mode 100644 spring-boot-testing/src/test/resources/spring-conversion-test.properties create mode 100644 spring-boot-testing/src/test/resources/thirdparty-config-test.properties diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java new file mode 100644 index 0000000000..769bd2e9a9 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java @@ -0,0 +1,23 @@ +package com.baeldung.boot.configurationproperties; + +public class Connection { + + private String authorization; + private int timeout; + + public String getAuthorization() { + return authorization; + } + + public void setAuthorization(String authorization) { + this.authorization = authorization; + } + + public int getTimeout() { + return timeout; + } + + public void setTimeout(int timeout) { + this.timeout = timeout; + } +} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java new file mode 100644 index 0000000000..b93f4851d1 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java @@ -0,0 +1,21 @@ +package com.baeldung.boot.configurationproperties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ConnectionFactory { + + @Bean + @ConfigurationProperties(prefix = "testing") + public Connection getTestingConnection() { + return new Connection(); + } + + @Bean + @ConfigurationProperties(prefix = "live") + public Connection getLiveConnection() { + return new Connection(); + } +} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java new file mode 100644 index 0000000000..e84a69b0d8 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java @@ -0,0 +1,30 @@ +package com.baeldung.boot.configurationproperties; + +public class Credentials { + + private String username; + private String password; + + public Credentials() {System.out.println("### INIT2 ###");} + + public Credentials(String username, String password) { + this.username = username; + this.password = password; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java new file mode 100644 index 0000000000..6c49117aa2 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java @@ -0,0 +1,16 @@ +package com.baeldung.boot.configurationproperties; + +import org.springframework.boot.context.properties.ConfigurationPropertiesBinding; +import org.springframework.core.convert.converter.Converter; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationPropertiesBinding +public class CustomCredentialsConverter implements Converter { + + @Override + public Credentials convert(String source) { + String data[] = source.split(","); + return new Credentials(data[0], data[1]); + } +} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java new file mode 100644 index 0000000000..8ba42d76f8 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java @@ -0,0 +1,59 @@ +package com.baeldung.boot.configurationproperties; + +import java.util.Map; + +import javax.validation.Valid; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.validation.annotation.Validated; + +@Configuration +@ConfigurationProperties(prefix = "validate") +@PropertySource("classpath:property-validation.properties") +@Validated +public class MailServer { + + @NotNull + @NotEmpty + private Map propertiesMap; + + @Valid + private MailConfig mailConfig = new MailConfig(); + + public static class MailConfig { + + @NotBlank + @Email + private String address; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + } + + public Map getPropertiesMap() { + return propertiesMap; + } + + public void setPropertiesMap(Map propertiesMap) { + this.propertiesMap = propertiesMap; + } + + public MailConfig getMailConfig() { + return mailConfig; + } + + public void setMailConfig(MailConfig mailConfig) { + this.mailConfig = mailConfig; + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java new file mode 100644 index 0000000000..0050d24863 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java @@ -0,0 +1,67 @@ +package com.baeldung.boot.configurationproperties; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.convert.DataSizeUnit; +import org.springframework.boot.convert.DurationUnit; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.unit.DataSize; +import org.springframework.util.unit.DataUnit; + +@Configuration +@ConfigurationProperties(prefix = "server") +public class PropertyConversion { + + private DataSize uploadSpeed; + + @DataSizeUnit(DataUnit.GIGABYTES) + private DataSize downloadSpeed; + + private Duration backupDay; + + @DurationUnit(ChronoUnit.HOURS) + private Duration backupHour; + + private Credentials credentials; + + public Duration getBackupDay() { + return backupDay; + } + + public void setBackupDay(Duration backupDay) { + this.backupDay = backupDay; + } + + public Duration getBackupHour() { + return backupHour; + } + + public void setBackupHour(Duration backupHour) { + this.backupHour = backupHour; + } + + public DataSize getUploadSpeed() { + return uploadSpeed; + } + + public void setUploadSpeed(DataSize uploadSpeed) { + this.uploadSpeed = uploadSpeed; + } + + public DataSize getDownloadSpeed() { + return downloadSpeed; + } + + public void setDownloadSpeed(DataSize downloadSpeed) { + this.downloadSpeed = downloadSpeed; + } + + public Credentials getCredentials() { + return credentials; + } + + public void setCredentials(Credentials credentials) { + this.credentials = credentials; + } +} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java new file mode 100644 index 0000000000..d92c0261f3 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java @@ -0,0 +1,70 @@ +package com.baeldung.boot.configurationproperties; + +import java.util.Map; +import java.util.Set; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "server") +public class ServerConfig { + + private String name; + private Address address; + private Map dirs; + private Set imgIds; + + public static class Address { + + private String ip; + private int port; + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + public Set getImgIds() { + return imgIds; + } + + public void setImgIds(Set imgIds) { + this.imgIds = imgIds; + } + + public Map getDirs() { + return dirs; + } + + public void setDirs(Map dirs) { + this.dirs = dirs; + } +} diff --git a/spring-boot-testing/src/main/resources/property-validation.properties b/spring-boot-testing/src/main/resources/property-validation.properties new file mode 100644 index 0000000000..6b4c881dc0 --- /dev/null +++ b/spring-boot-testing/src/main/resources/property-validation.properties @@ -0,0 +1,4 @@ +validate.propertiesMap.first=prop1 +validate.propertiesMap.second=prop2 + +validate.mail_config.address=user1@test \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java new file mode 100644 index 0000000000..9daaf46ca7 --- /dev/null +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java @@ -0,0 +1,25 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +@SpringBootTest +@TestPropertySource("classpath:thirdparty-config-test.properties") +public class BindingPropertiesToThirdpartyPOJOUnitTest { + + @Autowired + private ConnectionFactory connectionfactory; + + @Test + void givenThirdPartyPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { + + assertEquals("foo", connectionfactory.getTestingConnection().getAuthorization()); + assertEquals(50, connectionfactory.getTestingConnection().getTimeout()); + + assertEquals("bar", connectionfactory.getLiveConnection().getAuthorization()); + assertEquals(100, connectionfactory.getLiveConnection().getTimeout()); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java new file mode 100644 index 0000000000..0c74d37bb6 --- /dev/null +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.Map; +import java.util.Set; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +@SpringBootTest +@TestPropertySource("classpath:server-config-test.properties") +public class BindingPropertiesToUserDefinedPOJOUnitTest { + + @Autowired + private ServerConfig serverConfig; + + @Test + void givenUserDefinedPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { + + assertEquals("node1", serverConfig.getName()); + + assertEquals(Set.of("img1.jpg", "img2.jpg"), + serverConfig.getImgIds()); + + assertEquals("192.168.0.1", serverConfig.getAddress().getIp()); + assertEquals(8099, serverConfig.getAddress().getPort()); + + assertEquals(Map.of("imgs", "/root/imgs", "html", "/root/html"), + serverConfig.getDirs()); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java new file mode 100644 index 0000000000..6d2d1d21e3 --- /dev/null +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.Map; +import java.util.Set; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class BindingYMLPropertiesUnitTest { + + @Autowired + private ServerConfig serverConfig; + + @Test + void whenBindingYMLConfigFile_thenAllFieldsAreSet() { + + assertEquals("node2", serverConfig.getName()); + + assertEquals(Set.of("img1.png", "img2.png"), + serverConfig.getImgIds()); + + assertEquals("192.168.0.2", serverConfig.getAddress().getIp()); + assertEquals(5000, serverConfig.getAddress().getPort()); + + assertEquals(Map.of("imgs", "/etc/imgs", "html", "/etc/html"), + serverConfig.getDirs()); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java new file mode 100644 index 0000000000..08ff3536df --- /dev/null +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java @@ -0,0 +1,34 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import javax.validation.Validation; +import javax.validation.Validator; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +@SpringBootTest +@TestPropertySource("classpath:property-validation-test.properties") +public class PropertyValidationUnitTest { + + @Autowired + private MailServer mailServer; + + private static Validator propertyValidator; + + @BeforeAll + public static void setup() { + propertyValidator = Validation.buildDefaultValidatorFactory().getValidator(); + } + + @Test + void whenBindingPropertiesToValidatedBeans_thenConstrainsAreChecked() { + + assertEquals(0, propertyValidator.validate(mailServer.getPropertiesMap()).size()); + assertEquals(0, propertyValidator.validate(mailServer.getMailConfig()).size()); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java new file mode 100644 index 0000000000..78a0e980a6 --- /dev/null +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java @@ -0,0 +1,38 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.time.Duration; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import org.springframework.util.unit.DataSize; + +@SpringBootTest +@TestPropertySource("classpath:spring-conversion-test.properties") +public class SpringPropertiesConversionUnitTest { + + @Autowired + private PropertyConversion propertyConversion; + + @Test + void whenUsingSpringDefaultSizeConversion_thenDataSizeObjectIsSet() { + + assertEquals(DataSize.ofMegabytes(500), propertyConversion.getUploadSpeed()); + assertEquals(DataSize.ofGigabytes(10), propertyConversion.getDownloadSpeed()); + } + + @Test + void whenUsingSpringDefaultDurationConversion_thenDurationObjectIsSet() { + + assertEquals(Duration.ofDays(1), propertyConversion.getBackupDay()); + assertEquals(Duration.ofHours(8), propertyConversion.getBackupHour()); + } + + @Test + void whenRegisteringCustomCredentialsConverter_thenCredentialsAreParsed() { + + assertEquals("user", propertyConversion.getCredentials().getUsername()); + assertEquals("123", propertyConversion.getCredentials().getPassword()); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/application.yml b/spring-boot-testing/src/test/resources/application.yml new file mode 100644 index 0000000000..7f22039eff --- /dev/null +++ b/spring-boot-testing/src/test/resources/application.yml @@ -0,0 +1,11 @@ +server: + name: node2 + address: + ip: 192.168.0.2 + port: 5000 + dirs: + imgs: /etc/imgs + html: /etc/html + imgIds: + - img1.png + - img2.png \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/property-validation-test.properties b/spring-boot-testing/src/test/resources/property-validation-test.properties new file mode 100644 index 0000000000..f85f4770c9 --- /dev/null +++ b/spring-boot-testing/src/test/resources/property-validation-test.properties @@ -0,0 +1,4 @@ +validate.propertiesMap.first=prop1 +validate.propertiesMap.second= + +validate.mail_config.address=user1.test \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/server-config-test.properties b/spring-boot-testing/src/test/resources/server-config-test.properties new file mode 100644 index 0000000000..2ebdd206c8 --- /dev/null +++ b/spring-boot-testing/src/test/resources/server-config-test.properties @@ -0,0 +1,11 @@ +server.NAME=node1 + +server.address.ip=192.168.0.1 +server.address.port=8099 + +# directories +server.dirs.imgs=/root/imgs +server.dirs.html=/root/html + +server.img_ids[0]=img1.jpg +server.img_ids[1]=img2.jpg \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/spring-conversion-test.properties b/spring-boot-testing/src/test/resources/spring-conversion-test.properties new file mode 100644 index 0000000000..87444cee10 --- /dev/null +++ b/spring-boot-testing/src/test/resources/spring-conversion-test.properties @@ -0,0 +1,10 @@ +# bandwidth +server.upload_speed=500MB +server.download_speed=10 + +# backup date +server.backup_day=1d +server.backup_hour=8 + +# custom converter +server.credentials=user,123 \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/thirdparty-config-test.properties b/spring-boot-testing/src/test/resources/thirdparty-config-test.properties new file mode 100644 index 0000000000..1412d56352 --- /dev/null +++ b/spring-boot-testing/src/test/resources/thirdparty-config-test.properties @@ -0,0 +1,7 @@ +# testing +testing.authorization=foo +testing.timeout=50 + +# live +live.authorization=bar +live.timeout=100 \ No newline at end of file From cc283b42332d70f6268f820a91556d02f46ed967 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Thu, 23 Jan 2020 18:34:05 +0200 Subject: [PATCH 2/8] fixing configs properties --- .../src/test/resources/property-validation-test.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-testing/src/test/resources/property-validation-test.properties b/spring-boot-testing/src/test/resources/property-validation-test.properties index f85f4770c9..6b4c881dc0 100644 --- a/spring-boot-testing/src/test/resources/property-validation-test.properties +++ b/spring-boot-testing/src/test/resources/property-validation-test.properties @@ -1,4 +1,4 @@ validate.propertiesMap.first=prop1 -validate.propertiesMap.second= +validate.propertiesMap.second=prop2 -validate.mail_config.address=user1.test \ No newline at end of file +validate.mail_config.address=user1@test \ No newline at end of file From 5b245cde28d427c3b15c08d02dd181f606dea561 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Thu, 23 Jan 2020 21:42:44 +0200 Subject: [PATCH 3/8] Using java7 syntax for Map and Set --- ...indingPropertiesToUserDefinedPOJOUnitTest.java | 15 +++++++++++---- .../BindingYMLPropertiesUnitTest.java | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java index 0c74d37bb6..44c4de01e4 100644 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java @@ -1,6 +1,9 @@ package com.baeldung.boot.configurationproperties; import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import org.junit.jupiter.api.Test; @@ -20,13 +23,17 @@ public class BindingPropertiesToUserDefinedPOJOUnitTest { assertEquals("node1", serverConfig.getName()); - assertEquals(Set.of("img1.jpg", "img2.jpg"), - serverConfig.getImgIds()); + Set expectedImgs = new HashSet<>(); + expectedImgs.add("img1.jpg"); + expectedImgs.add("img2.jpg"); + assertEquals(expectedImgs, serverConfig.getImgIds()); assertEquals("192.168.0.1", serverConfig.getAddress().getIp()); assertEquals(8099, serverConfig.getAddress().getPort()); - assertEquals(Map.of("imgs", "/root/imgs", "html", "/root/html"), - serverConfig.getDirs()); + Map expectedDirs = new HashMap<>(); + expectedDirs.put("imgs", "/root/imgs"); + expectedDirs.put("html", "/root/html"); + assertEquals(expectedDirs, serverConfig.getDirs()); } } \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java index 6d2d1d21e3..8f88eeca7e 100644 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java @@ -1,6 +1,9 @@ package com.baeldung.boot.configurationproperties; import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import org.junit.jupiter.api.Test; @@ -18,13 +21,17 @@ public class BindingYMLPropertiesUnitTest { assertEquals("node2", serverConfig.getName()); - assertEquals(Set.of("img1.png", "img2.png"), - serverConfig.getImgIds()); + Set expectedImgs = new HashSet<>(); + expectedImgs.add("img1.png"); + expectedImgs.add("img2.png"); + assertEquals(expectedImgs, serverConfig.getImgIds()); assertEquals("192.168.0.2", serverConfig.getAddress().getIp()); assertEquals(5000, serverConfig.getAddress().getPort()); - assertEquals(Map.of("imgs", "/etc/imgs", "html", "/etc/html"), - serverConfig.getDirs()); + Map expectedDirs = new HashMap<>(); + expectedDirs.put("imgs", "/etc/imgs"); + expectedDirs.put("html", "/etc/html"); + assertEquals(expectedDirs, serverConfig.getDirs()); } } \ No newline at end of file From 275a1f45456d1e4b881f72db1fa9a2a615bc3fd3 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Thu, 13 Feb 2020 22:03:25 +0200 Subject: [PATCH 4/8] first review round changes --- .../configurationproperties/Connection.java | 23 --------- .../ConnectionFactory.java | 21 --------- .../configurationproperties/Credentials.java | 2 - .../CustomCredentialsConverter.java | 2 +- .../PropertyConversion.java | 10 ++-- .../configurationproperties/ServerConfig.java | 47 ++++--------------- .../ServerConfigFactory.java | 15 ++++++ ...indingPropertiesToBeanMethodsUnitTest.java | 34 ++++++++++++++ ...ingPropertiesToThirdpartyPOJOUnitTest.java | 25 ---------- ...ngPropertiesToUserDefinedPOJOUnitTest.java | 31 +++++------- .../BindingYMLPropertiesUnitTest.java | 36 +++++++------- .../PropertyValidationUnitTest.java | 9 ++-- .../SpringPropertiesConversionUnitTest.java | 19 +++++--- .../src/test/resources/application.yml | 24 ++++++---- .../resources/server-config-test.properties | 13 ++--- .../thirdparty-config-test.properties | 7 --- 16 files changed, 130 insertions(+), 188 deletions(-) delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java create mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java create mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java delete mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java delete mode 100644 spring-boot-testing/src/test/resources/thirdparty-config-test.properties diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java deleted file mode 100644 index 769bd2e9a9..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Connection.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -public class Connection { - - private String authorization; - private int timeout; - - public String getAuthorization() { - return authorization; - } - - public void setAuthorization(String authorization) { - this.authorization = authorization; - } - - public int getTimeout() { - return timeout; - } - - public void setTimeout(int timeout) { - this.timeout = timeout; - } -} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java deleted file mode 100644 index b93f4851d1..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ConnectionFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class ConnectionFactory { - - @Bean - @ConfigurationProperties(prefix = "testing") - public Connection getTestingConnection() { - return new Connection(); - } - - @Bean - @ConfigurationProperties(prefix = "live") - public Connection getLiveConnection() { - return new Connection(); - } -} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java index e84a69b0d8..673adad41b 100644 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java @@ -4,8 +4,6 @@ public class Credentials { private String username; private String password; - - public Credentials() {System.out.println("### INIT2 ###");} public Credentials(String username, String password) { this.username = username; diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java index 6c49117aa2..deb71dcdad 100644 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Component; @Component @ConfigurationPropertiesBinding public class CustomCredentialsConverter implements Converter { - + @Override public Credentials convert(String source) { String data[] = source.split(","); diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java index 0050d24863..9747858ed7 100644 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java @@ -17,14 +17,14 @@ public class PropertyConversion { @DataSizeUnit(DataUnit.GIGABYTES) private DataSize downloadSpeed; - + private Duration backupDay; - + @DurationUnit(ChronoUnit.HOURS) private Duration backupHour; - + private Credentials credentials; - + public Duration getBackupDay() { return backupDay; } @@ -60,7 +60,7 @@ public class PropertyConversion { public Credentials getCredentials() { return credentials; } - + public void setCredentials(Credentials credentials) { this.credentials = credentials; } diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java index d92c0261f3..bfacc6e679 100644 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java @@ -1,7 +1,7 @@ package com.baeldung.boot.configurationproperties; import java.util.Map; -import java.util.Set; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -9,39 +9,20 @@ import org.springframework.context.annotation.Configuration; @ConfigurationProperties(prefix = "server") public class ServerConfig { - private String name; private Address address; - private Map dirs; - private Set imgIds; - + private Map resourcesPath; + public static class Address { - + private String ip; - private int port; - + public String getIp() { return ip; } - + public void setIp(String ip) { this.ip = ip; } - - public int getPort() { - return port; - } - - public void setPort(int port) { - this.port = port; - } - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; } public Address getAddress() { @@ -52,19 +33,11 @@ public class ServerConfig { this.address = address; } - public Set getImgIds() { - return imgIds; - } - - public void setImgIds(Set imgIds) { - this.imgIds = imgIds; + public Map getResourcesPath() { + return resourcesPath; } - public Map getDirs() { - return dirs; - } - - public void setDirs(Map dirs) { - this.dirs = dirs; + public void setResourcesPath(Map resourcesPath) { + this.resourcesPath = resourcesPath; } } diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java new file mode 100644 index 0000000000..8d74de1732 --- /dev/null +++ b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java @@ -0,0 +1,15 @@ +package com.baeldung.boot.configurationproperties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ServerConfigFactory { + + @Bean + @ConfigurationProperties(prefix = "server.default") + public ServerConfig getDefaultConfigs() { + return new ServerConfig(); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java new file mode 100644 index 0000000000..a5bc09e290 --- /dev/null +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java @@ -0,0 +1,34 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = ServerConfig.class) +@ContextConfiguration(classes = ServerConfigFactory.class) +@TestPropertySource("classpath:server-config-test.properties") +public class BindingPropertiesToBeanMethodsUnitTest { + + @Autowired + private ServerConfigFactory configFactory; + + @Test + void givenBeanAnnotatedMethod_whenBindingProperties_thenAllFieldsAreSet() { + + assertEquals("192.168.0.2", configFactory.getDefaultConfigs().getAddress().getIp()); + + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/root/def/imgs"); + assertEquals(expectedResourcesPath, configFactory.getDefaultConfigs().getResourcesPath()); + } +} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java deleted file mode 100644 index 9daaf46ca7..0000000000 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToThirdpartyPOJOUnitTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; - -@SpringBootTest -@TestPropertySource("classpath:thirdparty-config-test.properties") -public class BindingPropertiesToThirdpartyPOJOUnitTest { - - @Autowired - private ConnectionFactory connectionfactory; - - @Test - void givenThirdPartyPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { - - assertEquals("foo", connectionfactory.getTestingConnection().getAuthorization()); - assertEquals(50, connectionfactory.getTestingConnection().getTimeout()); - - assertEquals("bar", connectionfactory.getLiveConnection().getAuthorization()); - assertEquals(100, connectionfactory.getLiveConnection().getTimeout()); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java index 44c4de01e4..96bbc6639a 100644 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java @@ -3,15 +3,17 @@ package com.baeldung.boot.configurationproperties; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; -@SpringBootTest +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = ServerConfig.class) @TestPropertySource("classpath:server-config-test.properties") public class BindingPropertiesToUserDefinedPOJOUnitTest { @@ -21,19 +23,10 @@ public class BindingPropertiesToUserDefinedPOJOUnitTest { @Test void givenUserDefinedPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { - assertEquals("node1", serverConfig.getName()); - - Set expectedImgs = new HashSet<>(); - expectedImgs.add("img1.jpg"); - expectedImgs.add("img2.jpg"); - assertEquals(expectedImgs, serverConfig.getImgIds()); - assertEquals("192.168.0.1", serverConfig.getAddress().getIp()); - assertEquals(8099, serverConfig.getAddress().getPort()); - Map expectedDirs = new HashMap<>(); - expectedDirs.put("imgs", "/root/imgs"); - expectedDirs.put("html", "/root/html"); - assertEquals(expectedDirs, serverConfig.getDirs()); + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/root/imgs"); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); } } \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java index 8f88eeca7e..eda8eb7f6b 100644 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java @@ -1,37 +1,33 @@ package com.baeldung.boot.configurationproperties; import static org.junit.jupiter.api.Assertions.assertEquals; - import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@SpringBootTest +@ExtendWith(SpringExtension.class) +@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class) +@EnableConfigurationProperties(value = ServerConfig.class) +@ActiveProfiles("test") public class BindingYMLPropertiesUnitTest { - + @Autowired private ServerConfig serverConfig; - + @Test void whenBindingYMLConfigFile_thenAllFieldsAreSet() { - - assertEquals("node2", serverConfig.getName()); - Set expectedImgs = new HashSet<>(); - expectedImgs.add("img1.png"); - expectedImgs.add("img2.png"); - assertEquals(expectedImgs, serverConfig.getImgIds()); + assertEquals("192.168.0.4", serverConfig.getAddress().getIp()); - assertEquals("192.168.0.2", serverConfig.getAddress().getIp()); - assertEquals(5000, serverConfig.getAddress().getPort()); - - Map expectedDirs = new HashMap<>(); - expectedDirs.put("imgs", "/etc/imgs"); - expectedDirs.put("html", "/etc/html"); - assertEquals(expectedDirs, serverConfig.getDirs()); + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/etc/test/imgs"); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); } } \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java index 08ff3536df..8833011425 100644 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java @@ -7,11 +7,14 @@ import javax.validation.Validator; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@SpringBootTest +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = MailServer.class) @TestPropertySource("classpath:property-validation-test.properties") public class PropertyValidationUnitTest { @@ -27,7 +30,7 @@ public class PropertyValidationUnitTest { @Test void whenBindingPropertiesToValidatedBeans_thenConstrainsAreChecked() { - + assertEquals(0, propertyValidator.validate(mailServer.getPropertiesMap()).size()); assertEquals(0, propertyValidator.validate(mailServer.getMailConfig()).size()); } diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java index 78a0e980a6..d24d563de4 100644 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java +++ b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java @@ -1,14 +1,21 @@ package com.baeldung.boot.configurationproperties; import static org.junit.jupiter.api.Assertions.assertEquals; + import java.time.Duration; + import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.util.unit.DataSize; -@SpringBootTest +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = PropertyConversion.class) +@ContextConfiguration(classes = CustomCredentialsConverter.class) @TestPropertySource("classpath:spring-conversion-test.properties") public class SpringPropertiesConversionUnitTest { @@ -17,21 +24,21 @@ public class SpringPropertiesConversionUnitTest { @Test void whenUsingSpringDefaultSizeConversion_thenDataSizeObjectIsSet() { - + assertEquals(DataSize.ofMegabytes(500), propertyConversion.getUploadSpeed()); assertEquals(DataSize.ofGigabytes(10), propertyConversion.getDownloadSpeed()); } @Test void whenUsingSpringDefaultDurationConversion_thenDurationObjectIsSet() { - + assertEquals(Duration.ofDays(1), propertyConversion.getBackupDay()); assertEquals(Duration.ofHours(8), propertyConversion.getBackupHour()); } - + @Test void whenRegisteringCustomCredentialsConverter_thenCredentialsAreParsed() { - + assertEquals("user", propertyConversion.getCredentials().getUsername()); assertEquals("123", propertyConversion.getCredentials().getPassword()); } diff --git a/spring-boot-testing/src/test/resources/application.yml b/spring-boot-testing/src/test/resources/application.yml index 7f22039eff..7dfd4d98a8 100644 --- a/spring-boot-testing/src/test/resources/application.yml +++ b/spring-boot-testing/src/test/resources/application.yml @@ -1,11 +1,15 @@ +spring: + profiles: test server: - name: node2 - address: - ip: 192.168.0.2 - port: 5000 - dirs: - imgs: /etc/imgs - html: /etc/html - imgIds: - - img1.png - - img2.png \ No newline at end of file + address: + ip: 192.168.0.4 + resources_path: + imgs: /etc/test/imgs +--- +spring: + profiles: dev +server: + address: + ip: 192.168.0.5 + resources_path: + imgs: /etc/dev/imgs \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/server-config-test.properties b/spring-boot-testing/src/test/resources/server-config-test.properties index 2ebdd206c8..62b23ed1d6 100644 --- a/spring-boot-testing/src/test/resources/server-config-test.properties +++ b/spring-boot-testing/src/test/resources/server-config-test.properties @@ -1,11 +1,6 @@ -server.NAME=node1 - server.address.ip=192.168.0.1 -server.address.port=8099 +server.resources_path.imgs=/root/imgs -# directories -server.dirs.imgs=/root/imgs -server.dirs.html=/root/html - -server.img_ids[0]=img1.jpg -server.img_ids[1]=img2.jpg \ No newline at end of file +# default config +server.default.address.ip=192.168.0.2 +server.default.resources_path.imgs=/root/def/imgs \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/thirdparty-config-test.properties b/spring-boot-testing/src/test/resources/thirdparty-config-test.properties deleted file mode 100644 index 1412d56352..0000000000 --- a/spring-boot-testing/src/test/resources/thirdparty-config-test.properties +++ /dev/null @@ -1,7 +0,0 @@ -# testing -testing.authorization=foo -testing.timeout=50 - -# live -live.authorization=bar -live.timeout=100 \ No newline at end of file From 086adbd0c271314cf88a61f3f504c9ea79913e58 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Sun, 16 Feb 2020 14:57:46 +0200 Subject: [PATCH 5/8] overriding properties section and changing article module --- .../configurationproperties/Credentials.java | 28 ++++++++ .../CustomCredentialsConverter.java | 16 +++++ .../configurationproperties/MailServer.java | 59 ++++++++++++++++ .../PropertyConversion.java | 67 +++++++++++++++++++ .../configurationproperties/ServerConfig.java | 43 ++++++++++++ .../ServerConfigFactory.java | 15 +++++ .../resources/property-validation.properties | 4 ++ ...indingPropertiesToBeanMethodsUnitTest.java | 34 ++++++++++ ...ngPropertiesToUserDefinedPOJOUnitTest.java | 32 +++++++++ .../BindingYMLPropertiesUnitTest.java | 33 +++++++++ ...ridingConfigurationPropertiesUnitTest.java | 33 +++++++++ .../PropertyValidationUnitTest.java | 37 ++++++++++ .../SpringPropertiesConversionUnitTest.java | 45 +++++++++++++ .../src/test/resources/application.yml | 15 +++++ .../property-validation-test.properties | 4 ++ .../resources/server-config-test.properties | 6 ++ .../spring-conversion-test.properties | 10 +++ 17 files changed, 481 insertions(+) create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/resources/property-validation.properties create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/resources/application.yml create mode 100644 spring-boot-modules/spring-boot-testing/src/test/resources/property-validation-test.properties create mode 100644 spring-boot-modules/spring-boot-testing/src/test/resources/server-config-test.properties create mode 100644 spring-boot-modules/spring-boot-testing/src/test/resources/spring-conversion-test.properties diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java new file mode 100644 index 0000000000..673adad41b --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java @@ -0,0 +1,28 @@ +package com.baeldung.boot.configurationproperties; + +public class Credentials { + + private String username; + private String password; + + public Credentials(String username, String password) { + this.username = username; + this.password = password; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java new file mode 100644 index 0000000000..deb71dcdad --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java @@ -0,0 +1,16 @@ +package com.baeldung.boot.configurationproperties; + +import org.springframework.boot.context.properties.ConfigurationPropertiesBinding; +import org.springframework.core.convert.converter.Converter; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationPropertiesBinding +public class CustomCredentialsConverter implements Converter { + + @Override + public Credentials convert(String source) { + String data[] = source.split(","); + return new Credentials(data[0], data[1]); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java new file mode 100644 index 0000000000..8ba42d76f8 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java @@ -0,0 +1,59 @@ +package com.baeldung.boot.configurationproperties; + +import java.util.Map; + +import javax.validation.Valid; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.validation.annotation.Validated; + +@Configuration +@ConfigurationProperties(prefix = "validate") +@PropertySource("classpath:property-validation.properties") +@Validated +public class MailServer { + + @NotNull + @NotEmpty + private Map propertiesMap; + + @Valid + private MailConfig mailConfig = new MailConfig(); + + public static class MailConfig { + + @NotBlank + @Email + private String address; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + } + + public Map getPropertiesMap() { + return propertiesMap; + } + + public void setPropertiesMap(Map propertiesMap) { + this.propertiesMap = propertiesMap; + } + + public MailConfig getMailConfig() { + return mailConfig; + } + + public void setMailConfig(MailConfig mailConfig) { + this.mailConfig = mailConfig; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java new file mode 100644 index 0000000000..9747858ed7 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java @@ -0,0 +1,67 @@ +package com.baeldung.boot.configurationproperties; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.convert.DataSizeUnit; +import org.springframework.boot.convert.DurationUnit; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.unit.DataSize; +import org.springframework.util.unit.DataUnit; + +@Configuration +@ConfigurationProperties(prefix = "server") +public class PropertyConversion { + + private DataSize uploadSpeed; + + @DataSizeUnit(DataUnit.GIGABYTES) + private DataSize downloadSpeed; + + private Duration backupDay; + + @DurationUnit(ChronoUnit.HOURS) + private Duration backupHour; + + private Credentials credentials; + + public Duration getBackupDay() { + return backupDay; + } + + public void setBackupDay(Duration backupDay) { + this.backupDay = backupDay; + } + + public Duration getBackupHour() { + return backupHour; + } + + public void setBackupHour(Duration backupHour) { + this.backupHour = backupHour; + } + + public DataSize getUploadSpeed() { + return uploadSpeed; + } + + public void setUploadSpeed(DataSize uploadSpeed) { + this.uploadSpeed = uploadSpeed; + } + + public DataSize getDownloadSpeed() { + return downloadSpeed; + } + + public void setDownloadSpeed(DataSize downloadSpeed) { + this.downloadSpeed = downloadSpeed; + } + + public Credentials getCredentials() { + return credentials; + } + + public void setCredentials(Credentials credentials) { + this.credentials = credentials; + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java new file mode 100644 index 0000000000..bfacc6e679 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java @@ -0,0 +1,43 @@ +package com.baeldung.boot.configurationproperties; + +import java.util.Map; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "server") +public class ServerConfig { + + private Address address; + private Map resourcesPath; + + public static class Address { + + private String ip; + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + public Map getResourcesPath() { + return resourcesPath; + } + + public void setResourcesPath(Map resourcesPath) { + this.resourcesPath = resourcesPath; + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java new file mode 100644 index 0000000000..8d74de1732 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java @@ -0,0 +1,15 @@ +package com.baeldung.boot.configurationproperties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ServerConfigFactory { + + @Bean + @ConfigurationProperties(prefix = "server.default") + public ServerConfig getDefaultConfigs() { + return new ServerConfig(); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/main/resources/property-validation.properties b/spring-boot-modules/spring-boot-testing/src/main/resources/property-validation.properties new file mode 100644 index 0000000000..6b4c881dc0 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/resources/property-validation.properties @@ -0,0 +1,4 @@ +validate.propertiesMap.first=prop1 +validate.propertiesMap.second=prop2 + +validate.mail_config.address=user1@test \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java new file mode 100644 index 0000000000..a5bc09e290 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java @@ -0,0 +1,34 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = ServerConfig.class) +@ContextConfiguration(classes = ServerConfigFactory.class) +@TestPropertySource("classpath:server-config-test.properties") +public class BindingPropertiesToBeanMethodsUnitTest { + + @Autowired + private ServerConfigFactory configFactory; + + @Test + void givenBeanAnnotatedMethod_whenBindingProperties_thenAllFieldsAreSet() { + + assertEquals("192.168.0.2", configFactory.getDefaultConfigs().getAddress().getIp()); + + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/root/def/imgs"); + assertEquals(expectedResourcesPath, configFactory.getDefaultConfigs().getResourcesPath()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java new file mode 100644 index 0000000000..96bbc6639a --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = ServerConfig.class) +@TestPropertySource("classpath:server-config-test.properties") +public class BindingPropertiesToUserDefinedPOJOUnitTest { + + @Autowired + private ServerConfig serverConfig; + + @Test + void givenUserDefinedPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { + + assertEquals("192.168.0.1", serverConfig.getAddress().getIp()); + + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/root/imgs"); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java new file mode 100644 index 0000000000..eda8eb7f6b --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class) +@EnableConfigurationProperties(value = ServerConfig.class) +@ActiveProfiles("test") +public class BindingYMLPropertiesUnitTest { + + @Autowired + private ServerConfig serverConfig; + + @Test + void whenBindingYMLConfigFile_thenAllFieldsAreSet() { + + assertEquals("192.168.0.4", serverConfig.getAddress().getIp()); + + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/etc/test/imgs"); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java new file mode 100644 index 0000000000..8631308296 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = MailServer.class) +@TestPropertySource(properties = { "validate.mail_config.address=new_user@test" }) +public class OverridingConfigurationPropertiesUnitTest { + + @Autowired + private MailServer mailServer; + + @Test + void givenUsingPropertiesAttribute_whenAssiginingNewValueToProprty_thenSpringUsesNewValue() { + + assertEquals("new_user@test", mailServer.getMailConfig().getAddress()); + + Map expectedMap = new HashMap<>(); + expectedMap.put("first", "prop1"); + expectedMap.put("second", "prop2"); + assertEquals(expectedMap, mailServer.getPropertiesMap()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java new file mode 100644 index 0000000000..8833011425 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import javax.validation.Validation; +import javax.validation.Validator; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = MailServer.class) +@TestPropertySource("classpath:property-validation-test.properties") +public class PropertyValidationUnitTest { + + @Autowired + private MailServer mailServer; + + private static Validator propertyValidator; + + @BeforeAll + public static void setup() { + propertyValidator = Validation.buildDefaultValidatorFactory().getValidator(); + } + + @Test + void whenBindingPropertiesToValidatedBeans_thenConstrainsAreChecked() { + + assertEquals(0, propertyValidator.validate(mailServer.getPropertiesMap()).size()); + assertEquals(0, propertyValidator.validate(mailServer.getMailConfig()).size()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java new file mode 100644 index 0000000000..d24d563de4 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java @@ -0,0 +1,45 @@ +package com.baeldung.boot.configurationproperties; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.time.Duration; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.util.unit.DataSize; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = PropertyConversion.class) +@ContextConfiguration(classes = CustomCredentialsConverter.class) +@TestPropertySource("classpath:spring-conversion-test.properties") +public class SpringPropertiesConversionUnitTest { + + @Autowired + private PropertyConversion propertyConversion; + + @Test + void whenUsingSpringDefaultSizeConversion_thenDataSizeObjectIsSet() { + + assertEquals(DataSize.ofMegabytes(500), propertyConversion.getUploadSpeed()); + assertEquals(DataSize.ofGigabytes(10), propertyConversion.getDownloadSpeed()); + } + + @Test + void whenUsingSpringDefaultDurationConversion_thenDurationObjectIsSet() { + + assertEquals(Duration.ofDays(1), propertyConversion.getBackupDay()); + assertEquals(Duration.ofHours(8), propertyConversion.getBackupHour()); + } + + @Test + void whenRegisteringCustomCredentialsConverter_thenCredentialsAreParsed() { + + assertEquals("user", propertyConversion.getCredentials().getUsername()); + assertEquals("123", propertyConversion.getCredentials().getPassword()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml b/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml new file mode 100644 index 0000000000..7dfd4d98a8 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml @@ -0,0 +1,15 @@ +spring: + profiles: test +server: + address: + ip: 192.168.0.4 + resources_path: + imgs: /etc/test/imgs +--- +spring: + profiles: dev +server: + address: + ip: 192.168.0.5 + resources_path: + imgs: /etc/dev/imgs \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/resources/property-validation-test.properties b/spring-boot-modules/spring-boot-testing/src/test/resources/property-validation-test.properties new file mode 100644 index 0000000000..6b4c881dc0 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/resources/property-validation-test.properties @@ -0,0 +1,4 @@ +validate.propertiesMap.first=prop1 +validate.propertiesMap.second=prop2 + +validate.mail_config.address=user1@test \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/resources/server-config-test.properties b/spring-boot-modules/spring-boot-testing/src/test/resources/server-config-test.properties new file mode 100644 index 0000000000..62b23ed1d6 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/resources/server-config-test.properties @@ -0,0 +1,6 @@ +server.address.ip=192.168.0.1 +server.resources_path.imgs=/root/imgs + +# default config +server.default.address.ip=192.168.0.2 +server.default.resources_path.imgs=/root/def/imgs \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/resources/spring-conversion-test.properties b/spring-boot-modules/spring-boot-testing/src/test/resources/spring-conversion-test.properties new file mode 100644 index 0000000000..87444cee10 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/resources/spring-conversion-test.properties @@ -0,0 +1,10 @@ +# bandwidth +server.upload_speed=500MB +server.download_speed=10 + +# backup date +server.backup_day=1d +server.backup_hour=8 + +# custom converter +server.credentials=user,123 \ No newline at end of file From a44ab7dc563658140230ba3d231b43e5d63d52ae Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Sun, 16 Feb 2020 15:20:48 +0200 Subject: [PATCH 6/8] deleting spring-boot-testing project --- .../configurationproperties/Credentials.java | 28 -------- .../CustomCredentialsConverter.java | 16 ----- .../configurationproperties/MailServer.java | 59 ---------------- .../PropertyConversion.java | 67 ------------------- .../configurationproperties/ServerConfig.java | 43 ------------ .../ServerConfigFactory.java | 15 ----- .../resources/property-validation.properties | 4 -- ...indingPropertiesToBeanMethodsUnitTest.java | 34 ---------- ...ngPropertiesToUserDefinedPOJOUnitTest.java | 32 --------- .../BindingYMLPropertiesUnitTest.java | 33 --------- .../PropertyValidationUnitTest.java | 37 ---------- .../SpringPropertiesConversionUnitTest.java | 45 ------------- .../src/test/resources/application.yml | 15 ----- .../property-validation-test.properties | 4 -- .../resources/server-config-test.properties | 6 -- .../spring-conversion-test.properties | 10 --- 16 files changed, 448 deletions(-) delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java delete mode 100644 spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java delete mode 100644 spring-boot-testing/src/main/resources/property-validation.properties delete mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java delete mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java delete mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java delete mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java delete mode 100644 spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java delete mode 100644 spring-boot-testing/src/test/resources/application.yml delete mode 100644 spring-boot-testing/src/test/resources/property-validation-test.properties delete mode 100644 spring-boot-testing/src/test/resources/server-config-test.properties delete mode 100644 spring-boot-testing/src/test/resources/spring-conversion-test.properties diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java deleted file mode 100644 index 673adad41b..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -public class Credentials { - - private String username; - private String password; - - public Credentials(String username, String password) { - this.username = username; - this.password = password; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } -} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java deleted file mode 100644 index deb71dcdad..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import org.springframework.boot.context.properties.ConfigurationPropertiesBinding; -import org.springframework.core.convert.converter.Converter; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationPropertiesBinding -public class CustomCredentialsConverter implements Converter { - - @Override - public Credentials convert(String source) { - String data[] = source.split(","); - return new Credentials(data[0], data[1]); - } -} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java deleted file mode 100644 index 8ba42d76f8..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import java.util.Map; - -import javax.validation.Valid; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.validation.annotation.Validated; - -@Configuration -@ConfigurationProperties(prefix = "validate") -@PropertySource("classpath:property-validation.properties") -@Validated -public class MailServer { - - @NotNull - @NotEmpty - private Map propertiesMap; - - @Valid - private MailConfig mailConfig = new MailConfig(); - - public static class MailConfig { - - @NotBlank - @Email - private String address; - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - } - - public Map getPropertiesMap() { - return propertiesMap; - } - - public void setPropertiesMap(Map propertiesMap) { - this.propertiesMap = propertiesMap; - } - - public MailConfig getMailConfig() { - return mailConfig; - } - - public void setMailConfig(MailConfig mailConfig) { - this.mailConfig = mailConfig; - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java deleted file mode 100644 index 9747858ed7..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import java.time.Duration; -import java.time.temporal.ChronoUnit; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.convert.DataSizeUnit; -import org.springframework.boot.convert.DurationUnit; -import org.springframework.context.annotation.Configuration; -import org.springframework.util.unit.DataSize; -import org.springframework.util.unit.DataUnit; - -@Configuration -@ConfigurationProperties(prefix = "server") -public class PropertyConversion { - - private DataSize uploadSpeed; - - @DataSizeUnit(DataUnit.GIGABYTES) - private DataSize downloadSpeed; - - private Duration backupDay; - - @DurationUnit(ChronoUnit.HOURS) - private Duration backupHour; - - private Credentials credentials; - - public Duration getBackupDay() { - return backupDay; - } - - public void setBackupDay(Duration backupDay) { - this.backupDay = backupDay; - } - - public Duration getBackupHour() { - return backupHour; - } - - public void setBackupHour(Duration backupHour) { - this.backupHour = backupHour; - } - - public DataSize getUploadSpeed() { - return uploadSpeed; - } - - public void setUploadSpeed(DataSize uploadSpeed) { - this.uploadSpeed = uploadSpeed; - } - - public DataSize getDownloadSpeed() { - return downloadSpeed; - } - - public void setDownloadSpeed(DataSize downloadSpeed) { - this.downloadSpeed = downloadSpeed; - } - - public Credentials getCredentials() { - return credentials; - } - - public void setCredentials(Credentials credentials) { - this.credentials = credentials; - } -} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java deleted file mode 100644 index bfacc6e679..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import java.util.Map; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ConfigurationProperties(prefix = "server") -public class ServerConfig { - - private Address address; - private Map resourcesPath; - - public static class Address { - - private String ip; - - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; - } - } - - public Address getAddress() { - return address; - } - - public void setAddress(Address address) { - this.address = address; - } - - public Map getResourcesPath() { - return resourcesPath; - } - - public void setResourcesPath(Map resourcesPath) { - this.resourcesPath = resourcesPath; - } -} diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java b/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java deleted file mode 100644 index 8d74de1732..0000000000 --- a/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class ServerConfigFactory { - - @Bean - @ConfigurationProperties(prefix = "server.default") - public ServerConfig getDefaultConfigs() { - return new ServerConfig(); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/main/resources/property-validation.properties b/spring-boot-testing/src/main/resources/property-validation.properties deleted file mode 100644 index 6b4c881dc0..0000000000 --- a/spring-boot-testing/src/main/resources/property-validation.properties +++ /dev/null @@ -1,4 +0,0 @@ -validate.propertiesMap.first=prop1 -validate.propertiesMap.second=prop2 - -validate.mail_config.address=user1@test \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java deleted file mode 100644 index a5bc09e290..0000000000 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@ExtendWith(SpringExtension.class) -@EnableConfigurationProperties(value = ServerConfig.class) -@ContextConfiguration(classes = ServerConfigFactory.class) -@TestPropertySource("classpath:server-config-test.properties") -public class BindingPropertiesToBeanMethodsUnitTest { - - @Autowired - private ServerConfigFactory configFactory; - - @Test - void givenBeanAnnotatedMethod_whenBindingProperties_thenAllFieldsAreSet() { - - assertEquals("192.168.0.2", configFactory.getDefaultConfigs().getAddress().getIp()); - - Map expectedResourcesPath = new HashMap<>(); - expectedResourcesPath.put("imgs", "/root/def/imgs"); - assertEquals(expectedResourcesPath, configFactory.getDefaultConfigs().getResourcesPath()); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java deleted file mode 100644 index 96bbc6639a..0000000000 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@ExtendWith(SpringExtension.class) -@EnableConfigurationProperties(value = ServerConfig.class) -@TestPropertySource("classpath:server-config-test.properties") -public class BindingPropertiesToUserDefinedPOJOUnitTest { - - @Autowired - private ServerConfig serverConfig; - - @Test - void givenUserDefinedPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { - - assertEquals("192.168.0.1", serverConfig.getAddress().getIp()); - - Map expectedResourcesPath = new HashMap<>(); - expectedResourcesPath.put("imgs", "/root/imgs"); - assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java deleted file mode 100644 index eda8eb7f6b..0000000000 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.HashMap; -import java.util.Map; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@ExtendWith(SpringExtension.class) -@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class) -@EnableConfigurationProperties(value = ServerConfig.class) -@ActiveProfiles("test") -public class BindingYMLPropertiesUnitTest { - - @Autowired - private ServerConfig serverConfig; - - @Test - void whenBindingYMLConfigFile_thenAllFieldsAreSet() { - - assertEquals("192.168.0.4", serverConfig.getAddress().getIp()); - - Map expectedResourcesPath = new HashMap<>(); - expectedResourcesPath.put("imgs", "/etc/test/imgs"); - assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java deleted file mode 100644 index 8833011425..0000000000 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import javax.validation.Validation; -import javax.validation.Validator; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@ExtendWith(SpringExtension.class) -@EnableConfigurationProperties(value = MailServer.class) -@TestPropertySource("classpath:property-validation-test.properties") -public class PropertyValidationUnitTest { - - @Autowired - private MailServer mailServer; - - private static Validator propertyValidator; - - @BeforeAll - public static void setup() { - propertyValidator = Validation.buildDefaultValidatorFactory().getValidator(); - } - - @Test - void whenBindingPropertiesToValidatedBeans_thenConstrainsAreChecked() { - - assertEquals(0, propertyValidator.validate(mailServer.getPropertiesMap()).size()); - assertEquals(0, propertyValidator.validate(mailServer.getMailConfig()).size()); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java deleted file mode 100644 index d24d563de4..0000000000 --- a/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.baeldung.boot.configurationproperties; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.time.Duration; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.util.unit.DataSize; - -@ExtendWith(SpringExtension.class) -@EnableConfigurationProperties(value = PropertyConversion.class) -@ContextConfiguration(classes = CustomCredentialsConverter.class) -@TestPropertySource("classpath:spring-conversion-test.properties") -public class SpringPropertiesConversionUnitTest { - - @Autowired - private PropertyConversion propertyConversion; - - @Test - void whenUsingSpringDefaultSizeConversion_thenDataSizeObjectIsSet() { - - assertEquals(DataSize.ofMegabytes(500), propertyConversion.getUploadSpeed()); - assertEquals(DataSize.ofGigabytes(10), propertyConversion.getDownloadSpeed()); - } - - @Test - void whenUsingSpringDefaultDurationConversion_thenDurationObjectIsSet() { - - assertEquals(Duration.ofDays(1), propertyConversion.getBackupDay()); - assertEquals(Duration.ofHours(8), propertyConversion.getBackupHour()); - } - - @Test - void whenRegisteringCustomCredentialsConverter_thenCredentialsAreParsed() { - - assertEquals("user", propertyConversion.getCredentials().getUsername()); - assertEquals("123", propertyConversion.getCredentials().getPassword()); - } -} \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/application.yml b/spring-boot-testing/src/test/resources/application.yml deleted file mode 100644 index 7dfd4d98a8..0000000000 --- a/spring-boot-testing/src/test/resources/application.yml +++ /dev/null @@ -1,15 +0,0 @@ -spring: - profiles: test -server: - address: - ip: 192.168.0.4 - resources_path: - imgs: /etc/test/imgs ---- -spring: - profiles: dev -server: - address: - ip: 192.168.0.5 - resources_path: - imgs: /etc/dev/imgs \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/property-validation-test.properties b/spring-boot-testing/src/test/resources/property-validation-test.properties deleted file mode 100644 index 6b4c881dc0..0000000000 --- a/spring-boot-testing/src/test/resources/property-validation-test.properties +++ /dev/null @@ -1,4 +0,0 @@ -validate.propertiesMap.first=prop1 -validate.propertiesMap.second=prop2 - -validate.mail_config.address=user1@test \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/server-config-test.properties b/spring-boot-testing/src/test/resources/server-config-test.properties deleted file mode 100644 index 62b23ed1d6..0000000000 --- a/spring-boot-testing/src/test/resources/server-config-test.properties +++ /dev/null @@ -1,6 +0,0 @@ -server.address.ip=192.168.0.1 -server.resources_path.imgs=/root/imgs - -# default config -server.default.address.ip=192.168.0.2 -server.default.resources_path.imgs=/root/def/imgs \ No newline at end of file diff --git a/spring-boot-testing/src/test/resources/spring-conversion-test.properties b/spring-boot-testing/src/test/resources/spring-conversion-test.properties deleted file mode 100644 index 87444cee10..0000000000 --- a/spring-boot-testing/src/test/resources/spring-conversion-test.properties +++ /dev/null @@ -1,10 +0,0 @@ -# bandwidth -server.upload_speed=500MB -server.download_speed=10 - -# backup date -server.backup_day=1d -server.backup_hour=8 - -# custom converter -server.credentials=user,123 \ No newline at end of file From 4414f4f390cd5a37fbfd21c1b1541746dcc96ae5 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Thu, 20 Feb 2020 07:24:35 +0200 Subject: [PATCH 7/8] fixing formatting --- .../configurationproperties/Credentials.java | 36 ++++----- .../CustomCredentialsConverter.java | 10 +-- .../configurationproperties/MailServer.java | 56 +++++++------- .../PropertyConversion.java | 74 +++++++++---------- .../configurationproperties/ServerConfig.java | 46 ++++++------ .../ServerConfigFactory.java | 10 +-- ...indingPropertiesToBeanMethodsUnitTest.java | 22 +++--- ...ngPropertiesToUserDefinedPOJOUnitTest.java | 20 ++--- .../BindingYMLPropertiesUnitTest.java | 20 ++--- ...ridingConfigurationPropertiesUnitTest.java | 22 +++--- .../PropertyValidationUnitTest.java | 28 +++---- .../SpringPropertiesConversionUnitTest.java | 39 +++++----- .../src/test/resources/application.yml | 2 +- 13 files changed, 194 insertions(+), 191 deletions(-) diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java index 673adad41b..e51937cf57 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/Credentials.java @@ -2,27 +2,27 @@ package com.baeldung.boot.configurationproperties; public class Credentials { - private String username; - private String password; + private String username; + private String password; - public Credentials(String username, String password) { - this.username = username; - this.password = password; - } + public Credentials(String username, String password) { + this.username = username; + this.password = password; + } - public String getUsername() { - return username; - } + public String getUsername() { + return username; + } - public void setUsername(String username) { - this.username = username; - } + public void setUsername(String username) { + this.username = username; + } - public String getPassword() { - return password; - } + public String getPassword() { + return password; + } - public void setPassword(String password) { - this.password = password; - } + public void setPassword(String password) { + this.password = password; + } } diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java index deb71dcdad..ef160c8c9a 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/CustomCredentialsConverter.java @@ -8,9 +8,9 @@ import org.springframework.stereotype.Component; @ConfigurationPropertiesBinding public class CustomCredentialsConverter implements Converter { - @Override - public Credentials convert(String source) { - String data[] = source.split(","); - return new Credentials(data[0], data[1]); - } + @Override + public Credentials convert(String source) { + String[] data = source.split(","); + return new Credentials(data[0], data[1]); + } } diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java index 8ba42d76f8..e23b30759b 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/MailServer.java @@ -19,41 +19,41 @@ import org.springframework.validation.annotation.Validated; @Validated public class MailServer { - @NotNull - @NotEmpty - private Map propertiesMap; + @NotNull + @NotEmpty + private Map propertiesMap; - @Valid - private MailConfig mailConfig = new MailConfig(); + @Valid + private MailConfig mailConfig = new MailConfig(); - public static class MailConfig { + public static class MailConfig { - @NotBlank - @Email - private String address; + @NotBlank + @Email + private String address; - public String getAddress() { - return address; - } + public String getAddress() { + return address; + } - public void setAddress(String address) { - this.address = address; - } - } + public void setAddress(String address) { + this.address = address; + } + } - public Map getPropertiesMap() { - return propertiesMap; - } + public Map getPropertiesMap() { + return propertiesMap; + } - public void setPropertiesMap(Map propertiesMap) { - this.propertiesMap = propertiesMap; - } + public void setPropertiesMap(Map propertiesMap) { + this.propertiesMap = propertiesMap; + } - public MailConfig getMailConfig() { - return mailConfig; - } + public MailConfig getMailConfig() { + return mailConfig; + } - public void setMailConfig(MailConfig mailConfig) { - this.mailConfig = mailConfig; - } + public void setMailConfig(MailConfig mailConfig) { + this.mailConfig = mailConfig; + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java index 9747858ed7..9b2ea39299 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/PropertyConversion.java @@ -13,55 +13,55 @@ import org.springframework.util.unit.DataUnit; @ConfigurationProperties(prefix = "server") public class PropertyConversion { - private DataSize uploadSpeed; + private DataSize uploadSpeed; - @DataSizeUnit(DataUnit.GIGABYTES) - private DataSize downloadSpeed; + @DataSizeUnit(DataUnit.GIGABYTES) + private DataSize downloadSpeed; - private Duration backupDay; + private Duration backupDay; - @DurationUnit(ChronoUnit.HOURS) - private Duration backupHour; + @DurationUnit(ChronoUnit.HOURS) + private Duration backupHour; - private Credentials credentials; + private Credentials credentials; - public Duration getBackupDay() { - return backupDay; - } + public Duration getBackupDay() { + return backupDay; + } - public void setBackupDay(Duration backupDay) { - this.backupDay = backupDay; - } + public void setBackupDay(Duration backupDay) { + this.backupDay = backupDay; + } - public Duration getBackupHour() { - return backupHour; - } + public Duration getBackupHour() { + return backupHour; + } - public void setBackupHour(Duration backupHour) { - this.backupHour = backupHour; - } + public void setBackupHour(Duration backupHour) { + this.backupHour = backupHour; + } - public DataSize getUploadSpeed() { - return uploadSpeed; - } + public DataSize getUploadSpeed() { + return uploadSpeed; + } - public void setUploadSpeed(DataSize uploadSpeed) { - this.uploadSpeed = uploadSpeed; - } + public void setUploadSpeed(DataSize uploadSpeed) { + this.uploadSpeed = uploadSpeed; + } - public DataSize getDownloadSpeed() { - return downloadSpeed; - } + public DataSize getDownloadSpeed() { + return downloadSpeed; + } - public void setDownloadSpeed(DataSize downloadSpeed) { - this.downloadSpeed = downloadSpeed; - } + public void setDownloadSpeed(DataSize downloadSpeed) { + this.downloadSpeed = downloadSpeed; + } - public Credentials getCredentials() { - return credentials; - } + public Credentials getCredentials() { + return credentials; + } - public void setCredentials(Credentials credentials) { - this.credentials = credentials; - } + public void setCredentials(Credentials credentials) { + this.credentials = credentials; + } } diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java index bfacc6e679..0c9e62445a 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfig.java @@ -9,35 +9,35 @@ import org.springframework.context.annotation.Configuration; @ConfigurationProperties(prefix = "server") public class ServerConfig { - private Address address; - private Map resourcesPath; + private Address address; + private Map resourcesPath; - public static class Address { + public static class Address { - private String ip; + private String ip; - public String getIp() { - return ip; - } + public String getIp() { + return ip; + } - public void setIp(String ip) { - this.ip = ip; - } - } + public void setIp(String ip) { + this.ip = ip; + } + } - public Address getAddress() { - return address; - } + public Address getAddress() { + return address; + } - public void setAddress(Address address) { - this.address = address; - } + public void setAddress(Address address) { + this.address = address; + } - public Map getResourcesPath() { - return resourcesPath; - } + public Map getResourcesPath() { + return resourcesPath; + } - public void setResourcesPath(Map resourcesPath) { - this.resourcesPath = resourcesPath; - } + public void setResourcesPath(Map resourcesPath) { + this.resourcesPath = resourcesPath; + } } diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java index 8d74de1732..9d337123c7 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java @@ -7,9 +7,9 @@ import org.springframework.context.annotation.Configuration; @Configuration public class ServerConfigFactory { - @Bean - @ConfigurationProperties(prefix = "server.default") - public ServerConfig getDefaultConfigs() { - return new ServerConfig(); - } + @Bean + @ConfigurationProperties(prefix = "server.default") + public ServerConfig getDefaultConfigs() { + return new ServerConfig(); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java index a5bc09e290..743cb26a18 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java @@ -19,16 +19,18 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @TestPropertySource("classpath:server-config-test.properties") public class BindingPropertiesToBeanMethodsUnitTest { - @Autowired - private ServerConfigFactory configFactory; + @Autowired + private ServerConfigFactory configFactory; - @Test - void givenBeanAnnotatedMethod_whenBindingProperties_thenAllFieldsAreSet() { + @Test + void givenBeanAnnotatedMethod_whenBindingProperties_thenAllFieldsAreSet() { + assertEquals("192.168.0.2", configFactory.getDefaultConfigs() + .getAddress() + .getIp()); - assertEquals("192.168.0.2", configFactory.getDefaultConfigs().getAddress().getIp()); - - Map expectedResourcesPath = new HashMap<>(); - expectedResourcesPath.put("imgs", "/root/def/imgs"); - assertEquals(expectedResourcesPath, configFactory.getDefaultConfigs().getResourcesPath()); - } + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/root/def/imgs"); + assertEquals(expectedResourcesPath, configFactory.getDefaultConfigs() + .getResourcesPath()); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java index 96bbc6639a..9db906fa04 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToUserDefinedPOJOUnitTest.java @@ -17,16 +17,16 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @TestPropertySource("classpath:server-config-test.properties") public class BindingPropertiesToUserDefinedPOJOUnitTest { - @Autowired - private ServerConfig serverConfig; + @Autowired + private ServerConfig serverConfig; - @Test - void givenUserDefinedPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { + @Test + void givenUserDefinedPOJO_whenBindingPropertiesFile_thenAllFieldsAreSet() { + assertEquals("192.168.0.1", serverConfig.getAddress() + .getIp()); - assertEquals("192.168.0.1", serverConfig.getAddress().getIp()); - - Map expectedResourcesPath = new HashMap<>(); - expectedResourcesPath.put("imgs", "/root/imgs"); - assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); - } + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/root/imgs"); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java index eda8eb7f6b..5543f5e9e8 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingYMLPropertiesUnitTest.java @@ -18,16 +18,16 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @ActiveProfiles("test") public class BindingYMLPropertiesUnitTest { - @Autowired - private ServerConfig serverConfig; + @Autowired + private ServerConfig serverConfig; - @Test - void whenBindingYMLConfigFile_thenAllFieldsAreSet() { + @Test + void whenBindingYMLConfigFile_thenAllFieldsAreSet() { + assertEquals("192.168.0.4", serverConfig.getAddress() + .getIp()); - assertEquals("192.168.0.4", serverConfig.getAddress().getIp()); - - Map expectedResourcesPath = new HashMap<>(); - expectedResourcesPath.put("imgs", "/etc/test/imgs"); - assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); - } + Map expectedResourcesPath = new HashMap<>(); + expectedResourcesPath.put("imgs", "/etc/test/imgs"); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java index 8631308296..2779b0a313 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/OverridingConfigurationPropertiesUnitTest.java @@ -17,17 +17,17 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @TestPropertySource(properties = { "validate.mail_config.address=new_user@test" }) public class OverridingConfigurationPropertiesUnitTest { - @Autowired - private MailServer mailServer; + @Autowired + private MailServer mailServer; - @Test - void givenUsingPropertiesAttribute_whenAssiginingNewValueToProprty_thenSpringUsesNewValue() { + @Test + void givenUsingPropertiesAttribute_whenAssiginingNewValueToProprty_thenSpringUsesNewValue() { + assertEquals("new_user@test", mailServer.getMailConfig() + .getAddress()); - assertEquals("new_user@test", mailServer.getMailConfig().getAddress()); - - Map expectedMap = new HashMap<>(); - expectedMap.put("first", "prop1"); - expectedMap.put("second", "prop2"); - assertEquals(expectedMap, mailServer.getPropertiesMap()); - } + Map expectedMap = new HashMap<>(); + expectedMap.put("first", "prop1"); + expectedMap.put("second", "prop2"); + assertEquals(expectedMap, mailServer.getPropertiesMap()); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java index 8833011425..939471dd67 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/PropertyValidationUnitTest.java @@ -18,20 +18,22 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @TestPropertySource("classpath:property-validation-test.properties") public class PropertyValidationUnitTest { - @Autowired - private MailServer mailServer; + @Autowired + private MailServer mailServer; - private static Validator propertyValidator; + private static Validator propertyValidator; - @BeforeAll - public static void setup() { - propertyValidator = Validation.buildDefaultValidatorFactory().getValidator(); - } + @BeforeAll + public static void setup() { + propertyValidator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } - @Test - void whenBindingPropertiesToValidatedBeans_thenConstrainsAreChecked() { - - assertEquals(0, propertyValidator.validate(mailServer.getPropertiesMap()).size()); - assertEquals(0, propertyValidator.validate(mailServer.getMailConfig()).size()); - } + @Test + void whenBindingPropertiesToValidatedBeans_thenConstrainsAreChecked() { + assertEquals(0, propertyValidator.validate(mailServer.getPropertiesMap()) + .size()); + assertEquals(0, propertyValidator.validate(mailServer.getMailConfig()) + .size()); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java index d24d563de4..3f2da2a669 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/SpringPropertiesConversionUnitTest.java @@ -19,27 +19,26 @@ import org.springframework.util.unit.DataSize; @TestPropertySource("classpath:spring-conversion-test.properties") public class SpringPropertiesConversionUnitTest { - @Autowired - private PropertyConversion propertyConversion; + @Autowired + private PropertyConversion propertyConversion; - @Test - void whenUsingSpringDefaultSizeConversion_thenDataSizeObjectIsSet() { + @Test + void whenUsingSpringDefaultSizeConversion_thenDataSizeObjectIsSet() { + assertEquals(DataSize.ofMegabytes(500), propertyConversion.getUploadSpeed()); + assertEquals(DataSize.ofGigabytes(10), propertyConversion.getDownloadSpeed()); + } - assertEquals(DataSize.ofMegabytes(500), propertyConversion.getUploadSpeed()); - assertEquals(DataSize.ofGigabytes(10), propertyConversion.getDownloadSpeed()); - } + @Test + void whenUsingSpringDefaultDurationConversion_thenDurationObjectIsSet() { + assertEquals(Duration.ofDays(1), propertyConversion.getBackupDay()); + assertEquals(Duration.ofHours(8), propertyConversion.getBackupHour()); + } - @Test - void whenUsingSpringDefaultDurationConversion_thenDurationObjectIsSet() { - - assertEquals(Duration.ofDays(1), propertyConversion.getBackupDay()); - assertEquals(Duration.ofHours(8), propertyConversion.getBackupHour()); - } - - @Test - void whenRegisteringCustomCredentialsConverter_thenCredentialsAreParsed() { - - assertEquals("user", propertyConversion.getCredentials().getUsername()); - assertEquals("123", propertyConversion.getCredentials().getPassword()); - } + @Test + void whenRegisteringCustomCredentialsConverter_thenCredentialsAreParsed() { + assertEquals("user", propertyConversion.getCredentials() + .getUsername()); + assertEquals("123", propertyConversion.getCredentials() + .getPassword()); + } } \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml b/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml index 7dfd4d98a8..1b46b0f1ff 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml +++ b/spring-boot-modules/spring-boot-testing/src/test/resources/application.yml @@ -4,7 +4,7 @@ server: address: ip: 192.168.0.4 resources_path: - imgs: /etc/test/imgs + imgs: /etc/test/imgs --- spring: profiles: dev From 2b44a323ebcfd356a218accb5fbceab850dc1de5 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Thu, 27 Feb 2020 16:59:16 +0200 Subject: [PATCH 8/8] Autowiring ServerConfig in @Bean method test class --- .../configurationproperties/ServerConfigFactory.java | 2 +- .../BindingPropertiesToBeanMethodsUnitTest.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java index 9d337123c7..ca85d59112 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/boot/configurationproperties/ServerConfigFactory.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration; @Configuration public class ServerConfigFactory { - @Bean + @Bean(name = "default_bean") @ConfigurationProperties(prefix = "server.default") public ServerConfig getDefaultConfigs() { return new ServerConfig(); diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java index 743cb26a18..82c2a55c32 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/boot/configurationproperties/BindingPropertiesToBeanMethodsUnitTest.java @@ -8,6 +8,7 @@ import java.util.Map; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; @@ -20,17 +21,16 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; public class BindingPropertiesToBeanMethodsUnitTest { @Autowired - private ServerConfigFactory configFactory; + @Qualifier("default_bean") + private ServerConfig serverConfig; @Test void givenBeanAnnotatedMethod_whenBindingProperties_thenAllFieldsAreSet() { - assertEquals("192.168.0.2", configFactory.getDefaultConfigs() - .getAddress() + assertEquals("192.168.0.2", serverConfig.getAddress() .getIp()); Map expectedResourcesPath = new HashMap<>(); expectedResourcesPath.put("imgs", "/root/def/imgs"); - assertEquals(expectedResourcesPath, configFactory.getDefaultConfigs() - .getResourcesPath()); + assertEquals(expectedResourcesPath, serverConfig.getResourcesPath()); } } \ No newline at end of file