Deliver static files from filesystem
[Sone.git] / src / test / java / net / pterodactylus / sone / main / DefaultLoadersTest.java
1 package net.pterodactylus.sone.main;
2
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.hamcrest.Matchers.startsWith;
6 import static org.mockito.Mockito.mock;
7
8 import java.io.ByteArrayOutputStream;
9 import java.io.IOException;
10 import java.io.OutputStream;
11 import java.io.StringWriter;
12 import java.net.URI;
13 import java.net.URISyntaxException;
14
15 import net.pterodactylus.sone.web.page.FreenetRequest;
16 import net.pterodactylus.util.template.Template;
17 import net.pterodactylus.util.template.TemplateContext;
18 import net.pterodactylus.util.web.Method;
19 import net.pterodactylus.util.web.Page;
20 import net.pterodactylus.util.web.Response;
21
22 import freenet.clients.http.ToadletContext;
23 import freenet.support.api.HTTPRequest;
24
25 import org.junit.Test;
26
27 /**
28  * Unit test for {@link DefaultLoaders}.
29  *
30  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
31  */
32 public class DefaultLoadersTest {
33
34         private final Loaders loaders = new DefaultLoaders();
35         private final StringWriter stringWriter = new StringWriter();
36         private final TemplateContext templateContext = new TemplateContext();
37
38         @Test
39         public void templateCanBeLoadedFromTheClasspath() {
40                 Template template = loaders.loadTemplate("/net/pterodactylus/sone/main/template.txt");
41                 template.render(templateContext, stringWriter);
42                 assertThat(stringWriter.toString(), is("Template. bar\n"));
43         }
44
45         @Test
46         public void staticPageIsServedFromClasspath() throws IOException, URISyntaxException {
47                 Page<FreenetRequest> staticPage = loaders.loadStaticPage("text/", "/net/pterodactylus/sone/main/", "text/plain");
48                 URI uri = new URI("http://some.host/text/template.txt");
49                 Method method = Method.GET;
50                 HTTPRequest httpRequest = mock(HTTPRequest.class);
51                 ToadletContext toadletContext = mock(ToadletContext.class);
52                 FreenetRequest request = new FreenetRequest(uri, method, httpRequest, toadletContext);
53                 OutputStream outputStream = new ByteArrayOutputStream();
54                 Response response = new Response(outputStream);
55                 staticPage.handleRequest(request, response);
56                 assertThat(response.getContentType(), startsWith("text/plain"));
57                 assertThat(response.getStatusCode(), is(200));
58         }
59
60 }