/*
* Copyright 2015 Hewlett-Packard Development Company, L.P.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
*/
package com.hp.autonomy.frontend.find.core.search;
import com.hp.autonomy.frontend.find.core.test.AbstractFindIT;
import com.hp.autonomy.searchcomponents.core.search.QueryRequest;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.Matchers.empty;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@SuppressWarnings("ProhibitedExceptionDeclared")
public abstract class AbstractDocumentServiceIT extends AbstractFindIT {
@Test
public void query() throws Exception {
final MockHttpServletRequestBuilder requestBuilder = get(DocumentsController.SEARCH_PATH + '/' + DocumentsController.QUERY_PATH)
.param(DocumentsController.TEXT_PARAM, "*")
.param(DocumentsController.RESULTS_START_PARAM, "1")
.param(DocumentsController.MAX_RESULTS_PARAM, "50")
.param(DocumentsController.SUMMARY_PARAM, "context")
.param(DocumentsController.INDEXES_PARAM, mvcIntegrationTestUtils.getDatabases())
.with(authentication(userAuth()));
mockMvc.perform(requestBuilder)
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.documents", not(empty())));
}
@Test
public void queryWithPagination() throws Exception {
final MockHttpServletRequestBuilder requestBuilder = get(DocumentsController.SEARCH_PATH + '/' + DocumentsController.QUERY_PATH)
.param(DocumentsController.TEXT_PARAM, "*")
.param(DocumentsController.RESULTS_START_PARAM, "10")
.param(DocumentsController.MAX_RESULTS_PARAM, "20")
.param(DocumentsController.AUTO_CORRECT_PARAM, "false")
.param(DocumentsController.SUMMARY_PARAM, "context")
.param(DocumentsController.INDEXES_PARAM, mvcIntegrationTestUtils.getDatabases())
.param(DocumentsController.QUERY_TYPE_PARAM, QueryRequest.QueryType.MODIFIED.name())
.with(authentication(userAuth()));
mockMvc.perform(requestBuilder)
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.documents", not(empty())));
}
@Test
public void queryForPromotions() throws Exception {
final MockHttpServletRequestBuilder requestBuilder = get(DocumentsController.SEARCH_PATH + '/' + DocumentsController.QUERY_PATH)
.param(DocumentsController.TEXT_PARAM, "*")
.param(DocumentsController.RESULTS_START_PARAM, "1")
.param(DocumentsController.MAX_RESULTS_PARAM, "50")
.param(DocumentsController.SUMMARY_PARAM, "context")
.param(DocumentsController.INDEXES_PARAM, mvcIntegrationTestUtils.getDatabases())
.param(DocumentsController.QUERY_TYPE_PARAM, QueryRequest.QueryType.PROMOTIONS.name())
.with(authentication(userAuth()));
mockMvc.perform(requestBuilder)
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.documents", empty()));
}
@Test
public void findSimilar() throws Exception {
final String reference = mvcIntegrationTestUtils.getValidReference(mockMvc);
final MockHttpServletRequestBuilder requestBuilder = get(DocumentsController.SEARCH_PATH + '/' + DocumentsController.SIMILAR_DOCUMENTS_PATH)
.param(DocumentsController.REFERENCE_PARAM, reference)
.param(DocumentsController.INDEXES_PARAM, mvcIntegrationTestUtils.getDatabases())
.param(DocumentsController.MAX_RESULTS_PARAM, "50")
.param(DocumentsController.SUMMARY_PARAM, "context")
.with(authentication(userAuth()));
mockMvc.perform(requestBuilder)
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.documents", not(empty())));
}
@Test
public void getDocumentContent() throws Exception {
final String reference = mvcIntegrationTestUtils.getValidReference(mockMvc);
final MockHttpServletRequestBuilder requestBuilder = get(DocumentsController.SEARCH_PATH + '/' + DocumentsController.GET_DOCUMENT_CONTENT_PATH)
.param(DocumentsController.REFERENCE_PARAM, reference)
.param(DocumentsController.DATABASE_PARAM, mvcIntegrationTestUtils.getDatabases()[0])
.with(authentication(userAuth()));
mockMvc.perform(requestBuilder)
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$", not(nullValue())));
}
}