package pl.edu.icm.saos.api.entry.point; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup; import static pl.edu.icm.saos.api.ApiResponseAssertUtils.assertOk; import static pl.edu.icm.saos.api.ApiResponseAssertUtils.assertPageNotFoundError; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.MessageSource; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import pl.edu.icm.saos.api.ApiTestSupport; import pl.edu.icm.saos.api.dump.court.DumpCommonCourtsController; import pl.edu.icm.saos.api.dump.court.DumpCourtsListSuccessRepresentationBuilder; import pl.edu.icm.saos.api.search.parameters.ParametersExtractor; import pl.edu.icm.saos.api.services.interceptor.AccessControlHeaderHandlerInterceptor; import pl.edu.icm.saos.api.single.court.CommonCourtController; import pl.edu.icm.saos.api.single.court.SingleCourtSuccessRepresentationBuilder; import pl.edu.icm.saos.common.json.JsonFormatter; import pl.edu.icm.saos.common.testcommon.category.SlowTest; import pl.edu.icm.saos.persistence.common.TestObjectContext; import pl.edu.icm.saos.persistence.common.TestPersistenceObjectFactory; import pl.edu.icm.saos.persistence.repository.CommonCourtRepository; import pl.edu.icm.saos.persistence.search.DatabaseSearchService; /** * @author madryk */ @Category(SlowTest.class) public class NotExistingPageTest extends ApiTestSupport { @Autowired @Qualifier("apiMessageSource") private MessageSource apiMessageService; @Autowired private ParametersExtractor parametersExtractor; @Autowired private DatabaseSearchService databaseSearchService; @Autowired private CommonCourtRepository courtRepository; @Autowired private DumpCourtsListSuccessRepresentationBuilder dumpCourtsListSuccessRepresentationBuilder; @Autowired private SingleCourtSuccessRepresentationBuilder singleCourtSuccessRepresentationBuilder; @Autowired private JsonFormatter jsonFormatter; @Autowired private TestPersistenceObjectFactory testPersistenceObjectFactory; private TestObjectContext testObjectContext; private MockMvc mockMvc; @Before public void setUp() { testObjectContext = testPersistenceObjectFactory.createTestObjectContext(); MainEntryPointController mainEntryPointController = new MainEntryPointController(); mainEntryPointController.setApiMessageService(apiMessageService); mainEntryPointController.setJsonFormatter(jsonFormatter); CommonCourtController commonCourtController = new CommonCourtController(); commonCourtController.setCourtRepository(courtRepository); commonCourtController.setSingleCourtSuccessRepresentationBuilder(singleCourtSuccessRepresentationBuilder); commonCourtController.setJsonFormatter(jsonFormatter); DumpCommonCourtsController dumpCommonCourtsController = new DumpCommonCourtsController(); dumpCommonCourtsController.setParametersExtractor(parametersExtractor); dumpCommonCourtsController.setDatabaseSearchService(databaseSearchService); dumpCommonCourtsController.setDumpCourtsListSuccessRepresentationBuilder(dumpCourtsListSuccessRepresentationBuilder); dumpCommonCourtsController.setJsonFormatter(jsonFormatter); NotExistingPageController notExisitingPageController = new NotExistingPageController(); mainEntryPointController.setJsonFormatter(jsonFormatter); mockMvc = standaloneSetup( mainEntryPointController, commonCourtController, dumpCommonCourtsController, notExisitingPageController ) .addInterceptors(new AccessControlHeaderHandlerInterceptor()) .build(); } //------------------------ TESTS -------------------------- @Test public void should_answer_ok() throws Exception { // execute & assert requestPageAndAssertOk("/api"); requestPageAndAssertOk("/api/commonCourts/" + testObjectContext.getCcCourtId()); requestPageAndAssertOk("/api/dump/commonCourts"); } @Test public void should_answer_with_page_not_found() throws Exception { // execute & assert requestPageAndAssertPageNotFound("/api/invalidpath"); requestPageAndAssertPageNotFound("/api/commonCourts/1/invalid"); requestPageAndAssertPageNotFound("/api/dump"); requestPageAndAssertPageNotFound("/api/dump/commonCourts/a"); requestPageAndAssertPageNotFound("/api/dump/common"); } //------------------------ PRIVATE -------------------------- private void requestPageAndAssertOk(String path) throws Exception { ResultActions actions = mockMvc.perform(get(path) .accept(MediaType.APPLICATION_JSON)); assertOk(actions); } private void requestPageAndAssertPageNotFound(String path) throws Exception { ResultActions actions = mockMvc.perform(get(path) .accept(MediaType.APPLICATION_JSON)); assertPageNotFoundError(actions); } }