import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.startsWith;
+import static org.mockito.Mockito.mock;
+import java.io.ByteArrayOutputStream;
import java.io.File;
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 com.google.common.base.Charsets;
import com.google.common.io.Files;
/**
* Unit test for {@link DebugLoaders}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DebugLoadersTest {
private final StringWriter stringWriter = new StringWriter();
private final TemplateContext templateContext = new TemplateContext();
- private String templatePath;
private Loaders loaders;
@Before
public void setupLoader() throws IOException {
- templatePath = temporaryFolder.newFolder("temps").getPath();
+ String templatePath = temporaryFolder.newFolder("temps").getPath();
loaders = new DebugLoaders(templatePath);
+ File templateFile = new File(templatePath, "template.txt");
+ Files.write("<%if foo>foo<%else>bar<%/if>", templateFile, Charsets.UTF_8);
+ new File(templatePath, "templates").mkdir();
+ File secondTemplateFile = new File(templatePath, "templates/template.txt");
+ Files.write("<%if foo>foo<%else>bar<%/if>", secondTemplateFile, Charsets.UTF_8);
}
@Test
public void debugLoaderCanLoadTemplatesFromFilesystem() throws IOException {
- File templateFile = new File(templatePath, "template.txt");
- Files.write("<%if foo>foo<%else>bar<%/if>", templateFile, Charsets.UTF_8);
Template template = loaders.loadTemplate("/template.txt");
template.render(templateContext, stringWriter);
assertThat(stringWriter.toString(), is("bar"));
}
+ @Test
+ public void staticPageIsServedFromFilesystem() throws URISyntaxException, IOException {
+ Page<FreenetRequest> page = loaders.loadStaticPage("text/", "", "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);
+ page.handleRequest(request, response);
+ assertThat(response.getContentType(), startsWith("text/plain"));
+ assertThat(response.getStatusCode(), is(200));
+ }
+
+ @Test
+ public void templateProviderLocatesTemplatesInFileSystem() {
+ TemplateProvider templateProvider = loaders.getTemplateProvider();
+ Template template = templateProvider.getTemplate(templateContext, "template.txt");
+ template.render(templateContext, stringWriter);
+ assertThat(stringWriter.toString(), is("bar"));
+ }
+
}