package com.edulify.modules.sitemap; import org.fest.assertions.Assertions; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import play.mvc.Call; import play.mvc.Http; import play.mvc.Result; import play.Application; import play.test.Helpers; public class SitemapControllerTest { private static Application application; @BeforeClass public static void startApp() { application = Helpers.fakeApplication(); Helpers.start(application); } @Test @SuppressWarnings("rawtypes") public void should_return_not_found_if_sitemap_file_does_not_exists() { Call action = routes.Sitemaps.sitemap("-fake"); Http.RequestBuilder request = Helpers.fakeRequest(action); Result result = Helpers.route(request); Assertions.assertThat(result.status()).isEqualTo(Helpers.NOT_FOUND); } @Test @SuppressWarnings("rawtypes") public void should_return_sitemap_file_when_it_does_exists() { Call action = routes.Sitemaps.sitemap("-blog"); Http.RequestBuilder request = Helpers.fakeRequest(action); Result result = Helpers.route(request); Assertions.assertThat(result.status()).isEqualTo(Helpers.OK); } @Test @SuppressWarnings("rawtypes") public void should_return_sitemap_file_root() { Call action = routes.Sitemaps.sitemap(""); Http.RequestBuilder request = Helpers.fakeRequest(action); Result result = Helpers.route(request); Assertions.assertThat(result.status()).isEqualTo(Helpers.OK); } @Test @SuppressWarnings("rawtypes") public void should_return_sitemap_file_index() { Call action = routes.Sitemaps.sitemap("_index"); Http.RequestBuilder request = Helpers.fakeRequest(action); Result result = Helpers.route(request); Assertions.assertThat(result.status()).isEqualTo(Helpers.OK); } @Test @SuppressWarnings("rawtypes") public void should_handle_malicious_directory_transversing_attack() { Call action = routes.Sitemaps.sitemap("../conf/application.conf"); Http.RequestBuilder request = Helpers.fakeRequest(action); Result result = Helpers.route(request); Assertions.assertThat(result.status()).isEqualTo(Helpers.NOT_FOUND); } @Test @SuppressWarnings("rawtypes") public void should_return_not_found_when_given_path_is_a_directory() { Call action = routes.Sitemaps.sitemap("javascripts"); Http.RequestBuilder request = Helpers.fakeRequest(action); Result result = Helpers.route(request); Assertions.assertThat(result.status()).isEqualTo(Helpers.NOT_FOUND); } @AfterClass public static void stopApp() { Helpers.stop(application); } }