Merge branch 'next' into feature/album-and-image-links
[Sone.git] / src / test / java / net / pterodactylus / sone / main / DefaultLoadersTest.java
diff --git a/src/test/java/net/pterodactylus/sone/main/DefaultLoadersTest.java b/src/test/java/net/pterodactylus/sone/main/DefaultLoadersTest.java
new file mode 100644 (file)
index 0000000..0f0a9f1
--- /dev/null
@@ -0,0 +1,69 @@
+package net.pterodactylus.sone.main;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.startsWith;
+import static org.mockito.Mockito.mock;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import net.pterodactylus.sone.web.page.FreenetRequest;
+import net.pterodactylus.util.template.Template;
+import net.pterodactylus.util.template.TemplateContext;
+import net.pterodactylus.util.template.TemplateProvider;
+import net.pterodactylus.util.web.Method;
+import net.pterodactylus.util.web.Page;
+import net.pterodactylus.util.web.Response;
+
+import freenet.clients.http.ToadletContext;
+import freenet.support.api.HTTPRequest;
+
+import org.junit.Test;
+
+/**
+ * Unit test for {@link DefaultLoaders}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class DefaultLoadersTest {
+
+       private final Loaders loaders = new DefaultLoaders();
+       private final StringWriter stringWriter = new StringWriter();
+       private final TemplateContext templateContext = new TemplateContext();
+
+       @Test
+       public void templateCanBeLoadedFromTheClasspath() {
+               Template template = loaders.loadTemplate("/net/pterodactylus/sone/main/template.txt");
+               template.render(templateContext, stringWriter);
+               assertThat(stringWriter.toString(), is("Template. bar\n"));
+       }
+
+       @Test
+       public void staticPageIsServedFromClasspath() throws IOException, URISyntaxException {
+               Page<FreenetRequest> staticPage = loaders.loadStaticPage("text/", "/net/pterodactylus/sone/main/", "text/plain");
+               URI uri = new URI("http://some.host/text/template.txt");
+               Method method = Method.GET;
+               HTTPRequest httpRequest = mock(HTTPRequest.class);
+               ToadletContext toadletContext = mock(ToadletContext.class);
+               FreenetRequest request = new FreenetRequest(uri, method, httpRequest, toadletContext);
+               OutputStream outputStream = new ByteArrayOutputStream();
+               Response response = new Response(outputStream);
+               staticPage.handleRequest(request, response);
+               assertThat(response.getContentType(), startsWith("text/plain"));
+               assertThat(response.getStatusCode(), is(200));
+       }
+
+       @Test
+       public void templateIsLocatedInClasspath() {
+               TemplateProvider templateProvider = loaders.getTemplateProvider();
+               Template template = templateProvider.getTemplate(templateContext, "about.html");
+               assertThat(template, notNullValue());
+       }
+
+}