123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- package com.provectus.kafka.ui.serdes;
- import static org.assertj.core.api.Assertions.assertThat;
- import static org.assertj.core.api.Assertions.assertThatCode;
- import java.util.List;
- import java.util.Map;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import org.junit.jupiter.api.Nested;
- import org.junit.jupiter.api.Test;
- import org.springframework.boot.context.properties.bind.BindException;
- import org.springframework.mock.env.MockEnvironment;
- class PropertyResolverImplTest {
- private static final String TEST_STRING_VALUE = "testStr";
- private static final int TEST_INT_VALUE = 123;
- private static final List<String> TEST_STRING_LIST = List.of("v1", "v2", "v3");
- private static final List<Integer> TEST_INT_LIST = List.of(1, 2, 3);
- private final MockEnvironment env = new MockEnvironment();
- @Data
- @AllArgsConstructor
- public static class CustomPropertiesClass {
- private String f1;
- private Integer f2;
- }
- @Test
- void returnsEmptyOptionalWhenPropertyNotExist() {
- var resolver = new PropertyResolverImpl(env);
- assertThat(resolver.getProperty("nonExistingProp", String.class)).isEmpty();
- assertThat(resolver.getListProperty("nonExistingProp", String.class)).isEmpty();
- assertThat(resolver.getMapProperty("nonExistingProp", String.class, String.class)).isEmpty();
- }
- @Test
- void throwsExceptionWhenPropertyCantBeResolverToRequstedClass() {
- env.setProperty("prop.0.strProp", "testStr");
- env.setProperty("prop.0.strLst", "v1,v2,v3");
- env.setProperty("prop.0.strMap.k1", "v1");
- var resolver = new PropertyResolverImpl(env);
- assertThatCode(() -> resolver.getProperty("prop.0.strProp", Integer.class))
- .isInstanceOf(BindException.class);
- assertThatCode(() -> resolver.getListProperty("prop.0.strLst", Integer.class))
- .isInstanceOf(BindException.class);
- assertThatCode(() -> resolver.getMapProperty("prop.0.strMap", Integer.class, String.class))
- .isInstanceOf(BindException.class);
- }
- @Test
- void resolvedSingleValueProperties() {
- env.setProperty("prop.0.strProp", "testStr");
- env.setProperty("prop.0.intProp", "123");
- var resolver = new PropertyResolverImpl(env);
- assertThat(resolver.getProperty("prop.0.strProp", String.class))
- .hasValue("testStr");
- assertThat(resolver.getProperty("prop.0.intProp", Integer.class))
- .hasValue(123);
- }
- @Test
- void resolvesListProperties() {
- env.setProperty("prop.0.strLst", "v1,v2,v3");
- env.setProperty("prop.0.intLst", "1,2,3");
- var resolver = new PropertyResolverImpl(env);
- assertThat(resolver.getListProperty("prop.0.strLst", String.class))
- .hasValue(List.of("v1", "v2", "v3"));
- assertThat(resolver.getListProperty("prop.0.intLst", Integer.class))
- .hasValue(List.of(1, 2, 3));
- }
- @Test
- void resolvesCustomConfigClassProperties() {
- env.setProperty("prop.0.custProps.f1", "f1val");
- env.setProperty("prop.0.custProps.f2", "1234");
- var resolver = new PropertyResolverImpl(env);
- assertThat(resolver.getProperty("prop.0.custProps", CustomPropertiesClass.class))
- .hasValue(new CustomPropertiesClass("f1val", 1234));
- }
- @Test
- void resolvesMapProperties() {
- env.setProperty("prop.0.strMap.k1", "v1");
- env.setProperty("prop.0.strMap.k2", "v2");
- env.setProperty("prop.0.intToLongMap.100", "111");
- env.setProperty("prop.0.intToLongMap.200", "222");
- var resolver = new PropertyResolverImpl(env);
- assertThat(resolver.getMapProperty("prop.0.strMap", String.class, String.class))
- .hasValue(Map.of("k1", "v1", "k2", "v2"));
- assertThat(resolver.getMapProperty("prop.0.intToLongMap", Integer.class, Long.class))
- .hasValue(Map.of(100, 111L, 200, 222L));
- }
- @Nested
- class WithPrefix {
- @Test
- void resolvedSingleValueProperties() {
- env.setProperty("prop.0.strProp", "testStr");
- env.setProperty("prop.0.intProp", "123");
- var resolver = new PropertyResolverImpl(env, "prop.0");
- assertThat(resolver.getProperty("strProp", String.class))
- .hasValue(TEST_STRING_VALUE);
- assertThat(resolver.getProperty("intProp", Integer.class))
- .hasValue(TEST_INT_VALUE);
- }
- @Test
- void resolvesListProperties() {
- env.setProperty("prop.0.strLst", "v1,v2,v3");
- env.setProperty("prop.0.intLst", "1,2,3");
- var resolver = new PropertyResolverImpl(env, "prop.0");
- assertThat(resolver.getListProperty("strLst", String.class))
- .hasValue(TEST_STRING_LIST);
- assertThat(resolver.getListProperty("intLst", Integer.class))
- .hasValue(TEST_INT_LIST);
- }
- @Test
- void resolvesCustomConfigClassProperties() {
- env.setProperty("prop.0.custProps.f1", "f1val");
- env.setProperty("prop.0.custProps.f2", "1234");
- var resolver = new PropertyResolverImpl(env, "prop.0");
- assertThat(resolver.getProperty("custProps", CustomPropertiesClass.class))
- .hasValue(new CustomPropertiesClass("f1val", 1234));
- }
- @Test
- void resolvesMapProperties() {
- env.setProperty("prop.0.strMap.k1", "v1");
- env.setProperty("prop.0.strMap.k2", "v2");
- env.setProperty("prop.0.intToLongMap.100", "111");
- env.setProperty("prop.0.intToLongMap.200", "222");
- var resolver = new PropertyResolverImpl(env, "prop.0.");
- assertThat(resolver.getMapProperty("strMap", String.class, String.class))
- .hasValue(Map.of("k1", "v1", "k2", "v2"));
- assertThat(resolver.getMapProperty("intToLongMap", Integer.class, Long.class))
- .hasValue(Map.of(100, 111L, 200, 222L));
- }
- }
- }
|