1 package de.juplo.autoconfigure;
4 import de.juplo.thymeproxy.ProxyTemplateResolver;
6 import static org.junit.Assert.assertEquals;
7 import static org.junit.Assert.assertNotEquals;
8 import static org.junit.Assert.assertNotNull;
9 import static org.junit.Assert.assertNull;
10 import static org.junit.Assert.assertTrue;
11 import static org.junit.Assert.fail;
12 import org.junit.Test;
13 import org.springframework.context.annotation.Configuration;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16 import org.springframework.beans.BeansException;
17 import org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer;
18 import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
19 import org.springframework.boot.test.EnvironmentTestUtils;
20 import org.springframework.context.ConfigurableApplicationContext;
21 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
22 import org.springframework.context.annotation.Bean;
23 import org.thymeleaf.templateresolver.ITemplateResolver;
24 import org.thymeleaf.templateresolver.TemplateResolver;
28 public class ThymeproxyAutoConfigurationTest
30 private final Logger LOG =
31 LoggerFactory.getLogger(ThymeproxyAutoConfigurationTest.class);
35 public void propertyBinding() throws Exception
37 LOG.info("<-- Start Of New Test-Case!");
39 ConfigurableApplicationContext context;
40 ThymeproxyProperties properties;
43 EmptyConfiguration.class,
44 "thymeproxy.name=Thymeproxy",
45 "thymeproxy.origins[0].uri=http://localhost:8080/test/",
46 "thymeproxy.origins[0].patterns[0]=^/css/",
47 "thymeproxy.origins[0].patterns[1]=^/img/",
48 "thymeproxy.origins[0].patterns[2]=*\\.xml$",
49 "thymeproxy.origins[1].uri=http://127.0.0.1:8081",
50 "thymeproxy.origins[1].ttl=30000"
52 properties = context.getBean(ThymeproxyProperties.class);
53 assertNotNull(properties);
54 assertEquals("Thymeproxy", properties.name);
55 assertNotNull(properties.origins);
56 assertEquals(2, properties.origins.size());
57 assertEquals(new URI("http://localhost:8080/test/"), properties.origins.get(0).uri);
58 assertNotNull(properties.origins.get(0).patterns);
59 assertEquals(3, properties.origins.get(0).patterns.size());
60 assertEquals("^/css/", properties.origins.get(0).patterns.get(0));
61 assertEquals("^/img/", properties.origins.get(0).patterns.get(1));
62 assertEquals("*\\.xml$", properties.origins.get(0).patterns.get(2));
63 assertNull(properties.origins.get(0).ttl);
64 assertEquals(new URI("http://127.0.0.1:8081"), properties.origins.get(1).uri);
65 assertNotNull(properties.origins.get(1).patterns);
66 assertEquals(0, properties.origins.get(1).patterns.size());
67 assertEquals(new Long(30000l), properties.origins.get(1).ttl);
72 public void defaultConfiguration()
74 LOG.info("<-- Start Of New Test-Case!");
76 ConfigurableApplicationContext context = load(EmptyConfiguration.class);
78 ITemplateResolver resolver =
79 (ITemplateResolver)context.getBean("defaultTemplateResolver");
80 assertNotNull(resolver);
82 "Expected an instance of type TemplateResolver",
83 resolver instanceof TemplateResolver
85 assertNotEquals(DefaultTemplateResolverConfiguration.RESOLVER, resolver);
91 public void defaultTemplateResolverConfigured()
93 LOG.info("<-- Start Of New Test-Case!");
95 ConfigurableApplicationContext context =
96 load(DefaultTemplateResolverConfiguration.class);
98 ITemplateResolver resolver =
99 (ITemplateResolver)context.getBean("defaultTemplateResolver");
100 assertNotNull(resolver);
102 "Expected an instance of type TemplateResolver",
103 resolver instanceof TemplateResolver
105 assertEquals(DefaultTemplateResolverConfiguration.RESOLVER, resolver);
111 public void proxiesConfigured()
113 LOG.info("<-- Start Of New Test-Case!");
115 ConfigurableApplicationContext context = load(
116 EmptyConfiguration.class,
117 "thymeproxy.name=Thymeproxy",
118 "thymeproxy.origins[0].uri=http://localhost:8080/test/",
119 "thymeproxy.origins[0].patterns[0]=^/css/",
120 "thymeproxy.origins[0].patterns[1]=^/img/",
121 "thymeproxy.origins[0].patterns[2]=*\\.xml$",
122 "thymeproxy.origins[1].uri=http://127.0.0.1:8081",
123 "thymeproxy.origins[1].ttl=30000"
126 ITemplateResolver resolver;
127 ProxyTemplateResolver proxy;
129 resolver = (ITemplateResolver)context.getBean("defaultTemplateResolver");
130 assertNotNull(resolver);
132 "Expected an instance of type ProxyTemplateResolver",
133 resolver instanceof ProxyTemplateResolver
135 proxy = (ProxyTemplateResolver)resolver;
136 assertEquals("0: localhost", proxy.getName());
137 assertEquals(new Integer(0), proxy.getOrder());
138 assertEquals("http://localhost:8080/test/", proxy.getOrigin());
139 assertNull(proxy.getDefaultTTL());
141 resolver = (ITemplateResolver)context.getBean("proxy1");
142 assertNotNull(resolver);
144 "Expected an instance of type ProxyTemplateResolver",
145 resolver instanceof ProxyTemplateResolver
147 proxy = (ProxyTemplateResolver)resolver;
148 assertEquals("1: 127.0.0.1", proxy.getName());
149 assertEquals(new Integer(1), proxy.getOrder());
150 assertEquals("http://127.0.0.1:8081", proxy.getOrigin());
151 assertEquals(new Long(30000l), proxy.getDefaultTTL());
157 public void proxiesAndDefaultTemplateResolverConfigured()
159 LOG.info("<-- Start Of New Test-Case!");
161 ConfigurableApplicationContext context = load(
162 DefaultTemplateResolverConfiguration.class,
163 "thymeproxy.name=Thymeproxy",
164 "thymeproxy.origins[0].uri=http://localhost:8080/test/",
165 "thymeproxy.origins[0].patterns[0]=^/css/",
166 "thymeproxy.origins[0].patterns[1]=^/img/",
167 "thymeproxy.origins[0].patterns[2]=*\\.xml$",
168 "thymeproxy.origins[1].uri=http://127.0.0.1:8081",
169 "thymeproxy.origins[1].ttl=30000"
172 ITemplateResolver resolver;
173 ProxyTemplateResolver proxy;
175 resolver = (ITemplateResolver)context.getBean("defaultTemplateResolver");
176 assertNotNull(resolver);
178 "Expected an instance of type TemplateResolver",
179 resolver instanceof TemplateResolver
181 assertEquals(DefaultTemplateResolverConfiguration.RESOLVER, resolver);
185 resolver = (ITemplateResolver)context.getBean("proxy1");
186 fail("Found bean for name proxy1: " + resolver);
188 catch (BeansException e)
190 LOG.info(e.toString());
198 static class EmptyConfiguration
203 static class DefaultTemplateResolverConfiguration
205 public static TemplateResolver RESOLVER = new TemplateResolver();
208 public TemplateResolver defaultTemplateResolver()
215 private ConfigurableApplicationContext load(Class<?> config, String... pairs)
217 AnnotationConfigApplicationContext ctx =
218 new AnnotationConfigApplicationContext();
219 EnvironmentTestUtils.addEnvironment(ctx, pairs);
220 ctx.register(HttpClientAutoConfiguration.class);
221 ctx.register(ThymeleafAutoConfiguration.class);
222 ctx.register(ThymeproxyAutoConfiguration.class);
223 ctx.register(config);
224 AutoConfigurationReportLoggingInitializer report =
225 new AutoConfigurationReportLoggingInitializer();
226 report.initialize(ctx);