mirror of
https://github.com/Febbweiss/springboot-react-webpack.git
synced 2026-03-04 22:25:34 +00:00
Feature: adds Docker packaging with docker profile + Clean: unused dependencies and testing
This commit is contained in:
199
pom.xml
199
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
<name>UI service project</name>
|
<name>UI service project</name>
|
||||||
<description>Default tools to build UI BFF</description>
|
<description>Default tools to build UI BFF</description>
|
||||||
<packaging>jar</packaging>
|
<packaging>${packaging.type}</packaging>
|
||||||
<url>http://www.open-groupe.com</url>
|
<url>http://www.open-groupe.com</url>
|
||||||
|
|
||||||
<scm>
|
<scm>
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<maven.deploy.skip>true</maven.deploy.skip>
|
<maven.deploy.skip>true</maven.deploy.skip>
|
||||||
<project.scm.id>jazzhub</project.scm.id>
|
<project.scm.id>jazzhub</project.scm.id>
|
||||||
|
<docker.image.prefix>opensaas</docker.image.prefix>
|
||||||
|
|
||||||
<jasmine.version>2.4.1</jasmine.version>
|
<jasmine.version>2.4.1</jasmine.version>
|
||||||
<jasmine-ajax.version>3.2.0</jasmine-ajax.version>
|
<jasmine-ajax.version>3.2.0</jasmine-ajax.version>
|
||||||
@@ -45,64 +46,6 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- Security -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-security</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.thymeleaf.extras</groupId>
|
|
||||||
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- Persistence -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-jdbc</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-tx</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-orm</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.hibernate</groupId>
|
|
||||||
<artifactId>hibernate-entitymanager</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.hsqldb</groupId>
|
|
||||||
<artifactId>hsqldb</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- Testing -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.jayway.jsonpath</groupId>
|
|
||||||
<artifactId>json-path</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.jayway.jsonpath</groupId>
|
|
||||||
<artifactId>json-path-assert</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.webjars</groupId>
|
|
||||||
<artifactId>jasmine</artifactId>
|
|
||||||
<version>${jasmine.version}</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.webjars</groupId>
|
|
||||||
<artifactId>jquery-mockjax</artifactId>
|
|
||||||
<version>1.5.3</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<!-- Monitoring -->
|
<!-- Monitoring -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
@@ -222,22 +165,6 @@
|
|||||||
</targetPath>
|
</targetPath>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
<execution>
|
|
||||||
<id>Compile test resources</id>
|
|
||||||
<phase>process-test-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>compile</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<extension>jsx</extension>
|
|
||||||
<sourcePath>
|
|
||||||
${project.basedir}/src/test/resources/static/js
|
|
||||||
</sourcePath>
|
|
||||||
<targetPath>
|
|
||||||
${project.basedir}/src/test/resources/static/js/compiled
|
|
||||||
</targetPath>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
@@ -260,64 +187,6 @@
|
|||||||
<extraConfigFile>${project.basedir}/src/main/wro/wro.properties</extraConfigFile>
|
<extraConfigFile>${project.basedir}/src/main/wro/wro.properties</extraConfigFile>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<!-- Testing -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.github.klieber</groupId>
|
|
||||||
<artifactId>phantomjs-maven-plugin</artifactId>
|
|
||||||
<version>0.7</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>install</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<configuration>
|
|
||||||
<version>2.1.1</version>
|
|
||||||
<skip>false</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.github.searls</groupId>
|
|
||||||
<artifactId>jasmine-maven-plugin</artifactId>
|
|
||||||
<version>2.1</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>test</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<configuration>
|
|
||||||
<webDriverClassName>org.openqa.selenium.phantomjs.PhantomJSDriver</webDriverClassName>
|
|
||||||
<webDriverCapabilities>
|
|
||||||
<capability>
|
|
||||||
<name>phantomjs.binary.path</name>
|
|
||||||
<value>${phantomjs.binary}</value>
|
|
||||||
</capability>
|
|
||||||
</webDriverCapabilities>
|
|
||||||
<preloadSources>
|
|
||||||
<preloadSource>/webjars/jquery.js</preloadSource>
|
|
||||||
<preloadSource>/webjars/react-with-addons.js</preloadSource>
|
|
||||||
<preloadSource>/webjars/react-dom.js</preloadSource>
|
|
||||||
<preloadSource>/webjars/jquery.mockjax.js</preloadSource>
|
|
||||||
<preloadSource>${project.basedir}/src/test/resources/jasmine/config.js</preloadSource>
|
|
||||||
</preloadSources>
|
|
||||||
<jsSrcDir>${project.build.directory}/classes/static/js</jsSrcDir>
|
|
||||||
<sourceIncludes>
|
|
||||||
<include>**/*.js</include>
|
|
||||||
</sourceIncludes>
|
|
||||||
<sourceExcludes>
|
|
||||||
<exclude>**/react-bootstrap.js</exclude>
|
|
||||||
<exclude>**/app.render.js</exclude>
|
|
||||||
</sourceExcludes>
|
|
||||||
<jsTestSrcDir>${project.basedir}/src/test/resources/static/js</jsTestSrcDir>
|
|
||||||
<specIncludes>
|
|
||||||
<include>**/*.spec.js</include>
|
|
||||||
</specIncludes>
|
|
||||||
<customRunnerTemplate>${project.basedir}/src/test/resources/jasmine/ReactJsSpecRunner.htmltemplate</customRunnerTemplate>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<!-- Release -->
|
<!-- Release -->
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
@@ -380,19 +249,6 @@
|
|||||||
<ignore></ignore>
|
<ignore></ignore>
|
||||||
</action>
|
</action>
|
||||||
</pluginExecution>
|
</pluginExecution>
|
||||||
<pluginExecution>
|
|
||||||
<pluginExecutionFilter>
|
|
||||||
<groupId>com.github.klieber</groupId>
|
|
||||||
<artifactId>phantomjs-maven-plugin</artifactId>
|
|
||||||
<versionRange>[0.7,)</versionRange>
|
|
||||||
<goals>
|
|
||||||
<goal>install</goal>
|
|
||||||
</goals>
|
|
||||||
</pluginExecutionFilter>
|
|
||||||
<action>
|
|
||||||
<ignore></ignore>
|
|
||||||
</action>
|
|
||||||
</pluginExecution>
|
|
||||||
</pluginExecutions>
|
</pluginExecutions>
|
||||||
</lifecycleMappingMetadata>
|
</lifecycleMappingMetadata>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -400,4 +256,55 @@
|
|||||||
</plugins>
|
</plugins>
|
||||||
</pluginManagement>
|
</pluginManagement>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>webapp</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>true</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<packaging.type>war</packaging.type>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>docker</id>
|
||||||
|
<properties>
|
||||||
|
<packaging.type>jar</packaging.type>
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<finalName>app</finalName>
|
||||||
|
<plugins>
|
||||||
|
<!-- Docker -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.spotify</groupId>
|
||||||
|
<artifactId>docker-maven-plugin</artifactId>
|
||||||
|
<version>0.2.3</version>
|
||||||
|
<configuration>
|
||||||
|
<goal>package</goal>
|
||||||
|
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
|
||||||
|
<dockerDirectory>src/main/docker</dockerDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<targetPath>/</targetPath>
|
||||||
|
<directory>${project.build.directory}</directory>
|
||||||
|
<include>${project.build.finalName}.jar</include>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>build-image</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>build</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
34
src/main/docker/Dockerfile
Normal file
34
src/main/docker/Dockerfile
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
FROM alpine:3.2
|
||||||
|
|
||||||
|
ENV JRE=jre1.8.0_77 \
|
||||||
|
JAVA_HOME=/opt/jre
|
||||||
|
|
||||||
|
# That's an 1.8.0_60 JRE from OpenJDK.net
|
||||||
|
# Courtesy to https://github.com/frol/docker-alpine-oraclejdk8 from where the setup of glibc is borrowed
|
||||||
|
RUN apk add --update wget curl ca-certificates && \
|
||||||
|
cd /tmp && \
|
||||||
|
wget -q "https://circle-artifacts.com/gh/andyshinn/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-glibc/packages/x86_64/glibc-2.21-r2.apk" \
|
||||||
|
"https://circle-artifacts.com/gh/andyshinn/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-glibc/packages/x86_64/glibc-bin-2.21-r2.apk" && \
|
||||||
|
apk add --allow-untrusted glibc-2.21-r2.apk glibc-bin-2.21-r2.apk && \
|
||||||
|
/usr/glibc/usr/bin/ldconfig /lib /usr/glibc/usr/lib && \
|
||||||
|
echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \
|
||||||
|
mkdir /opt && \
|
||||||
|
curl -sL -o /tmp/${JRE}.tgz --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jre-8u77-linux-x64.tar.gz" && \
|
||||||
|
cd /opt && tar xzf /tmp/${JRE}.tgz && \
|
||||||
|
ln -s /opt/${JRE} /opt/jre && \
|
||||||
|
ln -s /opt/jre/bin/java /usr/bin/java && \
|
||||||
|
apk del wget curl ca-certificates && \
|
||||||
|
cd /opt/jre/lib/amd64 && rm libjavafx_* libjfx* libfx* && \
|
||||||
|
cd /opt/jre/lib/ && rm -rf ext/jfxrt.jar jfxswt.jar javafx.properties font* && \
|
||||||
|
rm /tmp/* /var/cache/apk/*
|
||||||
|
|
||||||
|
VOLUME /tmp
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
ADD app.jar /
|
||||||
|
|
||||||
|
RUN sh -c 'touch /app.jar'
|
||||||
|
|
||||||
|
CMD ["sh"]
|
||||||
|
|
||||||
|
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.opengroupe.cloud.saas.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect;
|
|
||||||
import org.thymeleaf.spring4.SpringTemplateEngine;
|
|
||||||
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
|
|
||||||
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
|
|
||||||
import org.thymeleaf.templateresolver.TemplateResolver;
|
|
||||||
import org.thymeleaf.templateresolver.UrlTemplateResolver;
|
|
||||||
|
|
||||||
@org.springframework.context.annotation.Configuration
|
|
||||||
public class WebMvcConfiguration {
|
|
||||||
|
|
||||||
// @Bean
|
|
||||||
// public TemplateResolver templateResolver() {
|
|
||||||
// TemplateResolver templateResolver = new ThymeleafViewResolver().;
|
|
||||||
// templateResolver.setPrefix("/resources/templates");
|
|
||||||
// templateResolver.setSuffix(".html");
|
|
||||||
// templateResolver.setTemplateMode("HTML5");
|
|
||||||
// templateResolver.setCacheable(false);
|
|
||||||
// return templateResolver;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Bean
|
|
||||||
// public UrlTemplateResolver urlTemplateResolver() {
|
|
||||||
// return new UrlTemplateResolver();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Bean
|
|
||||||
// public SpringTemplateEngine templateEngine() {
|
|
||||||
// SpringTemplateEngine templateEngine = new SpringTemplateEngine();
|
|
||||||
//// templateEngine.addTemplateResolver(templateResolver());
|
|
||||||
// templateEngine.addTemplateResolver(urlTemplateResolver());
|
|
||||||
// templateEngine.addDialect(new SpringSecurityDialect());
|
|
||||||
// return templateEngine;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.opengroupe.cloud.saas.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.http.HttpMethod;
|
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
||||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebSecurity
|
|
||||||
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
||||||
@Override
|
|
||||||
protected void configure(HttpSecurity http) throws Exception {
|
|
||||||
http.csrf().disable()
|
|
||||||
.authorizeRequests()
|
|
||||||
.antMatchers(HttpMethod.GET, "/**").anonymous()
|
|
||||||
.antMatchers(HttpMethod.POST, "/api/**").anonymous()
|
|
||||||
.anyRequest().permitAll();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -23,12 +23,9 @@
|
|||||||
<li><a href="#" th:href="@{/task}">Tasks</a></li>
|
<li><a href="#" th:href="@{/task}">Tasks</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li th:if="${#authorization.expression('!isAuthenticated()')}">
|
<li>
|
||||||
<a href="/signin" th:href="@{/signin}">Sign in</a>
|
<a href="/signin" th:href="@{/signin}">Sign in</a>
|
||||||
</li>
|
</li>
|
||||||
<li th:if="${#authorization.expression('isAuthenticated()')}">
|
|
||||||
<a href="/logout" th:href="@{/logout}">Logout</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
package com.opengroupe.cloud.saas.rest;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
|
||||||
import static org.hamcrest.Matchers.hasSize;
|
|
||||||
import static org.hamcrest.Matchers.is;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.springframework.boot.test.SpringApplicationConfiguration;
|
|
||||||
import org.springframework.http.MediaType;
|
|
||||||
import org.springframework.mock.web.MockServletContext;
|
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
|
||||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
||||||
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
|
||||||
@SpringApplicationConfiguration(classes = MockServletContext.class)
|
|
||||||
@WebAppConfiguration
|
|
||||||
public class CommentControllerTest {
|
|
||||||
|
|
||||||
private MockMvc mvc;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() throws Exception {
|
|
||||||
mvc = MockMvcBuilders.standaloneSetup(new CommentController()).build();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getHello() throws Exception {
|
|
||||||
mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andExpect(content().string(equalTo("Greetings from Spring Boot!")));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getEmptyComment() throws Exception {
|
|
||||||
mvc.perform(MockMvcRequestBuilders.get("/api/comments").accept(MediaType.APPLICATION_JSON))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
|
|
||||||
.andExpect(jsonPath("$", hasSize(0)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void postComment() throws Exception {
|
|
||||||
mvc.perform(MockMvcRequestBuilders.post("/api/comments")
|
|
||||||
.accept(MediaType.APPLICATION_JSON)
|
|
||||||
.param("id", "1")
|
|
||||||
.param("author", "Lao Tzu")
|
|
||||||
.param("text", "The journey of a thousand miles begins with one step"))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
|
|
||||||
.andExpect(jsonPath("$", hasSize(1)))
|
|
||||||
.andExpect(jsonPath("$[0].id", is(1)))
|
|
||||||
.andExpect(jsonPath("$[0].author", is("Lao Tzu")))
|
|
||||||
.andExpect(jsonPath("$[0].text", is("The journey of a thousand miles begins with one step")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
package com.opengroupe.cloud.saas.web;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.springframework.boot.test.SpringApplicationConfiguration;
|
|
||||||
import org.springframework.http.MediaType;
|
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
|
||||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
|
||||||
|
|
||||||
import com.opengroupe.cloud.saas.Application;
|
|
||||||
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
|
||||||
@SpringApplicationConfiguration(classes = Application.class)
|
|
||||||
@WebAppConfiguration
|
|
||||||
public class ViewControllerTest {
|
|
||||||
private MockMvc mvc;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
WebApplicationContext wac;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() throws Exception {
|
|
||||||
|
|
||||||
// Process mock annotations
|
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
|
|
||||||
mvc = MockMvcBuilders.webAppContextSetup(wac).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getDefaultGreetings() throws Exception {
|
|
||||||
mvc.perform(MockMvcRequestBuilders.get("/greeting"))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andExpect(content().contentType(MediaType.TEXT_HTML_VALUE + ";charset=UTF-8"))
|
|
||||||
.andExpect(model().attribute("name", equalTo("World")))
|
|
||||||
.andExpect(view().name("greeting"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user