/* * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * * Alfresco is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Alfresco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see . */ package org.alfresco.rest.search; import java.util.ArrayList; import java.util.List; import org.alfresco.utility.model.TestGroup; import org.alfresco.utility.testrail.ExecutionType; import org.alfresco.utility.testrail.annotation.TestRail; import org.hamcrest.Matchers; import org.springframework.http.HttpStatus; import org.testng.annotations.Test; import junit.framework.Assert; /** * Search end point Public API test. * @author Michael Suzuki * */ public class SearchTest extends AbstractSearchTest { @Test(groups={TestGroup.SEARCH, TestGroup.REST_API}) public void searchOnIndexedData() throws Exception { SearchResponse nodes = query(unique_searchString); restClient.assertStatusCodeIs(HttpStatus.OK); nodes.assertThat().entriesListIsNotEmpty(); SearchNodeModel entity = nodes.getEntryByIndex(0); entity.assertThat().field("search").contains("score"); entity.getSearch().assertThat().field("score").isNotEmpty(); Assert.assertEquals("pangram.txt",entity.getName()); } @Test(groups={TestGroup.SEARCH,TestGroup.REST_API}) public void searchNonIndexedData() throws Exception { SearchResponse nodes = query("yeti"); restClient.assertStatusCodeIs(HttpStatus.OK); nodes.assertThat().entriesListIsEmpty(); } @Test(groups = { TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }) @TestRail(section = {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }, executionType = ExecutionType.REGRESSION, description = "Checks its possible to include the original request in the response") public void searchWithRequest() throws Exception { SearchRequest query = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); queryReq.setQuery("fox"); query.setQuery(queryReq); query.setIncludeRequest(true); SearchResponse response = query(query); restClient.assertStatusCodeIs(HttpStatus.OK); response.getContext().assertThat().field("request").isNotEmpty(); } // Test that when fields parameter is set, only restricted fields appear in the response @Test(groups = { TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }) public void searchWithFields() throws Exception { SearchRequest query = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); queryReq.setQuery("alfresco"); query.setQuery(queryReq); // Restrict to fields: parentId List fields = new ArrayList(); fields.add("parentId"); query.setFields(fields); query(query); restClient.assertStatusCodeIs(HttpStatus.OK); // Only Field parentId is included in the response restClient.onResponse().assertThat().body("list.entries.entry[0].parentId", Matchers.notNullValue()); // Usual Fields such as 'name, id' aren't included in the response restClient.onResponse().assertThat().body("list.entries.entry[0].name", Matchers.nullValue()); restClient.onResponse().assertThat().body("list.entries.entry[0].id", Matchers.nullValue()); } }