diff options
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.java | 52 |
1 files changed, 51 insertions, 1 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 d09bded2..464e9416 100644 --- a/juick-www/src/test/java/com/juick/www/WebAppTests.java +++ b/juick-www/src/test/java/com/juick/www/WebAppTests.java @@ -20,6 +20,7 @@ package com.juick.www; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.css.StyleElement; +import com.gargoylesoftware.htmlunit.html.DomElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.juick.Message; import com.juick.Tag; @@ -29,6 +30,7 @@ import com.juick.server.configuration.BaseWebConfiguration; import com.juick.service.MessagesService; import com.juick.service.UserService; import com.juick.test.util.MockUtils; +import com.juick.util.MessageUtils; import com.juick.www.configuration.SapeConfiguration; import com.juick.www.configuration.WwwAppConfiguration; import com.juick.www.configuration.WwwServletConfiguration; @@ -51,13 +53,16 @@ import javax.inject.Inject; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; 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.mockito.Mockito.when; /** @@ -195,4 +200,49 @@ public class WebAppTests { String output = writer.toString().trim(); assertThat(output, equalTo("<a href=\"/ugnich/?tag=%26gt%3B_%26lt%3B\">>_<</a>")); } + + public DomElement fetchMeta(String url, String name) throws IOException { + HtmlPage threadPage = webClient.getPage(url); + DomElement emptyMeta = new DomElement("", "meta", null, null); + return threadPage.getElementsByTagName("meta").stream() + .filter(t -> t.getAttribute("name").equals(name)).findFirst().orElse(emptyMeta); + } + @Test + public void testTwitterCards() throws Exception { + String ugnichName = "ugnich"; + String ugnichPassword = "MyPassw0rd!"; + String msgText = "Привет, я - Угнич"; + String hash = "12345678"; + + User user = MockUtils.mockUser(1, ugnichName, ugnichPassword); + Message msg = MockUtils.mockMessage(1, user, msgText); + + when(userService.getUIDbyName(ugnichName)) + .thenReturn(1); + when(userService.getUserByName(ugnichName)) + .thenReturn(user); + when(userService.getUserByUID(1)) + .thenReturn(Optional.of(user)); + when(userService.getFullyUserByName(ugnichName)) + .thenReturn(user); + when(messagesService.getMyFeed(1, 0)) + .thenReturn(Collections.singletonList(1)); + when(messagesService.getMessages(Collections.singletonList(1))) + .thenReturn(Collections.singletonList(msg)); + when(userService.getUIDbyHash(hash)) + .thenReturn(1); + when(messagesService.getMessageAuthor(1)).thenReturn(user); + when(messagesService.canViewThread(1, 0)).thenReturn(true); + when(messagesService.getMessage(1)).thenReturn(msg); + + assertThat(fetchMeta("http://localhost:8080/ugnich/1", "twitter:card") + .getAttribute("content"), equalTo("summary")); + msg.setAttachmentType("png"); + assertThat(fetchMeta("http://localhost:8080/ugnich/1", "twitter:card") + .getAttribute("content"), equalTo("summary_large_image")); + assertThat(fetchMeta("http://localhost:8080/ugnich/1", "og:description") + .getAttribute("content"), + startsWith(StringEscapeUtils.escapeHtml4(MessageUtils.getMessageHashTags(msg)))); + + } } |