aboutsummaryrefslogtreecommitdiff
path: root/juick-www/src/test/java/com/juick/www/WebAppTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-www/src/test/java/com/juick/www/WebAppTests.java')
-rw-r--r--juick-www/src/test/java/com/juick/www/WebAppTests.java62
1 files changed, 57 insertions, 5 deletions
diff --git a/juick-www/src/test/java/com/juick/www/WebAppTests.java b/juick-www/src/test/java/com/juick/www/WebAppTests.java
index 73750cb7..48f465aa 100644
--- a/juick-www/src/test/java/com/juick/www/WebAppTests.java
+++ b/juick-www/src/test/java/com/juick/www/WebAppTests.java
@@ -32,6 +32,7 @@ import com.juick.service.MockImagesService;
import com.juick.service.UserService;
import com.juick.util.MessageUtils;
import com.juick.www.configuration.SapeConfiguration;
+import com.juick.www.configuration.WebSecurityConfig;
import com.juick.www.configuration.WwwAppConfiguration;
import com.juick.www.configuration.WwwServletConfiguration;
import com.mitchellbosecke.pebble.PebbleEngine;
@@ -44,15 +45,20 @@ import org.junit.runner.RunWith;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.context.ContextConfiguration;
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.MvcResult;
import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import javax.inject.Inject;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
@@ -63,6 +69,11 @@ import java.util.stream.StreamSupport;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.startsWith;
+import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* Created by vitalyster on 12.01.2017.
@@ -71,11 +82,10 @@ import static org.hamcrest.Matchers.startsWith;
@WebAppConfiguration
@ContextConfiguration(classes = {
WwwServletConfiguration.class, WwwAppConfiguration.class, SapeConfiguration.class,
- RepositoryConfiguration.class
+ RepositoryConfiguration.class, WebSecurityConfig.class
})
public class WebAppTests {
@Configuration
- @EnableWebMvc
@ComponentScan(basePackages = "com.juick.www.controllers")
static class Config {
@Bean
@@ -89,6 +99,7 @@ public class WebAppTests {
@Inject
private WebApp webApp;
+ private static MockMvc mockMvc;
private static WebClient webClient;
@Inject
@@ -109,7 +120,10 @@ public class WebAppTests {
@Before
public void setup() {
if (!isSetUp) {
- webClient = MockMvcWebClientBuilder.webAppContextSetup(this.wac).build();
+ mockMvc = MockMvcBuilders.webAppContextSetup(wac)
+ .apply(springSecurity())
+ .build();
+ webClient = MockMvcWebClientBuilder.mockMvcSetup(mockMvc).build();
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
@@ -196,6 +210,44 @@ public class WebAppTests {
assertThat(fetchMeta(String.format("http://localhost:8080/ugnich/%d", mid2), "og:description")
.getAttribute("content"),
startsWith(StringEscapeUtils.escapeHtml4(MessageUtils.getMessageHashTags(message))));
-
+ }
+ @Test
+ public void postMessageTests() throws Exception {
+ mockMvc.perform(post("/post").param("body", "yo")).andExpect(redirectedUrl("http://localhost/login"));
+ MvcResult loginResult = mockMvc.perform(post("/login")
+ .param("username", ugnichName)
+ .param("password", ugnichPassword)).andReturn();
+ mockMvc.perform(post("/post")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("wrong_param", "yo")).andExpect(status().isBadRequest());
+ mockMvc.perform(post("/post")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("body", "yo")).andExpect(status().isOk());
+ mockMvc.perform(post("/post")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("img", "http://static.juick.com/settings/facebook.png")).andExpect(status().isOk());
+ mockMvc.perform(post("/post")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("img", "bad_url")).andExpect(status().isBadRequest());
+ FileInputStream fi = new FileInputStream(new ClassPathResource("tagscloud.png").getFile());
+ MockMultipartFile file = new MockMultipartFile("attach", fi);
+ mockMvc.perform(multipart("/post")
+ .file(file)
+ .cookie(loginResult.getResponse().getCookies())).andExpect(status().isOk());
+ int mid = messagesService.createMessage(ugnich.getUid(), "dummy message", null, null);
+ mockMvc.perform(post("/comment")
+ .param("mid", String.valueOf(mid))
+ .param("body", "yo")).andExpect(redirectedUrl("http://localhost/login"));
+ mockMvc.perform(post("/comment")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("wrong_param", "yo")).andExpect(status().isBadRequest());
+ mockMvc.perform(post("/comment")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("mid", String.valueOf(mid))
+ .param("wrong_param", "yo")).andExpect(status().isBadRequest());
+ mockMvc.perform(post("/comment")
+ .cookie(loginResult.getResponse().getCookies())
+ .param("mid", String.valueOf(mid))
+ .param("body", "yo")).andExpect(redirectedUrl(String.format("/%s/%d#%d", ugnichName, mid, 1)));
}
}