From 1c7f2a663418d7d63afcca99dab9b4bd62469c70 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 26 Mar 2018 13:16:28 +0100 Subject: [PATCH 01/37] Added SearchSuite.xml for easy running SearchTests on CI --- e2e-test/resources/SearchSuite.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 e2e-test/resources/SearchSuite.xml diff --git a/e2e-test/resources/SearchSuite.xml b/e2e-test/resources/SearchSuite.xml new file mode 100644 index 000000000..6c4166b94 --- /dev/null +++ b/e2e-test/resources/SearchSuite.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + From ec9fcb906088df8157ff365e3aee17e248b63232 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 27 Mar 2018 18:18:48 +0100 Subject: [PATCH 02/37] BeforeClass changed to BeforeSuite to run data creation just once per Test Suite --- .../rest/search/AbstractSearchTest.java | 58 ++++++++-- .../rest/search/FacetedSearchTest.java | 106 ++++++++++-------- .../alfresco/rest/search/SearchAPATHTest.java | 4 +- .../sharedLinks/SharedLinksSanityTests.java | 2 - 4 files changed, 106 insertions(+), 64 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index 4eeb2abc6..da422b633 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -18,15 +18,18 @@ */ package org.alfresco.rest.search; +import org.alfresco.dataprep.SiteService.Visibility; import org.alfresco.rest.RestTest; import org.alfresco.rest.model.builder.NodesBuilder; +import org.alfresco.utility.Utility; +import org.alfresco.utility.data.RandomData; import org.alfresco.utility.model.ContentModel; import org.alfresco.utility.model.FileModel; import org.alfresco.utility.model.FileType; import org.alfresco.utility.model.FolderModel; import org.alfresco.utility.model.SiteModel; import org.alfresco.utility.model.UserModel; -import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeSuite; /** * Abstract Search test class that contains useful methods @@ -40,37 +43,68 @@ import org.testng.annotations.BeforeClass; */ public class AbstractSearchTest extends RestTest { - protected static final String SEARCH_DATA_SAMPLE_FOLDER = "folder"; - UserModel userModel, adminUserModel; + protected static final String SEARCH_DATA_SAMPLE_FOLDER = "FolderSearch"; + protected static final String SEARCH_SITE_PUBLIC = RandomData.getRandomName("SiteSearch"); + protected static final String SEARCH_USER1 = "UserSearch1"; + protected static final String SEARCH_USER2 = "UserSearch2"; + protected static String unique_searchString; + + UserModel userModel, adminUserModel, userModel2; SiteModel siteModel; UserModel searchedUser; NodesBuilder nodesBuilder; - protected FileModel file,file2; - @BeforeClass(alwaysRun = true) + protected FileModel file, file2, file3, file4; + + @BeforeSuite(alwaysRun = true) public void dataPreparation() throws Exception { adminUserModel = dataUser.getAdminUser(); - userModel = dataUser.createRandomTestUser(); - siteModel = dataSite.usingUser(userModel).createPublicRandomSite(); + userModel = dataUser.createRandomTestUser(SEARCH_USER1); + userModel2 = dataUser.createRandomTestUser(SEARCH_USER2); + + siteModel = new SiteModel(RandomData.getRandomName(SEARCH_SITE_PUBLIC)); + siteModel.setVisibility(Visibility.PUBLIC); + + siteModel = dataSite.usingUser(userModel).createSite(siteModel); + + unique_searchString = siteModel.getTitle(); //userModel.getUsername(); + /* * Create the following file structure for preconditions : * |- folder * |-- pangram.txt - * |-- cars.pdf + * |-- cars.txt + * |-- alfresco.txt */ nodesBuilder = restClient.authenticateUser(userModel).withCoreAPI().usingNode(ContentModel.my()).defineNodes(); FolderModel folder = new FolderModel(SEARCH_DATA_SAMPLE_FOLDER); dataContent.usingUser(userModel).usingSite(siteModel).createFolder(folder); + //Create files - file = new FileModel("pangram.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy dog"); - file2 = new FileModel("cars.txt", FileType.TEXT_PLAIN, "The landrover discovery is not a sports car"); + String title = "Title: " + unique_searchString; + String description = "Description: File is created for search tests by Author: " + unique_searchString + " . "; + + file = new FileModel("pangram.txt", "pangram" + title, description, FileType.TEXT_PLAIN, description + " The quick brown fox jumps over the lazy dog"); + + file2 = new FileModel("cars.txt", "cars" + title, description, FileType.TEXT_PLAIN, "The landrover discovery is not a sports car "); + + file3 = new FileModel("alfresco.txt", "alfresco" + title, description, FileType.TEXT_PLAIN, "Alfresco text file for search "); + + file4 = new FileModel(unique_searchString, "unique" + title, description, FileType.TEXT_PLAIN, "Unique text file for search "); + ContentModel cm = new ContentModel(); cm.setCmisLocation(folder.getCmisLocation()); cm.setName(folder.getName()); - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(cm).createContent(file); - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(cm).createContent(file2); + + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file); + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file2); + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file3); + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file4); + + Utility.waitToLoopTime(60, "Wait For Index"); } + /** * Helper method which create an http post request to Search API end point. * @param term String search term diff --git a/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java b/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java index a8eccf613..8722f10a3 100644 --- a/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java @@ -36,9 +36,6 @@ import org.testng.annotations.Test; public class FacetedSearchTest extends AbstractSearchTest { - @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 facet queries for the Search api") /** * Perform the below facet query. * { @@ -89,13 +86,16 @@ public class FacetedSearchTest extends AbstractSearchTest * }} * @throws Exception */ + + @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 facet queries for the Search api") public void searchWithQueryFaceting() throws Exception - { + { SearchRequest query = new SearchRequest(); - RestRequestQueryModel queryReq = new RestRequestQueryModel(); + RestRequestQueryModel queryReq = new RestRequestQueryModel(); queryReq.setQuery("cars"); query.setQuery(queryReq); - List facets = new ArrayList(); facets.add(new FacetQuery("content.size:[0 TO 102400]", "small")); @@ -109,9 +109,11 @@ public class FacetedSearchTest extends AbstractSearchTest query.setFacetFields(facetFields); query.setIncludeRequest(true); - SearchResponse response = query(query); + SearchResponse response = query(query); + response.assertThat().entriesListIsNotEmpty(); response.getContext().assertThat().field("facetQueries").isNotEmpty(); + FacetFieldBucket facet = response.getContext().getFacetQueries().get(0); facet.assertThat().field("label").contains("small").and().field("count").isGreaterThan(0); facet.assertThat().field("label").contains("small").and().field("filterQuery").is("content.size:[0 TO 102400]"); @@ -173,52 +175,53 @@ public class FacetedSearchTest extends AbstractSearchTest public void searchQueryFacetingWithGroup() throws Exception { SearchRequest query = new SearchRequest(); - RestRequestQueryModel queryReq = new RestRequestQueryModel(); + RestRequestQueryModel queryReq = new RestRequestQueryModel(); queryReq.setQuery("cars"); query.setQuery(queryReq); List facets = new ArrayList(); facets.add(new FacetQuery("content.size:[0 TO 102400]", "small", "foo")); - facets.add(new FacetQuery("content.size:[102400 TO 1048576]", "medium","foo")); - facets.add(new FacetQuery("content.size:[1048576 TO 16777216]", "large","foo")); + facets.add(new FacetQuery("content.size:[102400 TO 1048576]", "medium", "foo")); + facets.add(new FacetQuery("content.size:[1048576 TO 16777216]", "large", "foo")); query.setFacetQueries(facets); - + RestRequestFacetFieldsModel facetFields = new RestRequestFacetFieldsModel(); List list = new ArrayList<>(); list.add(new RestRequestFacetFieldModel("'content.size'")); facetFields.setFacets(list); - query.setFacetFields(facetFields); - SearchResponse response = query(query); - //We don't expect to see the FacetQueries if group is being used. + + SearchResponse response = query(query); + + // We don't expect to see the FacetQueries if group is being used. Assert.assertTrue(response.getContext().getFacetQueries() == null); - //Validate the facet field structure is correct. + // Validate the facet field structure is correct. Assert.assertFalse(response.getContext().getFacets().isEmpty()); Assert.assertEquals(response.getContext().getFacets().get(0).getLabel(), "foo"); - + RestGenericBucketModel bucket = response.getContext().getFacets().get(0).getBuckets().get(0); bucket.assertThat().field("label").isNotEmpty(); - Assert.assertEquals( bucket.getMetrics().get(0).getType(), "count"); - Assert.assertNotEquals( bucket.getMetrics().get(0).getValue(), ""); + Assert.assertEquals(bucket.getMetrics().get(0).getType(), "count"); + Assert.assertNotEquals(bucket.getMetrics().get(0).getValue(), ""); bucket.assertThat().field("filterQuery").isNotEmpty(); response.getContext().getFacets().get(0).getBuckets().forEach(action -> { switch (action.getLabel()) { - case "small": - Assert.assertEquals(action.getFilterQuery(), "content.size:[0 TO 102400]"); - break; - case "medium": - Assert.assertEquals(action.getFilterQuery(), "content.size:[102400 TO 1048576]"); - break; - case "large": - Assert.assertEquals(action.getFilterQuery(), "content.size:[1048576 TO 16777216]"); - break; + case "small": + Assert.assertEquals(action.getFilterQuery(), "content.size:[0 TO 102400]"); + break; + case "medium": + Assert.assertEquals(action.getFilterQuery(), "content.size:[102400 TO 1048576]"); + break; + case "large": + Assert.assertEquals(action.getFilterQuery(), "content.size:[1048576 TO 16777216]"); + break; - default: - throw new TestException("Unexpected value returned"); + default: + throw new TestException("Unexpected value returned"); } }); - + } @Test @@ -235,29 +238,34 @@ public class FacetedSearchTest extends AbstractSearchTest public void searchWithFactedFields() throws Exception { SearchRequest query = new SearchRequest(); - RestRequestQueryModel queryReq = new RestRequestQueryModel(); - queryReq.setQuery("*"); + RestRequestQueryModel queryReq = new RestRequestQueryModel(); + queryReq.setQuery(unique_searchString); query.setQuery(queryReq); + RestRequestFacetFieldsModel facetFields = new RestRequestFacetFieldsModel(); - Listfacets = new ArrayList(); + List facets = new ArrayList(); facets.add(new RestRequestFacetFieldModel("cm:mimetype")); facets.add(new RestRequestFacetFieldModel("modifier")); facetFields.setFacets(facets); query.setFacetFields(facetFields); - SearchResponse response = query(query); + + SearchResponse response = query(query); + Assert.assertFalse(response.getContext().getFacetsFields().isEmpty()); Assert.assertNull(response.getContext().getFacetQueries()); Assert.assertNull(response.getContext().getFacets()); + RestResultBucketsModel model = response.getContext().getFacetsFields().get(0); Assert.assertEquals(model.getLabel(), "modifier"); - + model.assertThat().field("label").is("modifier"); FacetFieldBucket bucket1 = model.getBuckets().get(0); - bucket1.assertThat().field("label").is("System"); - bucket1.assertThat().field("display").is("System"); - bucket1.assertThat().field("filterQuery").is("modifier:\"System\""); - bucket1.assertThat().field("count").is(684); + bucket1.assertThat().field("label").is(userModel.getUsername()); + bucket1.assertThat().field("display").is(userModel.getUsername() + " FirstName LN-" + userModel.getUsername()); + bucket1.assertThat().field("filterQuery").is("modifier:\"" + userModel.getUsername() + "\""); + bucket1.assertThat().field("count").is(1); } + @Test /** * Test that items returned are in the format of generic facets. @@ -274,29 +282,31 @@ public class FacetedSearchTest extends AbstractSearchTest public void searchWithFactedFieldsFacetFormatV2() throws Exception { SearchRequest query = new SearchRequest(); - RestRequestQueryModel queryReq = new RestRequestQueryModel(); - queryReq.setQuery("*"); + RestRequestQueryModel queryReq = new RestRequestQueryModel(); + queryReq.setQuery(unique_searchString); query.setQuery(queryReq); query.setFacetFormat("V2"); RestRequestFacetFieldsModel facetFields = new RestRequestFacetFieldsModel(); - Listfacets = new ArrayList(); + List facets = new ArrayList(); facets.add(new RestRequestFacetFieldModel("cm:mimetype")); facets.add(new RestRequestFacetFieldModel("modifier")); facetFields.setFacets(facets); query.setFacetFields(facetFields); - SearchResponse response = query(query); + + SearchResponse response = query(query); + Assert.assertNull(response.getContext().getFacetsFields()); Assert.assertNull(response.getContext().getFacetQueries()); Assert.assertFalse(response.getContext().getFacets().isEmpty()); RestGenericFacetResponseModel model = response.getContext().getFacets().get(0); Assert.assertEquals(model.getLabel(), "modifier"); - + model.assertThat().field("label").is("modifier"); RestGenericBucketModel bucket1 = model.getBuckets().get(0); - bucket1.assertThat().field("label").is("System"); - bucket1.assertThat().field("display").isNull(); - bucket1.assertThat().field("filterQuery").is("modifier:\"System\""); - bucket1.assertThat().field("metrics").is("[{entry=null, type=count, value={count=684}}]"); + bucket1.assertThat().field("label").is(userModel.getUsername()); + bucket1.assertThat().field("display").is(userModel.getUsername() + " FirstName LN-" + userModel.getUsername()); + bucket1.assertThat().field("filterQuery").is("modifier:\"" + userModel.getUsername() + "\""); + bucket1.assertThat().field("metrics").is("[{entry=null, type=count, value={count=1}}]"); } } diff --git a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java index 030494997..eb5564d5a 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java @@ -121,7 +121,7 @@ public class SearchAPATHTest extends AbstractSearchTest { SearchRequest searchQuery = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); - queryReq.setQuery("name:*"); + queryReq.setQuery("name:cars*"); searchQuery.setQuery(queryReq); RestRequestFacetFieldsModel facetFields = new RestRequestFacetFieldsModel(); @@ -151,7 +151,7 @@ public class SearchAPATHTest extends AbstractSearchTest */ searchQuery = new SearchRequest(); queryReq = new RestRequestQueryModel(); - queryReq.setQuery("name:*"); + queryReq.setQuery("name:cars*"); searchQuery.setQuery(queryReq); facetFields = new RestRequestFacetFieldsModel(); list.remove(0); diff --git a/e2e-test/java/org/alfresco/rest/sharedLinks/SharedLinksSanityTests.java b/e2e-test/java/org/alfresco/rest/sharedLinks/SharedLinksSanityTests.java index d41f2d646..c9dbc91fe 100644 --- a/e2e-test/java/org/alfresco/rest/sharedLinks/SharedLinksSanityTests.java +++ b/e2e-test/java/org/alfresco/rest/sharedLinks/SharedLinksSanityTests.java @@ -1,7 +1,5 @@ package org.alfresco.rest.sharedLinks; -import static org.testng.Assert.assertEquals; - import javax.json.Json; import org.alfresco.dataprep.CMISUtil.DocumentType; From 7eb79ccfbfe6e7361348c71edc8d81a12ece3ec4 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Thu, 29 Mar 2018 09:36:10 +0100 Subject: [PATCH 03/37] Search-771: Added ShardInfo Search Tests in the new TestGroup ACS 6.0, Structured SearchSuite.xml --- .../alfresco/rest/search/ShardInfoTest.java | 4 +-- e2e-test/resources/SearchSuite.xml | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java index abc59ff03..cedca8032 100644 --- a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java +++ b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java @@ -41,7 +41,7 @@ import org.testng.annotations.Test; public class ShardInfoTest extends AbstractSearchTest { @Bug(id="DELENG-1", status=Bug.Status.OPENED) - @Test(groups={TestGroup.SEARCH, TestGroup.REST_API}) + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}) public void getShardInfoWithAdminAuthority() throws JsonProcessingException, EmptyRestModelCollectionException { RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI().getInfo(); @@ -78,7 +78,7 @@ public class ShardInfoTest extends AbstractSearchTest } @Bug(id="DELENG-1", status=Bug.Status.OPENED) - @Test(groups={TestGroup.SEARCH, TestGroup.REST_API}) + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}) public void getShardInfoWithoutAdminAuthority() throws Exception { restClient.authenticateUser(dataUser.createRandomTestUser()).withShardInfoAPI().getInfo(); diff --git a/e2e-test/resources/SearchSuite.xml b/e2e-test/resources/SearchSuite.xml index 6c4166b94..34bc53bb6 100644 --- a/e2e-test/resources/SearchSuite.xml +++ b/e2e-test/resources/SearchSuite.xml @@ -7,10 +7,29 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + - From b135a09b5c4668658119276beb0b78f47e6d308a Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 18 Apr 2018 13:21:04 +0100 Subject: [PATCH 04/37] Removed the extra space in basePath for search api, adding Fingerprint test setup to run always --- e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java index 675d5da3c..fd3381b3d 100644 --- a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java @@ -35,7 +35,7 @@ import org.testng.annotations.Test; public class FingerPrintTest extends AbstractSearchTest { private FileModel file1,file2,file3,file4; - @BeforeClass + @BeforeClass(alwaysRun=true) public void indexSimilarFile() throws Exception { adminUserModel = dataUser.getAdminUser(); From 97bec655ccde8705d262625dc3773151b334920d Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Thu, 19 Apr 2018 15:05:01 +0100 Subject: [PATCH 05/37] Putting back BeforeClass annotation to perform dataprep per test class --- .../java/org/alfresco/rest/search/AbstractSearchTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index da422b633..e6f1ee90b 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -29,7 +29,7 @@ import org.alfresco.utility.model.FileType; import org.alfresco.utility.model.FolderModel; import org.alfresco.utility.model.SiteModel; import org.alfresco.utility.model.UserModel; -import org.testng.annotations.BeforeSuite; +import org.testng.annotations.BeforeClass; /** * Abstract Search test class that contains useful methods @@ -56,7 +56,7 @@ public class AbstractSearchTest extends RestTest protected FileModel file, file2, file3, file4; - @BeforeSuite(alwaysRun = true) + @BeforeClass(alwaysRun = true) public void dataPreparation() throws Exception { adminUserModel = dataUser.getAdminUser(); From 19f29f7076bde6077878a56a9c2312b64d5a429b Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 25 Apr 2018 14:10:00 +0100 Subject: [PATCH 06/37] Search-811 --- .../java/org/alfresco/rest/search/AbstractSearchTest.java | 4 ++-- .../java/org/alfresco/rest/search/SearchSpellCheckTest.java | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index e6f1ee90b..0d7508a40 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Alfresco Software Limited. + * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * @@ -89,7 +89,7 @@ public class AbstractSearchTest extends RestTest file2 = new FileModel("cars.txt", "cars" + title, description, FileType.TEXT_PLAIN, "The landrover discovery is not a sports car "); - file3 = new FileModel("alfresco.txt", "alfresco" + title, description, FileType.TEXT_PLAIN, "Alfresco text file for search "); + file3 = new FileModel("alfresco.txt", "alfresco " + title, "alfresco " + description, FileType.TEXT_PLAIN, "Alfresco text file for search "); file4 = new FileModel(unique_searchString, "unique" + title, description, FileType.TEXT_PLAIN, "Unique text file for search "); diff --git a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java index a13e447fb..6fec23292 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Alfresco Software Limited. + * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * @@ -78,6 +78,7 @@ public class SearchSpellCheckTest extends AbstractSearchTest nodes.getContext().assertThat().field("spellCheck").isNotEmpty(); nodes.getContext().getSpellCheck().assertThat().field("suggestions").contains("alfresco"); } + @Test /** * Perform alternative way by setting the value in spellcheck object. @@ -103,6 +104,7 @@ public class SearchSpellCheckTest extends AbstractSearchTest searchReq.setSpellcheck(spellCheck); assertResponse(query(searchReq)); } + @Test public void searchWithSpellcheckerAndCorrectSpelling() throws Exception { @@ -113,7 +115,7 @@ public class SearchSpellCheckTest extends AbstractSearchTest searchReq.setQuery(queryReq); searchReq.setSpellcheck(new RestRequestSpellcheckModel()); SearchResponse res = query(searchReq); - Assert.assertNull(res.getContext()); + Assert.assertNull(res.getContext().getSpellCheck()); res.assertThat().entriesListIsNotEmpty(); } } From 2cd682d1b4dc9c4879e7c5b0945b2f342a7a73d0 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Thu, 26 Apr 2018 09:53:25 +0100 Subject: [PATCH 07/37] Search-811: Test Issue Fixed --- e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index 0d7508a40..9bedb0c6f 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -89,7 +89,7 @@ public class AbstractSearchTest extends RestTest file2 = new FileModel("cars.txt", "cars" + title, description, FileType.TEXT_PLAIN, "The landrover discovery is not a sports car "); - file3 = new FileModel("alfresco.txt", "alfresco " + title, "alfresco " + description, FileType.TEXT_PLAIN, "Alfresco text file for search "); + file3 = new FileModel("alfresco.txt", "alfresco", "alfresco", FileType.TEXT_PLAIN, "Alfresco text file for search "); file4 = new FileModel(unique_searchString, "unique" + title, description, FileType.TEXT_PLAIN, "Unique text file for search "); From fdef0db9caa21aaefac33ee5efbb9dd6847ba86a Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Thu, 26 Apr 2018 11:15:02 +0100 Subject: [PATCH 08/37] Search-811: Test Coverage added for SpellCheck Tests to cover name, description, content, spellcheck type --- e2e-test/java/org/alfresco/rest/RestTest.java | 6 ++ .../rest/search/AbstractSearchTest.java | 2 +- .../rest/search/SearchSpellCheckTest.java | 71 +++++++++++++++++-- e2e-test/resources/default.properties | 3 + 4 files changed, 75 insertions(+), 7 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/RestTest.java b/e2e-test/java/org/alfresco/rest/RestTest.java index 0358a948d..76963a8dc 100644 --- a/e2e-test/java/org/alfresco/rest/RestTest.java +++ b/e2e-test/java/org/alfresco/rest/RestTest.java @@ -7,6 +7,7 @@ import org.alfresco.rest.core.RestProperties; import org.alfresco.rest.core.RestWrapper; import org.alfresco.utility.LogFactory; import org.alfresco.utility.TasProperties; +import org.alfresco.utility.Utility; import org.alfresco.utility.data.DataContent; import org.alfresco.utility.data.DataDiscussion; import org.alfresco.utility.data.DataGroup; @@ -85,4 +86,9 @@ public abstract class RestTest extends AbstractTestNGSpringContextTests { LOG.info(String.format("*** ENDING Test: [%s] ***", method.getName())); } + + public void waitForIndexing() + { + Utility.waitToLoopTime(properties.getSolrWaitTimeInSeconds(), "Wait For Index"); + } } diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index 9bedb0c6f..062640a51 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -102,7 +102,7 @@ public class AbstractSearchTest extends RestTest dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file3); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file4); - Utility.waitToLoopTime(60, "Wait For Index"); + waitForIndexing(); } /** diff --git a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java index 6fec23292..a1d663830 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java @@ -19,6 +19,8 @@ package org.alfresco.rest.search; import org.alfresco.rest.model.RestRequestSpellcheckModel; +import org.alfresco.utility.model.FileModel; +import org.alfresco.utility.model.FileType; import org.alfresco.utility.model.TestGroup; import org.junit.Assert; import org.testng.annotations.Test; @@ -30,6 +32,8 @@ import org.testng.annotations.Test; */ public class SearchSpellCheckTest extends AbstractSearchTest { + protected FileModel file = new FileModel("alfesco.txt", "alfesco", "alfesco", FileType.TEXT_PLAIN, "alfesco text file for search "); + /** * Perform the below query * { @@ -61,25 +65,48 @@ public class SearchSpellCheckTest extends AbstractSearchTest * * @throws Exception */ - @Test(groups={TestGroup.SEARCH, TestGroup.REST_API}) - public void searchMissSpelled() throws Exception + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}, priority=1) + public void testSearchMissSpelled() throws Exception { + // Name SearchRequest searchReq = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); + queryReq.setQuery("cm:name:alfrezco"); + queryReq.setUserQuery("alfrezco"); + searchReq.setQuery(queryReq); + searchReq.setSpellcheck(new RestRequestSpellcheckModel()); + assertResponse(query(searchReq)); + + // Title queryReq.setQuery("cm:title:alfrezco"); queryReq.setUserQuery("alfrezco"); searchReq.setQuery(queryReq); searchReq.setSpellcheck(new RestRequestSpellcheckModel()); assertResponse(query(searchReq)); + + // Description + queryReq.setQuery("cm:description:alfrezco"); + queryReq.setUserQuery("alfrezco"); + searchReq.setQuery(queryReq); + searchReq.setSpellcheck(new RestRequestSpellcheckModel()); + assertResponse(query(searchReq)); + + // Content + queryReq.setQuery("cm:content:alfrezco"); + queryReq.setUserQuery("alfrezco"); + searchReq.setQuery(queryReq); + searchReq.setSpellcheck(new RestRequestSpellcheckModel()); + assertResponse(query(searchReq)); } + private void assertResponse(SearchResponse nodes) throws Exception { nodes.assertThat().entriesListIsNotEmpty(); nodes.getContext().assertThat().field("spellCheck").isNotEmpty(); nodes.getContext().getSpellCheck().assertThat().field("suggestions").contains("alfresco"); + nodes.getContext().getSpellCheck().assertThat().field("type").is("searchInsteadFor"); } - @Test /** * Perform alternative way by setting the value in spellcheck object. * @@ -92,7 +119,8 @@ public class SearchSpellCheckTest extends AbstractSearchTest * } * @throws Exception */ - public void searchMissSpelledVersion2() throws Exception + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}, priority=2) + public void testSearchMissSpelledVersion2() throws Exception { SearchRequest searchReq = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); @@ -105,8 +133,8 @@ public class SearchSpellCheckTest extends AbstractSearchTest assertResponse(query(searchReq)); } - @Test - public void searchWithSpellcheckerAndCorrectSpelling() throws Exception + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}, priority=3) + public void testSearchWithSpellcheckerAndCorrectSpelling() throws Exception { SearchRequest searchReq = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); @@ -118,4 +146,35 @@ public class SearchSpellCheckTest extends AbstractSearchTest Assert.assertNull(res.getContext().getSpellCheck()); res.assertThat().entriesListIsNotEmpty(); } + + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}, priority=4) + public void testSpellCheckType() throws Exception + { + try + { + // Create a file with mis-spelt name, expect spellcheck type = didYouMean + dataContent.usingUser(userModel).usingSite(siteModel).createContent(file); + + waitForIndexing(); + + // Search + SearchRequest searchReq = new SearchRequest(); + RestRequestQueryModel queryReq = new RestRequestQueryModel(); + queryReq.setQuery("cm:name:alfesco"); + queryReq.setUserQuery("alfesco"); + searchReq.setQuery(queryReq); + searchReq.setSpellcheck(new RestRequestSpellcheckModel()); + SearchResponse nodes = query(searchReq); + + nodes.assertThat().entriesListIsNotEmpty(); + nodes.getContext().assertThat().field("spellCheck").isNotEmpty(); + nodes.getContext().getSpellCheck().assertThat().field("suggestions").contains("alfresco"); + nodes.getContext().getSpellCheck().assertThat().field("type").is("didYouMean"); + } + finally + { + // Delete this file, else it will cause incorrect results for other spell-check tests when rerunning on the same environment + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(file).deleteContent(); + } + } } diff --git a/e2e-test/resources/default.properties b/e2e-test/resources/default.properties index 7c7516125..1ad5a1d61 100644 --- a/e2e-test/resources/default.properties +++ b/e2e-test/resources/default.properties @@ -8,6 +8,9 @@ sync.scheme=http sync.server=localhost sync.port=9090 +#Solr Indexing Time +solrWaitTimeInSeconds=60 + # credentials admin.user=admin admin.password=admin From 65c9e45c5465ef8ca6c66f9e1c529d8d3b58d264 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Fri, 27 Apr 2018 13:20:58 +0100 Subject: [PATCH 09/37] Amended the tas-utility snapshot version --- e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index 062640a51..df0b00e41 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -21,7 +21,6 @@ package org.alfresco.rest.search; import org.alfresco.dataprep.SiteService.Visibility; import org.alfresco.rest.RestTest; import org.alfresco.rest.model.builder.NodesBuilder; -import org.alfresco.utility.Utility; import org.alfresco.utility.data.RandomData; import org.alfresco.utility.model.ContentModel; import org.alfresco.utility.model.FileModel; From 1ac1d78b9bf9fbdbd4a282bf99ef6e222a82fd31 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 30 Apr 2018 12:08:48 +0100 Subject: [PATCH 10/37] Removed unnecessary changes in dataprep --- .../rest/search/AbstractSearchTest.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index df0b00e41..d5b2014c0 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -42,32 +42,28 @@ import org.testng.annotations.BeforeClass; */ public class AbstractSearchTest extends RestTest { + protected static final String SEARCH_DATA_SAMPLE_FOLDER = "FolderSearch"; - protected static final String SEARCH_SITE_PUBLIC = RandomData.getRandomName("SiteSearch"); - protected static final String SEARCH_USER1 = "UserSearch1"; - protected static final String SEARCH_USER2 = "UserSearch2"; - protected static String unique_searchString; - - UserModel userModel, adminUserModel, userModel2; + UserModel userModel, adminUserModel; SiteModel siteModel; UserModel searchedUser; NodesBuilder nodesBuilder; - protected FileModel file, file2, file3, file4; + + protected static String unique_searchString; @BeforeClass(alwaysRun = true) public void dataPreparation() throws Exception { adminUserModel = dataUser.getAdminUser(); - userModel = dataUser.createRandomTestUser(SEARCH_USER1); - userModel2 = dataUser.createRandomTestUser(SEARCH_USER2); + userModel = dataUser.createRandomTestUser("UserSearch"); - siteModel = new SiteModel(RandomData.getRandomName(SEARCH_SITE_PUBLIC)); - siteModel.setVisibility(Visibility.PUBLIC); + siteModel = new SiteModel(RandomData.getRandomName("SiteSearch")); + siteModel.setVisibility(Visibility.PRIVATE); siteModel = dataSite.usingUser(userModel).createSite(siteModel); - unique_searchString = siteModel.getTitle(); //userModel.getUsername(); + unique_searchString = siteModel.getTitle(); /* * Create the following file structure for preconditions : @@ -75,6 +71,7 @@ public class AbstractSearchTest extends RestTest * |-- pangram.txt * |-- cars.txt * |-- alfresco.txt + * |-- */ nodesBuilder = restClient.authenticateUser(userModel).withCoreAPI().usingNode(ContentModel.my()).defineNodes(); FolderModel folder = new FolderModel(SEARCH_DATA_SAMPLE_FOLDER); @@ -141,7 +138,7 @@ public class AbstractSearchTest extends RestTest */ protected SearchResponse query(SearchRequest query) throws Exception { - return restClient.authenticateUser(dataUser.getAdminUser()).withSearchAPI().search(query); + return restClient.authenticateUser(userModel).withSearchAPI().search(query); } protected SearchRequest createQuery(String term) { From b6b032cf04f88ebc90ded073b23754c750e4ce4f Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 30 Apr 2018 13:16:13 +0100 Subject: [PATCH 11/37] Fixed the bucket size assert and Removed system.out.println --- .../java/org/alfresco/rest/search/SearchAPATHTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java index eb5564d5a..eab9130dc 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java @@ -116,6 +116,7 @@ public class SearchAPATHTest extends AbstractSearchTest Assert.assertEquals(4,fresponse.getBuckets().size()); fresponse.getBuckets().get(0).assertThat().field("label").contains("1/"); } + @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ASS_1}) public void searchLevel2() throws Exception { @@ -131,6 +132,7 @@ public class SearchAPATHTest extends AbstractSearchTest searchQuery.setFacetFields(facetFields); SearchResponse response = query(searchQuery); + RestResultBucketsModel fresponse = response.getContext().getFacetsFields().get(0); String path = fresponse.getBuckets().get(0).getLabel().replace("1/", "2/"); list.remove(0); @@ -140,7 +142,7 @@ public class SearchAPATHTest extends AbstractSearchTest searchQuery.setFacetFields(facetFields); response = query(searchQuery); fresponse = response.getContext().getFacetsFields().get(0); - Assert.assertEquals(fresponse.getBuckets().size(),3); + Assert.assertTrue(fresponse.getBuckets().size() >= 1); fresponse.getBuckets().get(0).assertThat().field("label").contains("2/"); fresponse.getBuckets().get(0).assertThat().field("label").contains(path); /** @@ -160,8 +162,7 @@ public class SearchAPATHTest extends AbstractSearchTest searchQuery.setFacetFields(facetFields); response = query(searchQuery); fresponse = response.getContext().getFacetsFields().get(0); - System.out.println(response); - Assert.assertTrue(fresponse.getBuckets().size() > 5); + Assert.assertTrue(fresponse.getBuckets().size() >= 1); fresponse.getBuckets().get(0).assertThat().field("label").contains("3/"); } } From 03dd502ca1ed21014a4af427e80e0056e2da6d0f Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 30 Apr 2018 14:23:27 +0100 Subject: [PATCH 12/37] Removed the overriding of dataPreperation from faceted search tests --- .../java/org/alfresco/rest/search/FacetRangeSearchTest.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java b/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java index d4ae6bfa7..2b77bef20 100644 --- a/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java @@ -61,11 +61,7 @@ import org.testng.annotations.Test; */ public class FacetRangeSearchTest extends AbstractSearchTest { - @Override - public void dataPreparation() throws Exception - { - //Skip setup - } + @Test(groups = { TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }) @TestRail(section = {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }, executionType = ExecutionType.REGRESSION, description = "Check facet intervals mandatory fields") From 6ae3acab951ad1759921eda746aef783f877d6d1 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 30 Apr 2018 16:24:35 +0100 Subject: [PATCH 13/37] Removed unused variables --- .../rest/search/FacetIntervalSearchTest.java | 14 ++++++++------ .../alfresco/rest/search/FacetRangeSearchTest.java | 14 ++++++++++---- .../rest/search/PivotFacetedSearchTest.java | 7 +++++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/FacetIntervalSearchTest.java b/e2e-test/java/org/alfresco/rest/search/FacetIntervalSearchTest.java index 9d8d74b37..d32f3ebe9 100644 --- a/e2e-test/java/org/alfresco/rest/search/FacetIntervalSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FacetIntervalSearchTest.java @@ -48,23 +48,23 @@ public class FacetIntervalSearchTest extends AbstractSearchTest facetIntervalsModel.setIntervals(Arrays.asList(facetInterval)); query.setFacetIntervals(facetIntervalsModel); - SearchResponse response = query(query); + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "facetIntervals intervals field")); facetInterval.setField("created"); - response = query(query); + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_COLLECTION, "facetIntervals intervals sets")); RestRequestFacetSetModel restFacetSetModel = new RestRequestFacetSetModel(); restFacetSetModel.setLabel("theRest"); facetInterval.setSets(Arrays.asList(restFacetSetModel)); - response = query(query); + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "facetIntervals intervals created sets start")); restFacetSetModel.setStart("A"); - response = query(query); + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "facetIntervals intervals created sets end")); @@ -74,7 +74,8 @@ public class FacetIntervalSearchTest extends AbstractSearchTest duplicate.setLabel("theRest"); duplicate.setStart("A"); duplicate.setEnd("C"); - response = query(query); + + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary("duplicate set interval label [theRest=2]"); @@ -83,7 +84,8 @@ public class FacetIntervalSearchTest extends AbstractSearchTest FacetInterval duplicateLabel = new FacetInterval("creator", "thesame", Arrays.asList(duplicate)); facetIntervalsModel.setIntervals(Arrays.asList(facetInterval, duplicateLabel)); query.setFacetIntervals(facetIntervalsModel); - response = query(query); + + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary("duplicate interval label [thesame=2]"); diff --git a/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java b/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java index 2b77bef20..1add86965 100644 --- a/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FacetRangeSearchTest.java @@ -72,7 +72,7 @@ public class FacetRangeSearchTest extends AbstractSearchTest RestRequestRangesModel facetRangeModel = new RestRequestRangesModel(); ranges.add(facetRangeModel); query.setRanges(ranges); - SearchResponse response = query(query); + query(query); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "field")); @@ -80,21 +80,27 @@ public class FacetRangeSearchTest extends AbstractSearchTest facetRangeModel.setField("content.size"); ranges.add(facetRangeModel); query.setRanges(ranges); - response = query(query); + + query(query); + restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "start")); facetRangeModel.setStart("0"); ranges.clear(); ranges.add(facetRangeModel); query.setRanges(ranges); - response = query(query); + + query(query); + restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "end")); facetRangeModel.setEnd("400"); query.setRanges(ranges); ranges.clear(); ranges.add(facetRangeModel); - response = query(query); + + query(query); + restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "gap")); diff --git a/e2e-test/java/org/alfresco/rest/search/PivotFacetedSearchTest.java b/e2e-test/java/org/alfresco/rest/search/PivotFacetedSearchTest.java index bc54be77d..c21b9e2c7 100644 --- a/e2e-test/java/org/alfresco/rest/search/PivotFacetedSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/PivotFacetedSearchTest.java @@ -60,12 +60,15 @@ public class PivotFacetedSearchTest extends AbstractSearchTest pivotModelList.add(pivots); query.setPivots(pivotModelList); - SearchResponse response = query(query); + query(query); + restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError() .containsSummary(String.format(RestErrorModel.MANDATORY_PARAM, "pivot key")); pivots.setKey("none_like_this"); - response = query(query); + + query(query); + restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST) .assertLastError().containsSummary("invalid argument was received") .containsSummary("Pivot parameter none_like_this does not reference"); From 1b5c2b64e6ca8f2dcfe10a261d406dbd0bee2585 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 1 May 2018 14:33:17 +0100 Subject: [PATCH 14/37] Simplified query parameters --- e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java index eab9130dc..4f5dc97d2 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java @@ -120,9 +120,11 @@ public class SearchAPATHTest extends AbstractSearchTest @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ASS_1}) public void searchLevel2() throws Exception { + String queryString = "name:"+ "cars"; + SearchRequest searchQuery = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); - queryReq.setQuery("name:cars*"); + queryReq.setQuery(queryString); searchQuery.setQuery(queryReq); RestRequestFacetFieldsModel facetFields = new RestRequestFacetFieldsModel(); @@ -153,7 +155,7 @@ public class SearchAPATHTest extends AbstractSearchTest */ searchQuery = new SearchRequest(); queryReq = new RestRequestQueryModel(); - queryReq.setQuery("name:cars*"); + queryReq.setQuery(queryString); searchQuery.setQuery(queryReq); facetFields = new RestRequestFacetFieldsModel(); list.remove(0); From dacc280be22683b69f4e0b8495536316bec70464 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 1 May 2018 15:41:23 +0100 Subject: [PATCH 15/37] Changed solr host to in line with docker compose for SearchServices --- e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java index cedca8032..d4c5678c1 100644 --- a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java +++ b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java @@ -70,7 +70,8 @@ public class ShardInfoTest extends AbstractSearchTest RestInstanceModel instance = instances.iterator().next(); assertNotNull(instance); baseUrls.contains(instance.getBaseUrl()); - assertEquals(instance.getHost(), "localhost"); + // TODO: Ideally Solr Host and Port should be Parameterised + assertEquals(instance.getHost(), "search"); assertEquals(instance.getPort().intValue(), 8983); assertEquals(instance.getState(), "ACTIVE"); assertEquals(instance.getMode(), "MASTER"); From 273406a7e492b2732997811bacf01bf54c14a889 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 1 May 2018 15:42:26 +0100 Subject: [PATCH 16/37] Search-812 Fixed the test --- e2e-test/java/org/alfresco/rest/search/SearchTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/SearchTest.java b/e2e-test/java/org/alfresco/rest/search/SearchTest.java index 5f038dfc6..f90bc361f 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchTest.java @@ -36,14 +36,14 @@ public class SearchTest extends AbstractSearchTest @Test(groups={TestGroup.SEARCH, TestGroup.REST_API}) public void searchOnIndexedData() throws Exception { - SearchResponse nodes = query("ipsum"); + 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("Project Overview.ppt",entity.getName()); + Assert.assertEquals("pangram.txt",entity.getName()); } @Test(groups={TestGroup.SEARCH,TestGroup.REST_API}) From 6c155c0c18b35dfcfa30ece84c2a988ab1136513 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 1 May 2018 16:45:37 +0100 Subject: [PATCH 17/37] WaitForIndexing approach implemented as discussed --- e2e-test/java/org/alfresco/rest/RestTest.java | 6 +-- .../rest/search/AbstractSearchTest.java | 47 ++++++++++++++++++- .../rest/search/SearchSpellCheckTest.java | 2 +- e2e-test/resources/default.properties | 2 +- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/RestTest.java b/e2e-test/java/org/alfresco/rest/RestTest.java index 76963a8dc..d78baac57 100644 --- a/e2e-test/java/org/alfresco/rest/RestTest.java +++ b/e2e-test/java/org/alfresco/rest/RestTest.java @@ -86,9 +86,5 @@ public abstract class RestTest extends AbstractTestNGSpringContextTests { LOG.info(String.format("*** ENDING Test: [%s] ***", method.getName())); } - - public void waitForIndexing() - { - Utility.waitToLoopTime(properties.getSolrWaitTimeInSeconds(), "Wait For Index"); - } + } diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index d5b2014c0..fd43b8f00 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -21,6 +21,7 @@ package org.alfresco.rest.search; import org.alfresco.dataprep.SiteService.Visibility; import org.alfresco.rest.RestTest; import org.alfresco.rest.model.builder.NodesBuilder; +import org.alfresco.utility.Utility; import org.alfresco.utility.data.RandomData; import org.alfresco.utility.model.ContentModel; import org.alfresco.utility.model.FileModel; @@ -98,7 +99,7 @@ public class AbstractSearchTest extends RestTest dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file3); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file4); - waitForIndexing(); + waitForIndexing(unique_searchString, true); } /** @@ -152,4 +153,48 @@ public class AbstractSearchTest extends RestTest { return createQuery("cars"); } + + /** + * Wait for Solr to finish indexing: Indexing has caught up = true if search returns appropriate results + * @param userQuery: string to search for, unique search string will guarantee accurate results + * @param expectedInResults, true if entry is expected in the results set + * @return true (indexing is finished) if search returns appropriate results + * @throws Exception + */ + public boolean waitForIndexing(String userQuery, Boolean expectedInResults) throws Exception + { + Boolean found = false; + Boolean resultAsExpected = false; + + SearchRequest searchRequest = createQuery(userQuery); + SearchResponse response = query(searchRequest); + + // Repeat search until the element is found or Timeout is hit + for (int searchCount = 1; searchCount <= 3; searchCount++) + { + if (searchCount > 1) + { + // Wait for the solr indexing. + Utility.waitToLoopTime(properties.getSolrWaitTimeInSeconds(), "Wait For Indexing"); + } + + if (response.getEntries().size() >= 1) + { + found = true; + } + else + { + found = false; + } + + // Loop again if result is not as expected: To cater for solr lag: eventual consistency + resultAsExpected = (expectedInResults.equals(found)); + if (resultAsExpected) + { + break; + } + } + + return resultAsExpected; + } } diff --git a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java index a1d663830..c8f96ae93 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java @@ -155,7 +155,7 @@ public class SearchSpellCheckTest extends AbstractSearchTest // Create a file with mis-spelt name, expect spellcheck type = didYouMean dataContent.usingUser(userModel).usingSite(siteModel).createContent(file); - waitForIndexing(); + waitForIndexing(file.getName(), true); // Search SearchRequest searchReq = new SearchRequest(); diff --git a/e2e-test/resources/default.properties b/e2e-test/resources/default.properties index 1ad5a1d61..b44ef9b4a 100644 --- a/e2e-test/resources/default.properties +++ b/e2e-test/resources/default.properties @@ -9,7 +9,7 @@ sync.server=localhost sync.port=9090 #Solr Indexing Time -solrWaitTimeInSeconds=60 +solrWaitTimeInSeconds=20 # credentials admin.user=admin From 989369ef73923896f6d8754ec12ac6803d46a2cc Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 1 May 2018 16:49:40 +0100 Subject: [PATCH 18/37] Simplified dataprep, SpellCheck test, removed unnecessary code --- .../rest/search/AbstractSearchTest.java | 17 ++++++---------- .../rest/search/SearchSpellCheckTest.java | 20 ++++++------------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index fd43b8f00..5d2e6e020 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -48,7 +48,6 @@ public class AbstractSearchTest extends RestTest UserModel userModel, adminUserModel; SiteModel siteModel; UserModel searchedUser; - NodesBuilder nodesBuilder; protected FileModel file, file2, file3, file4; protected static String unique_searchString; @@ -64,7 +63,7 @@ public class AbstractSearchTest extends RestTest siteModel = dataSite.usingUser(userModel).createSite(siteModel); - unique_searchString = siteModel.getTitle(); + unique_searchString = siteModel.getTitle().replace("SiteSearch", "Unique"); /* * Create the following file structure for preconditions : @@ -74,7 +73,7 @@ public class AbstractSearchTest extends RestTest * |-- alfresco.txt * |-- */ - nodesBuilder = restClient.authenticateUser(userModel).withCoreAPI().usingNode(ContentModel.my()).defineNodes(); + FolderModel folder = new FolderModel(SEARCH_DATA_SAMPLE_FOLDER); dataContent.usingUser(userModel).usingSite(siteModel).createFolder(folder); @@ -88,18 +87,14 @@ public class AbstractSearchTest extends RestTest file3 = new FileModel("alfresco.txt", "alfresco", "alfresco", FileType.TEXT_PLAIN, "Alfresco text file for search "); - file4 = new FileModel(unique_searchString, "unique" + title, description, FileType.TEXT_PLAIN, "Unique text file for search "); - - ContentModel cm = new ContentModel(); - cm.setCmisLocation(folder.getCmisLocation()); - cm.setName(folder.getName()); + file4 = new FileModel(unique_searchString + ".txt", "uniquee" + title, description, FileType.TEXT_PLAIN, "Unique text file for search "); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file2); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file3); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file4); - waitForIndexing(unique_searchString, true); + waitForIndexing(file4.getName(), true); } /** @@ -115,7 +110,7 @@ public class AbstractSearchTest extends RestTest queryReq.setLanguage("afts"); queryReq.setQuery(term); SearchRequest query = new SearchRequest(queryReq); - return restClient.authenticateUser(dataUser.getAdminUser()).withSearchAPI().search(query); + return restClient.authenticateUser(userModel).withSearchAPI().search(query); } /** * Helper method which create an http post request to Search API end point. @@ -128,7 +123,7 @@ public class AbstractSearchTest extends RestTest { SearchRequest query = new SearchRequest(queryReq); query.setHighlight(highlight); - return restClient.authenticateUser(dataUser.getAdminUser()).withSearchAPI().search(query); + return restClient.authenticateUser(userModel).withSearchAPI().search(query); } /** * Helper method which create an http post request to Search API end point. diff --git a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java index c8f96ae93..70e6c7297 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java @@ -32,7 +32,6 @@ import org.testng.annotations.Test; */ public class SearchSpellCheckTest extends AbstractSearchTest { - protected FileModel file = new FileModel("alfesco.txt", "alfesco", "alfesco", FileType.TEXT_PLAIN, "alfesco text file for search "); /** * Perform the below query @@ -149,32 +148,25 @@ public class SearchSpellCheckTest extends AbstractSearchTest @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}, priority=4) public void testSpellCheckType() throws Exception - { - try - { + { // Create a file with mis-spelt name, expect spellcheck type = didYouMean + FileModel file = new FileModel(unique_searchString + "-1.txt", "uniquee" + "uniquee", "uniquee", FileType.TEXT_PLAIN, "Unique text file for search "); dataContent.usingUser(userModel).usingSite(siteModel).createContent(file); - + waitForIndexing(file.getName(), true); // Search SearchRequest searchReq = new SearchRequest(); RestRequestQueryModel queryReq = new RestRequestQueryModel(); - queryReq.setQuery("cm:name:alfesco"); - queryReq.setUserQuery("alfesco"); + queryReq.setQuery("cm:title:uniquee"); + queryReq.setUserQuery("uniquee"); searchReq.setQuery(queryReq); searchReq.setSpellcheck(new RestRequestSpellcheckModel()); SearchResponse nodes = query(searchReq); nodes.assertThat().entriesListIsNotEmpty(); nodes.getContext().assertThat().field("spellCheck").isNotEmpty(); - nodes.getContext().getSpellCheck().assertThat().field("suggestions").contains("alfresco"); + nodes.getContext().getSpellCheck().assertThat().field("suggestions").contains("unique"); nodes.getContext().getSpellCheck().assertThat().field("type").is("didYouMean"); - } - finally - { - // Delete this file, else it will cause incorrect results for other spell-check tests when rerunning on the same environment - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(file).deleteContent(); - } } } From 709f237161c6332b46c188ab9e4f94029338c71c Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 1 May 2018 16:50:28 +0100 Subject: [PATCH 19/37] Simplified dataprep, removed thread.sleep and other unnecessary code --- .../alfresco/rest/search/FingerPrintTest.java | 42 +++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java index fd3381b3d..19f4f41fd 100644 --- a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java @@ -18,10 +18,13 @@ */ package org.alfresco.rest.search; +import org.alfresco.dataprep.SiteService.Visibility; +import org.alfresco.utility.data.RandomData; import org.alfresco.utility.model.ContentModel; import org.alfresco.utility.model.FileModel; import org.alfresco.utility.model.FileType; import org.alfresco.utility.model.FolderModel; +import org.alfresco.utility.model.SiteModel; import org.alfresco.utility.model.TestGroup; import org.testng.Assert; import org.testng.annotations.BeforeClass; @@ -35,33 +38,43 @@ import org.testng.annotations.Test; public class FingerPrintTest extends AbstractSearchTest { private FileModel file1,file2,file3,file4; + @BeforeClass(alwaysRun=true) public void indexSimilarFile() throws Exception { adminUserModel = dataUser.getAdminUser(); userModel = dataUser.createRandomTestUser(); - siteModel = dataSite.usingUser(userModel).createPublicRandomSite(); + + siteModel = new SiteModel(RandomData.getRandomName("SiteSearch")); + siteModel.setVisibility(Visibility.PRIVATE); + + siteModel = dataSite.usingUser(userModel).createSite(siteModel); + /* * Create the following file structure for preconditions : * |- folder - * |-- fox.txt + * |-- pangram-banana.txt + * |-- pangram-taco.txt + * |-- pangram-cat.txt + * |-- dog.txt */ - nodesBuilder = restClient.authenticateUser(userModel).withCoreAPI().usingNode(ContentModel.my()).defineNodes(); + FolderModel folder = new FolderModel(SEARCH_DATA_SAMPLE_FOLDER); dataContent.usingUser(userModel).usingSite(siteModel).createFolder(folder); + file1 = new FileModel("pangram-banana.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy banana"); file2 = new FileModel("pangram-taco.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy dog that ate the taco"); file3 = new FileModel("pangram-cat.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy cat"); file4 = new FileModel("dog.txt", FileType.TEXT_PLAIN, "The quick brown fox ate the lazy dog"); - ContentModel cm = new ContentModel(); - cm.setCmisLocation(folder.getCmisLocation()); - cm.setName(folder.getName()); - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(cm).createContent(file1); - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(cm).createContent(file2); - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(cm).createContent(file3); - dataContent.usingUser(userModel).usingSite(siteModel).usingResource(cm).createContent(file4); - Thread.sleep(35000);//Allow indexing to complete. + + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file1); + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file2); + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file3); + dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file4); + + waitForIndexing(file4.getName(), true); } + /** * Search similar document based on document finger print. * The data prep should have loaded 2 files which one is similar @@ -99,16 +112,20 @@ public class FingerPrintTest extends AbstractSearchTest m.getModel().assertThat().field("name").isNot("cars.txt"); } } + @Test(groups= {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1}) public void searchSimilar() throws Exception { String uuid = file2.getNodeRefWithoutVersion(); Assert.assertNotNull(uuid); - // In the response eneity there is a score of each doc, change below threshold to bring more like or less. + + // In the response entity there is a score of each doc, change below threshold to bring more like or less. String fingerprint = String.format("FINGERPRINT:%s_68", uuid); SearchResponse response = query(fingerprint); + int count = response.getEntries().size(); Assert.assertTrue(count > 1); + for(SearchNodeModel m :response.getEntries()) { switch (m.getModel().getName()) @@ -126,6 +143,7 @@ public class FingerPrintTest extends AbstractSearchTest m.getModel().assertThat().field("name").isNot("cars.txt"); } } + @Test(groups= {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1}) public void searchSimilar67Percent() throws Exception { From 602f46debfb113b51cd20f02ed3fea286f5625cb Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 2 May 2018 11:19:30 +0100 Subject: [PATCH 20/37] Fixed FingurePrint Test to work with recent changes --- .../org/alfresco/rest/search/FingerPrintTest.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java index 19f4f41fd..1e86378f0 100644 --- a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java @@ -18,13 +18,9 @@ */ package org.alfresco.rest.search; -import org.alfresco.dataprep.SiteService.Visibility; -import org.alfresco.utility.data.RandomData; -import org.alfresco.utility.model.ContentModel; import org.alfresco.utility.model.FileModel; import org.alfresco.utility.model.FileType; import org.alfresco.utility.model.FolderModel; -import org.alfresco.utility.model.SiteModel; import org.alfresco.utility.model.TestGroup; import org.testng.Assert; import org.testng.annotations.BeforeClass; @@ -42,13 +38,6 @@ public class FingerPrintTest extends AbstractSearchTest @BeforeClass(alwaysRun=true) public void indexSimilarFile() throws Exception { - adminUserModel = dataUser.getAdminUser(); - userModel = dataUser.createRandomTestUser(); - - siteModel = new SiteModel(RandomData.getRandomName("SiteSearch")); - siteModel.setVisibility(Visibility.PRIVATE); - - siteModel = dataSite.usingUser(userModel).createSite(siteModel); /* * Create the following file structure for preconditions : @@ -59,7 +48,7 @@ public class FingerPrintTest extends AbstractSearchTest * |-- dog.txt */ - FolderModel folder = new FolderModel(SEARCH_DATA_SAMPLE_FOLDER); + FolderModel folder = new FolderModel("The quick brown fox jumps over"); dataContent.usingUser(userModel).usingSite(siteModel).createFolder(folder); file1 = new FileModel("pangram-banana.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy banana"); From 97e38e58dc34f29cc14b0a7acc48b6e5437e8071 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 2 May 2018 11:24:27 +0100 Subject: [PATCH 21/37] Formatting changes --- .../alfresco/rest/search/FingerPrintTest.java | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java index 1e86378f0..2bc30ef37 100644 --- a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java @@ -33,24 +33,24 @@ import org.testng.annotations.Test; */ public class FingerPrintTest extends AbstractSearchTest { - private FileModel file1,file2,file3,file4; - - @BeforeClass(alwaysRun=true) + private FileModel file1, file2, file3, file4; + + @BeforeClass(alwaysRun = true) public void indexSimilarFile() throws Exception { - + /* - * Create the following file structure for preconditions : - * |- folder - * |-- pangram-banana.txt - * |-- pangram-taco.txt - * |-- pangram-cat.txt - * |-- dog.txt + * Create the following file structure in the same Site : In addition to the preconditions created in dataPreparation + * |- folder + * |-- pangram-banana.txt + * |-- pangram-taco.txt + * |-- pangram-cat.txt + * |-- dog.txt */ - + FolderModel folder = new FolderModel("The quick brown fox jumps over"); dataContent.usingUser(userModel).usingSite(siteModel).createFolder(folder); - + file1 = new FileModel("pangram-banana.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy banana"); file2 = new FileModel("pangram-taco.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy dog that ate the taco"); file3 = new FileModel("pangram-cat.txt", FileType.TEXT_PLAIN, "The quick brown fox jumps over the lazy cat"); @@ -60,10 +60,10 @@ public class FingerPrintTest extends AbstractSearchTest dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file2); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file3); dataContent.usingUser(userModel).usingSite(siteModel).usingResource(folder).createContent(file4); - + waitForIndexing(file4.getName(), true); } - + /** * Search similar document based on document finger print. * The data prep should have loaded 2 files which one is similar @@ -72,7 +72,7 @@ public class FingerPrintTest extends AbstractSearchTest * * @throws Exception */ - @Test(groups= {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1}) + @Test(groups = { TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }) public void search() throws Exception { String uuid = file1.getNodeRefWithoutVersion(); @@ -81,50 +81,50 @@ public class FingerPrintTest extends AbstractSearchTest SearchResponse response = query(fingerprint); int count = response.getEntries().size(); Assert.assertTrue(count > 1); - for(SearchNodeModel m :response.getEntries()) + for (SearchNodeModel m : response.getEntries()) { String match = m.getModel().getName(); switch (match) { - case "pangram.txt": - break; - case "pangram-banana.txt": - break; - case "pangram-taco.txt": - break; - case "pangram-cat.txt": - break; - default: - throw new AssertionError("Not a match to an expected file: " + m.getModel().getName()); + case "pangram.txt": + break; + case "pangram-banana.txt": + break; + case "pangram-taco.txt": + break; + case "pangram-cat.txt": + break; + default: + throw new AssertionError("Not a match to an expected file: " + m.getModel().getName()); } m.getModel().assertThat().field("name").isNot("dog.txt"); m.getModel().assertThat().field("name").isNot("cars.txt"); } } - - @Test(groups= {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1}) + + @Test(groups = { TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }) public void searchSimilar() throws Exception { String uuid = file2.getNodeRefWithoutVersion(); Assert.assertNotNull(uuid); - + // In the response entity there is a score of each doc, change below threshold to bring more like or less. - String fingerprint = String.format("FINGERPRINT:%s_68", uuid); + String fingerprint = String.format("FINGERPRINT:%s_68", uuid); SearchResponse response = query(fingerprint); - + int count = response.getEntries().size(); Assert.assertTrue(count > 1); - - for(SearchNodeModel m :response.getEntries()) + + for (SearchNodeModel m : response.getEntries()) { switch (m.getModel().getName()) { - case "pangram.txt": - break; - case "pangram-taco.txt": - break; - default: - throw new AssertionError("Not a match to an expected file: " + m.getModel().getName()); + case "pangram.txt": + break; + case "pangram-taco.txt": + break; + default: + throw new AssertionError("Not a match to an expected file: " + m.getModel().getName()); } m.getModel().assertThat().field("name").isNot("pangram-banana.txt"); m.getModel().assertThat().field("name").isNot("pangram-cat.txt"); @@ -132,8 +132,8 @@ public class FingerPrintTest extends AbstractSearchTest m.getModel().assertThat().field("name").isNot("cars.txt"); } } - - @Test(groups= {TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1}) + + @Test(groups = { TestGroup.REST_API, TestGroup.SEARCH, TestGroup.ASS_1 }) public void searchSimilar67Percent() throws Exception { String uuid = file2.getNodeRefWithoutVersion(); @@ -142,18 +142,18 @@ public class FingerPrintTest extends AbstractSearchTest SearchResponse response = query(fingerprint); int count = response.getEntries().size(); Assert.assertTrue(count > 1); - for(SearchNodeModel m :response.getEntries()) + for (SearchNodeModel m : response.getEntries()) { switch (m.getModel().getName()) { - case "pangram.txt": - break; - case "pangram-taco.txt": - break; - case "pangram-cat.txt": - break; - default: - throw new AssertionError("Not a match to an expected file: " + m.getModel().getName()); + case "pangram.txt": + break; + case "pangram-taco.txt": + break; + case "pangram-cat.txt": + break; + default: + throw new AssertionError("Not a match to an expected file: " + m.getModel().getName()); } m.getModel().assertThat().field("name").isNot("pangram-banana.txt"); m.getModel().assertThat().field("name").isNot("dog.txt"); From 76491b4432b726248e9e729e83cba4575cc43629 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 2 May 2018 11:46:32 +0100 Subject: [PATCH 22/37] Removed unused dependencies and updated copyright info for amended files --- e2e-test/java/org/alfresco/rest/RestTest.java | 1 - e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java | 2 -- e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java | 2 +- e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java | 2 +- e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java | 2 +- .../java/org/alfresco/rest/search/SearchSpellCheckTest.java | 2 +- e2e-test/java/org/alfresco/rest/search/SearchTest.java | 2 +- 7 files changed, 5 insertions(+), 8 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/RestTest.java b/e2e-test/java/org/alfresco/rest/RestTest.java index d78baac57..ccd8ba6eb 100644 --- a/e2e-test/java/org/alfresco/rest/RestTest.java +++ b/e2e-test/java/org/alfresco/rest/RestTest.java @@ -7,7 +7,6 @@ import org.alfresco.rest.core.RestProperties; import org.alfresco.rest.core.RestWrapper; import org.alfresco.utility.LogFactory; import org.alfresco.utility.TasProperties; -import org.alfresco.utility.Utility; import org.alfresco.utility.data.DataContent; import org.alfresco.utility.data.DataDiscussion; import org.alfresco.utility.data.DataGroup; diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index 5d2e6e020..bb8842ec3 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -20,10 +20,8 @@ package org.alfresco.rest.search; import org.alfresco.dataprep.SiteService.Visibility; import org.alfresco.rest.RestTest; -import org.alfresco.rest.model.builder.NodesBuilder; import org.alfresco.utility.Utility; import org.alfresco.utility.data.RandomData; -import org.alfresco.utility.model.ContentModel; import org.alfresco.utility.model.FileModel; import org.alfresco.utility.model.FileType; import org.alfresco.utility.model.FolderModel; diff --git a/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java b/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java index 8722f10a3..351281858 100644 --- a/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FacetedSearchTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Alfresco Software Limited. + * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * diff --git a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java index 2bc30ef37..04e0e57bf 100644 --- a/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java +++ b/e2e-test/java/org/alfresco/rest/search/FingerPrintTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Alfresco Software Limited. + * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * diff --git a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java index 4f5dc97d2..0a2b9c762 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchAPATHTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Alfresco Software Limited. + * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * diff --git a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java index 70e6c7297..c55d0b215 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchSpellCheckTest.java @@ -28,7 +28,7 @@ import org.testng.annotations.Test; /** * Search end point Public API test with spell checking enabled. * @author Michael Suzuki - *5 + * @author Meenal Bhave */ public class SearchSpellCheckTest extends AbstractSearchTest { diff --git a/e2e-test/java/org/alfresco/rest/search/SearchTest.java b/e2e-test/java/org/alfresco/rest/search/SearchTest.java index f90bc361f..b1a285c6c 100644 --- a/e2e-test/java/org/alfresco/rest/search/SearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/SearchTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Alfresco Software Limited. + * Copyright (C) 2018 Alfresco Software Limited. * * This file is part of Alfresco * From c792aff063e3f5e8b62f2016250fd778df88de31 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 2 May 2018 11:50:03 +0100 Subject: [PATCH 23/37] Removed unnecessary empty line --- e2e-test/java/org/alfresco/rest/RestTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/RestTest.java b/e2e-test/java/org/alfresco/rest/RestTest.java index ccd8ba6eb..0358a948d 100644 --- a/e2e-test/java/org/alfresco/rest/RestTest.java +++ b/e2e-test/java/org/alfresco/rest/RestTest.java @@ -85,5 +85,4 @@ public abstract class RestTest extends AbstractTestNGSpringContextTests { LOG.info(String.format("*** ENDING Test: [%s] ***", method.getName())); } - } From 7421ad2cd8ddb7ac03c7dd710049a89b47407a00 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 2 May 2018 12:38:17 +0100 Subject: [PATCH 24/37] Corrected the comment --- e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java index bb8842ec3..560f385dd 100644 --- a/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java +++ b/e2e-test/java/org/alfresco/rest/search/AbstractSearchTest.java @@ -37,6 +37,7 @@ import org.testng.annotations.BeforeClass; *
  • Preparing search requests. * * @author Michael Suzuki + * @author Meenal Bhave * */ public class AbstractSearchTest extends RestTest @@ -162,7 +163,7 @@ public class AbstractSearchTest extends RestTest SearchRequest searchRequest = createQuery(userQuery); SearchResponse response = query(searchRequest); - // Repeat search until the element is found or Timeout is hit + // Repeat search until the query results are as expected or Search Retry count is hit for (int searchCount = 1; searchCount <= 3; searchCount++) { if (searchCount > 1) From 8ebf922323491607cade28fa75128c4ac759e8a7 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Fri, 1 Jun 2018 12:30:48 +0100 Subject: [PATCH 25/37] Search-876: Added after method to run always --- .../java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java index 46d34ed2f..2a4fa1cfd 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java @@ -47,7 +47,7 @@ public class SearchSQLViaJDBCTest extends AbstractSearchTest SearchSQLJDBC searchSql; SearchSqlJDBCRequest sqlRequest = new SearchSqlJDBCRequest(); - @AfterMethod + @AfterMethod(alwaysRun=true) public void cleanUp() throws SQLException { restClient.withSearchSqlViaJDBC().clearSearchQuery(sqlRequest); From 0bd10dc033b624a50b544d121c31ef18b6d41a87 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 5 Jun 2018 10:04:30 +0100 Subject: [PATCH 26/37] Search-876: Moved Error checking assert before recordset --- .../org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java index 2a4fa1cfd..a53b347fa 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java @@ -142,10 +142,12 @@ public class SearchSQLViaJDBCTest extends AbstractSearchTest // Appropriate error is retrieved when SQL is incorrect ResultSet rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); - Assert.assertNull(rs); String error = sqlRequest.getErrorDetails(); Assert.assertNotNull(error); Assert.assertTrue(error.contains(expectedError), "Error shown: " + error + " Error expected: " + expectedError); + + // Record set is null + Assert.assertNull(rs); } } \ No newline at end of file From 3630f3632638afa17b4c15f15a8d59e22cf524e8 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 5 Jun 2018 10:07:23 +0100 Subject: [PATCH 27/37] Search-634 Tests implemented for select star via sql api and jdbc --- .../rest/search/sql/SearchSQLAPITest.java | 27 +++++++++++++ .../rest/search/sql/SearchSQLViaJDBCTest.java | 40 +++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java index ef6e9fe51..8f1b2037a 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java @@ -599,4 +599,31 @@ public class SearchSQLAPITest extends AbstractSearchTest restClient.authenticateUser(userModel).withSearchSqlAPI().searchSql(sqlRequest); restClient.assertStatusCodeIs(expectedStatus); } + + @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 14) + public void testSelectStar() throws Exception + { + // Select * with Limit, json format + SearchSqlRequest sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select * from alfresco"); + sqlRequest.setLimit(1); + + RestResponse response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + response.assertThat().body("list.pagination.maxItems", Matchers.equalTo(1)); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("PATH")); + + // Select * with Limit, solr format: Also covered in JDBC + sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select * from alfresco"); + sqlRequest.setFormat("solr"); + sqlRequest.setIncludeMetadata(true); + sqlRequest.setLimit(1); + + response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.PATH", Matchers.notNullValue()); + } } \ No newline at end of file diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java index a53b347fa..25a1f01ca 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java @@ -150,4 +150,44 @@ public class SearchSQLViaJDBCTest extends AbstractSearchTest // Record set is null Assert.assertNull(rs); } + + @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 06) + public void testQuerySelectStar() throws SQLException + { + // Select * query with limit clause + String sql = "select * from alfresco limit 5"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + // Select * with limit clause works: No error is retrieved + ResultSet rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("PATH")); + Assert.assertNotNull(rs.getString("DBID")); + Assert.assertNotNull(rs.getString("cm_name")); + } + + // Select * query Without limit clause: No error is retrieved + sql = "select * from alfresco"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + // No error is retrieved when SQL is incorrect + rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("PATH")); + Assert.assertNotNull(rs.getString("DBID")); + Assert.assertNotNull(rs.getString("cm_name")); + } + } } \ No newline at end of file From ee75aacad0405e00b721d5b9614476f5740e24b4 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 18 Jun 2018 17:47:21 +0100 Subject: [PATCH 28/37] Search-904 Test added for select distinct --- .../rest/search/sql/SearchSQLAPITest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java index 8f1b2037a..c251a9892 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java @@ -626,4 +626,29 @@ public class SearchSQLAPITest extends AbstractSearchTest restClient.assertStatusCodeIs(HttpStatus.OK); restClient.onResponse().assertThat().body("result-set.docs[0].aliases.PATH", Matchers.notNullValue()); } + + @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 15) + public void testDistinct() throws Exception + { + // Select distinct site: json format + SearchSqlRequest sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select distinct Site from alfresco"); + sqlRequest.setLimit(10); + + RestResponse response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + response.assertThat().body("list.pagination.maxItems", Matchers.equalTo(10)); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("site")); + + // Select distinct cm_name: solr format + sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select distinct cm_name from alfresco limit 5"); + sqlRequest.setFormat("solr"); + + response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + restClient.onResponse().assertThat().body("result-set.docs[0].cm_name", Matchers.notNullValue()); + } } \ No newline at end of file From 1aacc28dd86aa9707d6e36712c8acc702e11b71b Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 25 Jun 2018 11:27:34 +0100 Subject: [PATCH 29/37] Search-904 Test added for select distinct via JDBC --- .../rest/search/sql/SearchSQLViaJDBCTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java index 25a1f01ca..eed0bb445 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLViaJDBCTest.java @@ -190,4 +190,24 @@ public class SearchSQLViaJDBCTest extends AbstractSearchTest Assert.assertNotNull(rs.getString("cm_name")); } } + + @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 07) + public void testQuerySelectDistinct() throws SQLException + { + // Select distinct query with limit clause + String sql = "select distinct cm_name from alfresco limit 5"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(adminUserModel); + + // Select distinct with limit clause works: No error is retrieved + ResultSet rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("cm_name")); + } + } } \ No newline at end of file From fba3dd84a42dbfef0ac38cd72a23537204278db3 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 2 Jul 2018 16:56:47 +0100 Subject: [PATCH 30/37] Search-940 Tests implemented for Phrase Searching (Search-852) via search /sql api and JDBC --- .../rest/search/sql/SearchSQLPhraseTest.java | 242 ++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java new file mode 100644 index 000000000..7d49d152e --- /dev/null +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java @@ -0,0 +1,242 @@ +/* + * 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.sql; + +import java.sql.ResultSet; + +import org.alfresco.rest.core.RestResponse; +import org.alfresco.rest.search.AbstractSearchTest; +import org.alfresco.rest.search.SearchSqlJDBCRequest; +import org.alfresco.rest.search.SearchSqlRequest; +import org.alfresco.utility.model.FileModel; +import org.alfresco.utility.model.FileType; +import org.alfresco.utility.model.TestGroup; +import org.springframework.http.HttpStatus; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import org.hamcrest.Matchers; + +/** + * Tests for /sql end point Search API. + * + * @author Meenal Bhave + */ +public class SearchSQLPhraseTest extends AbstractSearchTest +{ + FileModel fileBanana, fileYellowBanana, fileBigYellowBanana, fileBigBananaBoat, fileYellowBananaBigBoat, fileBigYellowBoat; + + @BeforeClass(alwaysRun = true) + public void dataPreparation() throws Exception + { + super.dataPreparation(); + + // Create files with different phrases + fileBanana = new FileModel(unique_searchString + "-1.txt", "phrase searching", "", FileType.TEXT_PLAIN, "banana"); + dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBanana); + + fileYellowBanana = new FileModel(unique_searchString + "-2.txt", "phrase searching", "", FileType.TEXT_PLAIN, "yellow banana"); + dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileYellowBanana); + + fileBigYellowBanana = new FileModel(unique_searchString + "-3.txt", "phrase searching", "", FileType.TEXT_PLAIN, "big yellow banana"); + dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigYellowBanana); + + fileBigBananaBoat = new FileModel(unique_searchString + "-4.txt", "", "phrase searching", FileType.TEXT_PLAIN, "big boat"); + dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigBananaBoat); + + fileYellowBananaBigBoat = new FileModel(unique_searchString + "-5.txt", "", "phrase searching", FileType.TEXT_PLAIN, "yellow banana big boat"); + dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileYellowBananaBigBoat); + + fileBigYellowBoat = new FileModel(unique_searchString + "-6.txt", "", "phrase searching", FileType.TEXT_PLAIN, "big yellow boat"); + dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigYellowBoat); + + waitForIndexing(fileBigYellowBoat.getName(), true); + } + + @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 1) + public void testPhraseQueries() throws Exception + { + // yellow banana: 5 results expected + SearchSqlRequest sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select cm_name, cm_content from alfresco where cm_content = '(yellow banana)'"); + sqlRequest.setLimit(10); + + RestResponse response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + response.assertThat().body("list.pagination.count", Matchers.equalTo(5)); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("cm_content")); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].value", Matchers.equalToIgnoringCase(fileYellowBanana.getContent())); + restClient.onResponse().assertThat().body("list.entries.entry[0][1].label", Matchers.equalToIgnoringCase("cm_name")); + restClient.onResponse().assertThat().body("list.entries.entry[0][1].value", Matchers.equalToIgnoringCase(fileYellowBanana.getName())); + + // yellow banana big boat: 6 results expected + sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select cm_name, cm_content from alfresco where cm_content = '(yellow banana big boat)'"); + sqlRequest.setLimit(10); + + response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + response.assertThat().body("list.pagination.count", Matchers.equalTo(6)); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("cm_content")); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].value", Matchers.equalToIgnoringCase(fileYellowBananaBigBoat.getContent())); + restClient.onResponse().assertThat().body("list.entries.entry[0][1].label", Matchers.equalToIgnoringCase("cm_name")); + restClient.onResponse().assertThat().body("list.entries.entry[0][1].value", Matchers.equalToIgnoringCase(fileYellowBananaBigBoat.getName())); + + // yellow banana big boat: 4 results expected + sqlRequest = new SearchSqlRequest(); + sqlRequest.setSql("select cm_name, cm_content from alfresco where cm_content = '(big boat)'"); + sqlRequest.setLimit(10); + + response = searchSql(sqlRequest); + + restClient.assertStatusCodeIs(HttpStatus.OK); + response.assertThat().body("list.pagination.count", Matchers.equalTo(4)); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("cm_content")); + restClient.onResponse().assertThat().body("list.entries.entry[0][0].value", Matchers.equalToIgnoringCase(fileBigBananaBoat.getContent())); + restClient.onResponse().assertThat().body("list.entries.entry[0][1].label", Matchers.equalToIgnoringCase("cm_name")); + restClient.onResponse().assertThat().body("list.entries.entry[0][1].value", Matchers.equalToIgnoringCase(fileBigBananaBoat.getName())); + } + + @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 2) + public void testPhraseQueriesViaJDBC() throws Exception + { + // yellow banana: 5 results expected + SearchSqlJDBCRequest sqlRequest = new SearchSqlJDBCRequest(); + String sql = "select cm_name, cm_content from alfresco where cm_content = '(yellow banana)'"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + ResultSet rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + // Set expected Results + Integer expectedCount = 5; + String firstResultFileName = fileYellowBanana.getName(); + String firstResultContent = fileYellowBanana.getContent(); + + Integer i = 1; + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("cm_name")); + Assert.assertNotNull(rs.getString("cm_content")); + + if(i == 1) + { + Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); + Assert.assertEquals(rs.getString("cm_content"), firstResultContent); + } + + i++; + } + + Assert.assertEquals(i, expectedCount); + + // yellow banana big boat: 6 results expected + sql = "select cm_name, cm_content from alfresco where cm_content = '(yellow banana big boat)'"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + expectedCount = 6; + firstResultFileName = fileYellowBananaBigBoat.getName(); + firstResultContent = fileYellowBananaBigBoat.getContent(); + + i = 1; + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("cm_name")); + Assert.assertNotNull(rs.getString("cm_content")); + + if(i == 1) + { + Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); + Assert.assertEquals(rs.getString("cm_content"), firstResultContent); + } + + i++; + } + + Assert.assertEquals(i, expectedCount); + + // yellow banana big boat: 6 results expected + sql = "select cm_name, cm_content from alfresco where cm_content = '(yellow banana big boat)'"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + expectedCount = 6; + firstResultFileName = fileYellowBananaBigBoat.getName(); + firstResultContent = fileYellowBananaBigBoat.getContent(); + + i = 1; + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("cm_name")); + Assert.assertNotNull(rs.getString("cm_content")); + + if(i == 1) + { + Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); + Assert.assertEquals(rs.getString("cm_content"), firstResultContent); + } + + i++; + } + + Assert.assertEquals(i, expectedCount); + + // big boat: 4 results expected + sql = "select cm_name, cm_content from alfresco where cm_content = '(big boat)'"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); + + expectedCount = 4; + firstResultFileName = fileBigBananaBoat.getName(); + firstResultContent = fileBigBananaBoat.getContent(); + i = 1; + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("cm_name")); + Assert.assertNotNull(rs.getString("cm_content")); + + if(i == 1) + { + Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); + Assert.assertEquals(rs.getString("cm_content"), firstResultContent); + } + + i++; + } + + Assert.assertEquals(i, expectedCount); + } +} \ No newline at end of file From 426496aaa0a32c31aef8af0001e9e1effa7cbc0e Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 3 Jul 2018 12:03:17 +0100 Subject: [PATCH 31/37] Search-940 Corrected Tests --- .../rest/search/sql/SearchSQLPhraseTest.java | 55 ++++--------------- 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java index 7d49d152e..a2d0cd75c 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java @@ -44,22 +44,22 @@ public class SearchSQLPhraseTest extends AbstractSearchTest super.dataPreparation(); // Create files with different phrases - fileBanana = new FileModel(unique_searchString + "-1.txt", "phrase searching", "", FileType.TEXT_PLAIN, "banana"); + fileBanana = new FileModel(unique_searchString + "-1.txt", "banana", "phrase searching", FileType.TEXT_PLAIN, "banana"); dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBanana); - fileYellowBanana = new FileModel(unique_searchString + "-2.txt", "phrase searching", "", FileType.TEXT_PLAIN, "yellow banana"); + fileYellowBanana = new FileModel(unique_searchString + "-2.txt", "yellow banana", "phrase searching", FileType.TEXT_PLAIN, "yellow banana"); dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileYellowBanana); - fileBigYellowBanana = new FileModel(unique_searchString + "-3.txt", "phrase searching", "", FileType.TEXT_PLAIN, "big yellow banana"); + fileBigYellowBanana = new FileModel(unique_searchString + "-3.txt", "big yellow banana", "phrase searching", FileType.TEXT_PLAIN, "big yellow banana"); dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigYellowBanana); - fileBigBananaBoat = new FileModel(unique_searchString + "-4.txt", "", "phrase searching", FileType.TEXT_PLAIN, "big boat"); + fileBigBananaBoat = new FileModel(unique_searchString + "-4.txt", "big boat", "phrase searching", FileType.TEXT_PLAIN, "big boat"); dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigBananaBoat); - fileYellowBananaBigBoat = new FileModel(unique_searchString + "-5.txt", "", "phrase searching", FileType.TEXT_PLAIN, "yellow banana big boat"); + fileYellowBananaBigBoat = new FileModel(unique_searchString + "-5.txt", "yellow banana big boat", "phrase searching", FileType.TEXT_PLAIN, "yellow banana big boat"); dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileYellowBananaBigBoat); - fileBigYellowBoat = new FileModel(unique_searchString + "-6.txt", "", "phrase searching", FileType.TEXT_PLAIN, "big yellow boat"); + fileBigYellowBoat = new FileModel(unique_searchString + "-6.txt", "big yellow boat", "phrase searching", FileType.TEXT_PLAIN, "big yellow boat"); dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigYellowBoat); waitForIndexing(fileBigYellowBoat.getName(), true); @@ -129,45 +129,14 @@ public class SearchSQLPhraseTest extends AbstractSearchTest String firstResultFileName = fileYellowBanana.getName(); String firstResultContent = fileYellowBanana.getContent(); - Integer i = 1; + Integer i = 0; while (rs.next()) { // Field values are retrieved Assert.assertNotNull(rs.getString("cm_name")); Assert.assertNotNull(rs.getString("cm_content")); - if(i == 1) - { - Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); - Assert.assertEquals(rs.getString("cm_content"), firstResultContent); - } - - i++; - } - - Assert.assertEquals(i, expectedCount); - - // yellow banana big boat: 6 results expected - sql = "select cm_name, cm_content from alfresco where cm_content = '(yellow banana big boat)'"; - sqlRequest.setSql(sql); - sqlRequest.setAuthUser(userModel); - - rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); - Assert.assertNotNull(rs); - Assert.assertNull(sqlRequest.getErrorDetails()); - - expectedCount = 6; - firstResultFileName = fileYellowBananaBigBoat.getName(); - firstResultContent = fileYellowBananaBigBoat.getContent(); - - i = 1; - while (rs.next()) - { - // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_name")); - Assert.assertNotNull(rs.getString("cm_content")); - - if(i == 1) + if(i == 0) { Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); Assert.assertEquals(rs.getString("cm_content"), firstResultContent); @@ -191,14 +160,14 @@ public class SearchSQLPhraseTest extends AbstractSearchTest firstResultFileName = fileYellowBananaBigBoat.getName(); firstResultContent = fileYellowBananaBigBoat.getContent(); - i = 1; + i = 0; while (rs.next()) { // Field values are retrieved Assert.assertNotNull(rs.getString("cm_name")); Assert.assertNotNull(rs.getString("cm_content")); - if(i == 1) + if(i == 0) { Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); Assert.assertEquals(rs.getString("cm_content"), firstResultContent); @@ -221,14 +190,14 @@ public class SearchSQLPhraseTest extends AbstractSearchTest expectedCount = 4; firstResultFileName = fileBigBananaBoat.getName(); firstResultContent = fileBigBananaBoat.getContent(); - i = 1; + i = 0; while (rs.next()) { // Field values are retrieved Assert.assertNotNull(rs.getString("cm_name")); Assert.assertNotNull(rs.getString("cm_content")); - if(i == 1) + if(i == 0) { Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); Assert.assertEquals(rs.getString("cm_content"), firstResultContent); From c2a223e37f28d4b086f1ef9e44eec95220fba6c1 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 4 Jul 2018 17:28:05 +0100 Subject: [PATCH 32/37] Search-940 Amended Tests to check all the results, rather than the top ranked result as discussed --- .../rest/search/sql/SearchSQLPhraseTest.java | 195 +++++++++++------- 1 file changed, 117 insertions(+), 78 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java index a2d0cd75c..c72b0666a 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java @@ -15,6 +15,11 @@ package org.alfresco.rest.search.sql; import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; import org.alfresco.rest.core.RestResponse; import org.alfresco.rest.search.AbstractSearchTest; @@ -37,7 +42,9 @@ import org.hamcrest.Matchers; public class SearchSQLPhraseTest extends AbstractSearchTest { FileModel fileBanana, fileYellowBanana, fileBigYellowBanana, fileBigBananaBoat, fileYellowBananaBigBoat, fileBigYellowBoat; - + + List expectedContent = new ArrayList(); + @BeforeClass(alwaysRun = true) public void dataPreparation() throws Exception { @@ -65,58 +72,90 @@ public class SearchSQLPhraseTest extends AbstractSearchTest waitForIndexing(fileBigYellowBoat.getName(), true); } + @SuppressWarnings("unchecked") @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 1) public void testPhraseQueries() throws Exception { // yellow banana: 5 results expected SearchSqlRequest sqlRequest = new SearchSqlRequest(); - sqlRequest.setSql("select cm_name, cm_content from alfresco where cm_content = '(yellow banana)'"); + sqlRequest.setSql("select cm_content from alfresco where cm_content = '(yellow banana)'"); sqlRequest.setLimit(10); RestResponse response = searchSql(sqlRequest); restClient.assertStatusCodeIs(HttpStatus.OK); - response.assertThat().body("list.pagination.count", Matchers.equalTo(5)); - restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("cm_content")); - restClient.onResponse().assertThat().body("list.entries.entry[0][0].value", Matchers.equalToIgnoringCase(fileYellowBanana.getContent())); - restClient.onResponse().assertThat().body("list.entries.entry[0][1].label", Matchers.equalToIgnoringCase("cm_name")); - restClient.onResponse().assertThat().body("list.entries.entry[0][1].value", Matchers.equalToIgnoringCase(fileYellowBanana.getName())); + + // Set Expected Result + expectedContent = new ArrayList(); + expectedContent.add(Arrays.asList(fileBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); + + // Check Result count matches + response.assertThat().body("list.pagination.count", Matchers.equalTo(expectedContent.size())); + + // Check Results match + Collection> actualResult = response.getResponse().body().jsonPath().get("list.entries.entry.value"); + Assert.assertTrue(actualResult.containsAll(expectedContent), "Phrase Search Results are not as expected"); // yellow banana big boat: 6 results expected sqlRequest = new SearchSqlRequest(); - sqlRequest.setSql("select cm_name, cm_content from alfresco where cm_content = '(yellow banana big boat)'"); + sqlRequest.setSql("select cm_content from alfresco where cm_content = '(yellow banana big boat)'"); sqlRequest.setLimit(10); response = searchSql(sqlRequest); restClient.assertStatusCodeIs(HttpStatus.OK); - response.assertThat().body("list.pagination.count", Matchers.equalTo(6)); - restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("cm_content")); - restClient.onResponse().assertThat().body("list.entries.entry[0][0].value", Matchers.equalToIgnoringCase(fileYellowBananaBigBoat.getContent())); - restClient.onResponse().assertThat().body("list.entries.entry[0][1].label", Matchers.equalToIgnoringCase("cm_name")); - restClient.onResponse().assertThat().body("list.entries.entry[0][1].value", Matchers.equalToIgnoringCase(fileYellowBananaBigBoat.getName())); + + // Set Expected Result + expectedContent = new ArrayList(); + expectedContent.add(Arrays.asList(fileBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); + + // Check Result count matches + response.assertThat().body("list.pagination.count", Matchers.equalTo(expectedContent.size())); + + // Check Results match + actualResult = response.getResponse().body().jsonPath().get("list.entries.entry.value"); + Assert.assertTrue(actualResult.containsAll(expectedContent), "Phrase Search Results are not as expected"); // yellow banana big boat: 4 results expected sqlRequest = new SearchSqlRequest(); - sqlRequest.setSql("select cm_name, cm_content from alfresco where cm_content = '(big boat)'"); + sqlRequest.setSql("select cm_content from alfresco where cm_content = '(big boat)'"); sqlRequest.setLimit(10); response = searchSql(sqlRequest); restClient.assertStatusCodeIs(HttpStatus.OK); - response.assertThat().body("list.pagination.count", Matchers.equalTo(4)); - restClient.onResponse().assertThat().body("list.entries.entry[0][0].label", Matchers.equalToIgnoringCase("cm_content")); - restClient.onResponse().assertThat().body("list.entries.entry[0][0].value", Matchers.equalToIgnoringCase(fileBigBananaBoat.getContent())); - restClient.onResponse().assertThat().body("list.entries.entry[0][1].label", Matchers.equalToIgnoringCase("cm_name")); - restClient.onResponse().assertThat().body("list.entries.entry[0][1].value", Matchers.equalToIgnoringCase(fileBigBananaBoat.getName())); + + // Set Expected Result + expectedContent = new ArrayList(); + expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); + + // Check Result count matches + response.assertThat().body("list.pagination.count", Matchers.equalTo(expectedContent.size())); + + // Check Results match + actualResult = response.getResponse().body().jsonPath().get("list.entries.entry.value"); + Assert.assertTrue(actualResult.containsAll(expectedContent), "Phrase Search Results are not as expected"); } + @SuppressWarnings("unchecked") @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 2) public void testPhraseQueriesViaJDBC() throws Exception { // yellow banana: 5 results expected SearchSqlJDBCRequest sqlRequest = new SearchSqlJDBCRequest(); - String sql = "select cm_name, cm_content from alfresco where cm_content = '(yellow banana)'"; + String sql = "select cm_content from alfresco where cm_content = '(yellow banana)'"; sqlRequest.setSql(sql); sqlRequest.setAuthUser(userModel); @@ -124,31 +163,62 @@ public class SearchSQLPhraseTest extends AbstractSearchTest Assert.assertNotNull(rs); Assert.assertNull(sqlRequest.getErrorDetails()); - // Set expected Results - Integer expectedCount = 5; - String firstResultFileName = fileYellowBanana.getName(); - String firstResultContent = fileYellowBanana.getContent(); + // Set Expected Result + expectedContent = new ArrayList(); + expectedContent.add(Arrays.asList(fileBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); Integer i = 0; + List actualContent = new ArrayList(); + while (rs.next()) { // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_name")); Assert.assertNotNull(rs.getString("cm_content")); - - if(i == 0) - { - Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); - Assert.assertEquals(rs.getString("cm_content"), firstResultContent); - } - + actualContent.add(Arrays.asList(rs.getString("cm_content"))); i++; } + + Assert.assertTrue(i == expectedContent.size()); + Assert.assertTrue(actualContent.containsAll(expectedContent), "Phrase Search Results are not as expected"); - Assert.assertEquals(i, expectedCount); + // yellow banana big boat: 6 results expected + sql = "select cm_content from alfresco where cm_content = '(yellow banana big boat)'"; + sqlRequest.setSql(sql); + sqlRequest.setAuthUser(userModel); + + rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); + Assert.assertNotNull(rs); + Assert.assertNull(sqlRequest.getErrorDetails()); - // yellow banana big boat: 6 results expected - sql = "select cm_name, cm_content from alfresco where cm_content = '(yellow banana big boat)'"; + // Set Expected Result + expectedContent = new ArrayList(); + expectedContent.add(Arrays.asList(fileBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); + + i = 0; + actualContent = new ArrayList(); + + while (rs.next()) + { + // Field values are retrieved + Assert.assertNotNull(rs.getString("cm_content")); + actualContent.add(Arrays.asList(rs.getString("cm_content"))); + i++; + } + + Assert.assertTrue(i == expectedContent.size()); + Assert.assertTrue(actualContent.containsAll(expectedContent), "Phrase Search Results are not as expected"); + + // big boat: 4 results expected + sql = "select cm_content from alfresco where cm_content = '(big boat)'"; sqlRequest.setSql(sql); sqlRequest.setAuthUser(userModel); @@ -156,56 +226,25 @@ public class SearchSQLPhraseTest extends AbstractSearchTest Assert.assertNotNull(rs); Assert.assertNull(sqlRequest.getErrorDetails()); - expectedCount = 6; - firstResultFileName = fileYellowBananaBigBoat.getName(); - firstResultContent = fileYellowBananaBigBoat.getContent(); - + // Set Expected Result + expectedContent = new ArrayList(); + expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); + expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); + expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); + i = 0; + actualContent = new ArrayList(); + while (rs.next()) { // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_name")); Assert.assertNotNull(rs.getString("cm_content")); - - if(i == 0) - { - Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); - Assert.assertEquals(rs.getString("cm_content"), firstResultContent); - } - + actualContent.add(Arrays.asList(rs.getString("cm_content"))); i++; } - - Assert.assertEquals(i, expectedCount); - - // big boat: 4 results expected - sql = "select cm_name, cm_content from alfresco where cm_content = '(big boat)'"; - sqlRequest.setSql(sql); - sqlRequest.setAuthUser(userModel); - rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); - Assert.assertNotNull(rs); - Assert.assertNull(sqlRequest.getErrorDetails()); - - expectedCount = 4; - firstResultFileName = fileBigBananaBoat.getName(); - firstResultContent = fileBigBananaBoat.getContent(); - i = 0; - while (rs.next()) - { - // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_name")); - Assert.assertNotNull(rs.getString("cm_content")); - - if(i == 0) - { - Assert.assertEquals(rs.getString("cm_name"), firstResultFileName); - Assert.assertEquals(rs.getString("cm_content"), firstResultContent); - } - - i++; - } - - Assert.assertEquals(i, expectedCount); + Assert.assertTrue(i == expectedContent.size()); + Assert.assertTrue(actualContent.containsAll(expectedContent), "Phrase Search Results are not as expected"); } } \ No newline at end of file From b51d55ad86a60ec4df24d5f7604eb3a8b9495746 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Wed, 4 Jul 2018 17:39:19 +0100 Subject: [PATCH 33/37] Removed from this branch as it should be part of a seperate branch --- .../rest/search/sql/SearchSQLPhraseTest.java | 250 ------------------ 1 file changed, 250 deletions(-) delete mode 100644 e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java deleted file mode 100644 index c72b0666a..000000000 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLPhraseTest.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * 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.sql; - -import java.sql.ResultSet; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.alfresco.rest.core.RestResponse; -import org.alfresco.rest.search.AbstractSearchTest; -import org.alfresco.rest.search.SearchSqlJDBCRequest; -import org.alfresco.rest.search.SearchSqlRequest; -import org.alfresco.utility.model.FileModel; -import org.alfresco.utility.model.FileType; -import org.alfresco.utility.model.TestGroup; -import org.springframework.http.HttpStatus; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; -import org.hamcrest.Matchers; - -/** - * Tests for /sql end point Search API. - * - * @author Meenal Bhave - */ -public class SearchSQLPhraseTest extends AbstractSearchTest -{ - FileModel fileBanana, fileYellowBanana, fileBigYellowBanana, fileBigBananaBoat, fileYellowBananaBigBoat, fileBigYellowBoat; - - List expectedContent = new ArrayList(); - - @BeforeClass(alwaysRun = true) - public void dataPreparation() throws Exception - { - super.dataPreparation(); - - // Create files with different phrases - fileBanana = new FileModel(unique_searchString + "-1.txt", "banana", "phrase searching", FileType.TEXT_PLAIN, "banana"); - dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBanana); - - fileYellowBanana = new FileModel(unique_searchString + "-2.txt", "yellow banana", "phrase searching", FileType.TEXT_PLAIN, "yellow banana"); - dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileYellowBanana); - - fileBigYellowBanana = new FileModel(unique_searchString + "-3.txt", "big yellow banana", "phrase searching", FileType.TEXT_PLAIN, "big yellow banana"); - dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigYellowBanana); - - fileBigBananaBoat = new FileModel(unique_searchString + "-4.txt", "big boat", "phrase searching", FileType.TEXT_PLAIN, "big boat"); - dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigBananaBoat); - - fileYellowBananaBigBoat = new FileModel(unique_searchString + "-5.txt", "yellow banana big boat", "phrase searching", FileType.TEXT_PLAIN, "yellow banana big boat"); - dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileYellowBananaBigBoat); - - fileBigYellowBoat = new FileModel(unique_searchString + "-6.txt", "big yellow boat", "phrase searching", FileType.TEXT_PLAIN, "big yellow boat"); - dataContent.usingUser(userModel).usingSite(siteModel).createContent(fileBigYellowBoat); - - waitForIndexing(fileBigYellowBoat.getName(), true); - } - - @SuppressWarnings("unchecked") - @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 1) - public void testPhraseQueries() throws Exception - { - // yellow banana: 5 results expected - SearchSqlRequest sqlRequest = new SearchSqlRequest(); - sqlRequest.setSql("select cm_content from alfresco where cm_content = '(yellow banana)'"); - sqlRequest.setLimit(10); - - RestResponse response = searchSql(sqlRequest); - - restClient.assertStatusCodeIs(HttpStatus.OK); - - // Set Expected Result - expectedContent = new ArrayList(); - expectedContent.add(Arrays.asList(fileBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); - - // Check Result count matches - response.assertThat().body("list.pagination.count", Matchers.equalTo(expectedContent.size())); - - // Check Results match - Collection> actualResult = response.getResponse().body().jsonPath().get("list.entries.entry.value"); - Assert.assertTrue(actualResult.containsAll(expectedContent), "Phrase Search Results are not as expected"); - - // yellow banana big boat: 6 results expected - sqlRequest = new SearchSqlRequest(); - sqlRequest.setSql("select cm_content from alfresco where cm_content = '(yellow banana big boat)'"); - sqlRequest.setLimit(10); - - response = searchSql(sqlRequest); - - restClient.assertStatusCodeIs(HttpStatus.OK); - - // Set Expected Result - expectedContent = new ArrayList(); - expectedContent.add(Arrays.asList(fileBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); - - // Check Result count matches - response.assertThat().body("list.pagination.count", Matchers.equalTo(expectedContent.size())); - - // Check Results match - actualResult = response.getResponse().body().jsonPath().get("list.entries.entry.value"); - Assert.assertTrue(actualResult.containsAll(expectedContent), "Phrase Search Results are not as expected"); - - // yellow banana big boat: 4 results expected - sqlRequest = new SearchSqlRequest(); - sqlRequest.setSql("select cm_content from alfresco where cm_content = '(big boat)'"); - sqlRequest.setLimit(10); - - response = searchSql(sqlRequest); - - restClient.assertStatusCodeIs(HttpStatus.OK); - - // Set Expected Result - expectedContent = new ArrayList(); - expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); - - // Check Result count matches - response.assertThat().body("list.pagination.count", Matchers.equalTo(expectedContent.size())); - - // Check Results match - actualResult = response.getResponse().body().jsonPath().get("list.entries.entry.value"); - Assert.assertTrue(actualResult.containsAll(expectedContent), "Phrase Search Results are not as expected"); - } - - @SuppressWarnings("unchecked") - @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 2) - public void testPhraseQueriesViaJDBC() throws Exception - { - // yellow banana: 5 results expected - SearchSqlJDBCRequest sqlRequest = new SearchSqlJDBCRequest(); - String sql = "select cm_content from alfresco where cm_content = '(yellow banana)'"; - sqlRequest.setSql(sql); - sqlRequest.setAuthUser(userModel); - - ResultSet rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); - Assert.assertNotNull(rs); - Assert.assertNull(sqlRequest.getErrorDetails()); - - // Set Expected Result - expectedContent = new ArrayList(); - expectedContent.add(Arrays.asList(fileBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); - - Integer i = 0; - List actualContent = new ArrayList(); - - while (rs.next()) - { - // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_content")); - actualContent.add(Arrays.asList(rs.getString("cm_content"))); - i++; - } - - Assert.assertTrue(i == expectedContent.size()); - Assert.assertTrue(actualContent.containsAll(expectedContent), "Phrase Search Results are not as expected"); - - // yellow banana big boat: 6 results expected - sql = "select cm_content from alfresco where cm_content = '(yellow banana big boat)'"; - sqlRequest.setSql(sql); - sqlRequest.setAuthUser(userModel); - - rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); - Assert.assertNotNull(rs); - Assert.assertNull(sqlRequest.getErrorDetails()); - - // Set Expected Result - expectedContent = new ArrayList(); - expectedContent.add(Arrays.asList(fileBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); - - i = 0; - actualContent = new ArrayList(); - - while (rs.next()) - { - // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_content")); - actualContent.add(Arrays.asList(rs.getString("cm_content"))); - i++; - } - - Assert.assertTrue(i == expectedContent.size()); - Assert.assertTrue(actualContent.containsAll(expectedContent), "Phrase Search Results are not as expected"); - - // big boat: 4 results expected - sql = "select cm_content from alfresco where cm_content = '(big boat)'"; - sqlRequest.setSql(sql); - sqlRequest.setAuthUser(userModel); - - rs = restClient.withSearchSqlViaJDBC().executeQueryViaJDBC(sqlRequest); - Assert.assertNotNull(rs); - Assert.assertNull(sqlRequest.getErrorDetails()); - - // Set Expected Result - expectedContent = new ArrayList(); - expectedContent.add(Arrays.asList(fileBigYellowBanana.getContent())); - expectedContent.add(Arrays.asList(fileYellowBananaBigBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigYellowBoat.getContent())); - expectedContent.add(Arrays.asList(fileBigBananaBoat.getContent())); - - i = 0; - actualContent = new ArrayList(); - - while (rs.next()) - { - // Field values are retrieved - Assert.assertNotNull(rs.getString("cm_content")); - actualContent.add(Arrays.asList(rs.getString("cm_content"))); - i++; - } - - Assert.assertTrue(i == expectedContent.size()); - Assert.assertTrue(actualContent.containsAll(expectedContent), "Phrase Search Results are not as expected"); - } -} \ No newline at end of file From f3185db181dffdced11f56a76f86f51373d4e045 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 24 Jul 2018 16:29:05 +0100 Subject: [PATCH 34/37] Search-874 Test Added to test that selected set of fields appear in select * queries --- .../rest/search/sql/SearchSQLAPITest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java index c251a9892..6cdedf75e 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java @@ -21,6 +21,7 @@ import org.alfresco.utility.constants.UserRole; import org.alfresco.utility.model.TestGroup; import org.alfresco.utility.model.UserModel; import org.springframework.http.HttpStatus; +import org.testng.Assert; import org.testng.annotations.Test; import org.hamcrest.Matchers; @@ -624,7 +625,34 @@ public class SearchSQLAPITest extends AbstractSearchTest response = searchSql(sqlRequest); restClient.assertStatusCodeIs(HttpStatus.OK); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_name", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_created", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_creator", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_modified", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_modifier", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_owner", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.OWNER", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.TYPE", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.LID", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.DBID", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_title", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_description", Matchers.notNullValue()); + + // This type of assertion is required because of a '.' in the field name + Assert.assertTrue(response.getResponse().body().jsonPath().get("result-set.docs[0].aliases").toString().contains("cm_content.size=cm_content.size")); + Assert.assertTrue(response.getResponse().body().jsonPath().get("result-set.docs[0].aliases").toString().contains("cm_content.mimetype=cm_content.mimetype")); + Assert.assertTrue(response.getResponse().body().jsonPath().get("result-set.docs[0].aliases").toString().contains("cm_content.encoding=cm_content.encoding")); + Assert.assertTrue(response.getResponse().body().jsonPath().get("result-set.docs[0].aliases").toString().contains("cm_content.locale=cm_content.locale")); + + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_lockOwner", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.SITE", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.PARENT", Matchers.notNullValue()); restClient.onResponse().assertThat().body("result-set.docs[0].aliases.PATH", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.PRIMARYPARENT", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.ASPECT", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.QNAME", Matchers.notNullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_content", Matchers.nullValue()); + restClient.onResponse().assertThat().body("result-set.docs[0].aliases.RandomNonExistentField", Matchers.nullValue()); } @Test(groups = { TestGroup.SEARCH, TestGroup.REST_API, TestGroup.INSIGHT_10 }, priority = 15) From d2461300da7149b8edee7b39bb14e91b5604471a Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Tue, 24 Jul 2018 16:34:23 +0100 Subject: [PATCH 35/37] Search-874 Comment added --- .../java/org/alfresco/rest/search/sql/SearchSQLAPITest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java index 6cdedf75e..20c23179e 100644 --- a/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java +++ b/e2e-test/java/org/alfresco/rest/search/sql/SearchSQLAPITest.java @@ -651,6 +651,8 @@ public class SearchSQLAPITest extends AbstractSearchTest restClient.onResponse().assertThat().body("result-set.docs[0].aliases.PRIMARYPARENT", Matchers.notNullValue()); restClient.onResponse().assertThat().body("result-set.docs[0].aliases.ASPECT", Matchers.notNullValue()); restClient.onResponse().assertThat().body("result-set.docs[0].aliases.QNAME", Matchers.notNullValue()); + + // Test that cm_content and any other random field does not appear in the response restClient.onResponse().assertThat().body("result-set.docs[0].aliases.cm_content", Matchers.nullValue()); restClient.onResponse().assertThat().body("result-set.docs[0].aliases.RandomNonExistentField", Matchers.nullValue()); } From d9dcb487c5f5e539d75cdb09f62109e8f01840d3 Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 30 Jul 2018 12:22:16 +0100 Subject: [PATCH 36/37] Search-744 Removed the annotation @Bug, as the related issue is fixed --- e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java index 1922137ef..7e9242f8c 100644 --- a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java +++ b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java @@ -40,7 +40,6 @@ import org.testng.annotations.Test; */ public class ShardInfoTest extends AbstractSearchTest { - @Bug(id="DELENG-1", status=Bug.Status.FIXED) @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}) public void getShardInfoWithAdminAuthority() throws JsonProcessingException, EmptyRestModelCollectionException { @@ -78,7 +77,6 @@ public class ShardInfoTest extends AbstractSearchTest } } - @Bug(id="DELENG-1", status=Bug.Status.FIXED) @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}) public void getShardInfoWithoutAdminAuthority() throws Exception { From ef7528dbfaa930e8672c4007e5d73d353e01805e Mon Sep 17 00:00:00 2001 From: Meenal Bhave Date: Mon, 30 Jul 2018 12:25:37 +0100 Subject: [PATCH 37/37] Revert "Search-744 Removed the annotation @Bug, as the related issue is fixed" This reverts commit 5148303ac4f6aac2e60722b50a285b31e88969c1. --- e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java index 7e9242f8c..1922137ef 100644 --- a/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java +++ b/e2e-test/java/org/alfresco/rest/search/ShardInfoTest.java @@ -40,6 +40,7 @@ import org.testng.annotations.Test; */ public class ShardInfoTest extends AbstractSearchTest { + @Bug(id="DELENG-1", status=Bug.Status.FIXED) @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}) public void getShardInfoWithAdminAuthority() throws JsonProcessingException, EmptyRestModelCollectionException { @@ -77,6 +78,7 @@ public class ShardInfoTest extends AbstractSearchTest } } + @Bug(id="DELENG-1", status=Bug.Status.FIXED) @Test(groups={TestGroup.SEARCH, TestGroup.REST_API, TestGroup.ACS_60n}) public void getShardInfoWithoutAdminAuthority() throws Exception {