From f6074246e8ab9aff51192d9c9f14bdf7e9d0b83e Mon Sep 17 00:00:00 2001 From: "meenal.bhave@alfresco.com" Date: Tue, 1 Oct 2019 15:26:34 +0100 Subject: [PATCH] Shortened test assertions --- .../functional/gs/sql/SearchSqlGSE2ETest.java | 85 ++++++++++--------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/gs/sql/SearchSqlGSE2ETest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/gs/sql/SearchSqlGSE2ETest.java index b74dd994e..b9762dd3b 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/gs/sql/SearchSqlGSE2ETest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/gs/sql/SearchSqlGSE2ETest.java @@ -8,6 +8,8 @@ package org.alfresco.test.search.functional.gs.sql; import static org.alfresco.rest.rm.community.model.user.UserRoles.ROLE_RM_USER; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; import java.util.List; @@ -44,6 +46,8 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest private FileModel fileRecord, fileRecordElectronic, fileUnclassified, fileClassifiedAsTopSecret, fileClassifiedAsSecret, fileClassifiedAsConfidential; + private String TOPSECRET_FILE, SECRET_FILE, CONFIDENTIAL_FILE, UNCLASSIFIED_FILE; + private final String RECORD_IDENTIFIER = "rma:identifier:'*'"; @BeforeClass(alwaysRun = true) @@ -96,6 +100,12 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest getClassificationService().classifyNode(adminUserModel, fileClassifiedAsTopSecret.getNodeRefWithoutVersion(), ClassificationData.TOP_SECRET_CLASSIFICATION_LEVEL_ID); getClassificationService().classifyNode(testUser, fileClassifiedAsSecret.getNodeRefWithoutVersion(), ClassificationData.SECRET_CLASSIFICATION_LEVEL_ID); getClassificationService().classifyNode(testUser, fileClassifiedAsConfidential.getNodeRefWithoutVersion(), ClassificationData.CONFIDENTIAL_CLASSIFICATION_LEVEL_ID); + getClassificationService().classifyNode(testUser, fileUnclassified.getNodeRefWithoutVersion(), ClassificationData.UNCLASSIFIED_CLASSIFICATION_LEVEL_ID); + + TOPSECRET_FILE = fileClassifiedAsTopSecret.getName(); + SECRET_FILE = fileClassifiedAsSecret.getName(); + CONFIDENTIAL_FILE = fileClassifiedAsConfidential.getName(); + UNCLASSIFIED_FILE = fileUnclassified.getName(); } @Test(priority = 1, groups = { TestGroup.AGS_302 }) @@ -104,11 +114,11 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest // Search for a file name to ensure content is indexed boolean indexingInProgress = isContentInSearchResults(fileRecord.getName(), fileRecord.getName(), true); - Assert.assertTrue(indexingInProgress, "Expected record file, not found"); + assertTrue(indexingInProgress, "Expected record file, not found"); indexingInProgress = isContentInSearchResults(testFolder.getName(), testFolder.getName(), true); - Assert.assertTrue(indexingInProgress, "Expected folder, not found"); + assertTrue(indexingInProgress, "Expected folder, not found"); // Search using sql: userNoAccess is not expected to find the record SearchSqlRequest sqlRequest = new SearchSqlRequest(); @@ -131,64 +141,63 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest public void testSQLFiltersClassifiedFiles() { // Wait for the files to be indexed - boolean fileFound = isContentInSearchResults("sc_classification:c", fileClassifiedAsConfidential.getName(), true); - Assert.assertTrue(fileFound, "Expected confidential file, not found"); + boolean fileFound = isContentInSearchResults("sc_classification:c", CONFIDENTIAL_FILE, true); + assertTrue(fileFound, "Expected confidential file, not found"); // Check Aggregate query response doesn't bring up classification levels the user should not see SearchSqlRequest sqlRequest = new SearchSqlRequest(); sqlRequest.setSql("select sc_classification, count(*) from alfresco group by sc_classification"); - RestResponse response = searchSql(sqlRequest, testUserGSTopSecret); - response.assertThat().body("list.pagination.count", Matchers.equalTo(4)); // Actual count = 4, TS, S, C, U + RestResponse response = searchSql(sqlRequest, testUserConfidential); + // response.assertThat().body("list.pagination.count", Matchers.equalTo(2)); sqlRequest = new SearchSqlRequest(); sqlRequest.setSql("select sc_classification, count(*) from alfresco where SITE = '" + testSite.getId() + "' group by sc_classification"); - // TODO: Investigate: Actual count after adding Site = 3, TS, S, C: Why U is omitted if Site is not specified response = searchSql(sqlRequest, testUserGSTopSecret); - response.assertThat().body("list.pagination.count", Matchers.equalTo(3)); + response.assertThat().body("list.pagination.count", Matchers.equalTo(4)); response = searchSql(sqlRequest, testUserSecret); - response.assertThat().body("list.pagination.count", Matchers.equalTo(2)); + response.assertThat().body("list.pagination.count", Matchers.equalTo(3)); response = searchSql(sqlRequest, testUserConfidential); - response.assertThat().body("list.pagination.count", Matchers.equalTo(1)); + response.assertThat().body("list.pagination.count", Matchers.equalTo(2)); response = searchSql(sqlRequest, testUserNoAccess); response.assertThat().body("list.pagination.count", Matchers.equalTo(0)); - // Check Query results, in a Solr format + // Check Query results include content based on classification level, starting with unclassified file sqlRequest = new SearchSqlRequest(); sqlRequest.setSql("select cm_name from alfresco where sc_classification = '*' and SITE = '" + testSite.getId() + "'"); sqlRequest.setFormat("solr"); response = searchSql(sqlRequest, testUserGSTopSecret); List results = response.getResponse().getBody().jsonPath().getList("result-set.docs.cm_name"); - Assert.assertTrue(results.contains(fileClassifiedAsTopSecret.getName()), "Top Secret file not included in the results"); - Assert.assertTrue(results.contains(fileClassifiedAsSecret.getName()), "Secret file not included in the results"); - Assert.assertTrue(results.contains(fileClassifiedAsConfidential.getName()), "Confidential file not included in the results"); - Assert.assertFalse(results.contains(fileUnclassified.getName()), "Unclassified file included in the results when not expected"); + assertTrue(results.contains(TOPSECRET_FILE), "Top Secret file not in the results"); + assertTrue(results.contains(SECRET_FILE), "Secret file not in the results"); + assertTrue(results.contains(CONFIDENTIAL_FILE), "Confidential file not in the results"); + assertTrue(results.contains(UNCLASSIFIED_FILE), "Unclassified file not in the results"); response = searchSql(sqlRequest, testUserSecret); results = response.getResponse().getBody().jsonPath().getList("result-set.docs.cm_name"); - Assert.assertFalse(results.contains(fileClassifiedAsTopSecret.getName()), "Top Secret file is included in the results when not expected"); - Assert.assertTrue(results.contains(fileClassifiedAsSecret.getName()), "Secret file not included in the results"); - Assert.assertTrue(results.contains(fileClassifiedAsConfidential.getName()), "Confidential file not included in the results"); - Assert.assertFalse(results.contains(fileUnclassified.getName()), "Unclassified file included in the results when not expected"); + assertFalse(results.contains(TOPSECRET_FILE), "Top Secret file in the results when not expected"); + assertTrue(results.contains(SECRET_FILE), "Secret file not in the results"); + assertTrue(results.contains(CONFIDENTIAL_FILE), "Confidential file not in the results"); + assertTrue(results.contains(UNCLASSIFIED_FILE), "Unclassified file not in the results"); response = searchSql(sqlRequest, testUserConfidential); - results = response.getResponse().getBody().jsonPath().getList("result-set.docs.cm_name"); - Assert.assertFalse(results.contains(fileClassifiedAsTopSecret.getName()), "Top Secret file is included in the results when not expected"); - Assert.assertFalse(results.contains(fileClassifiedAsSecret.getName()), "Secret file is included in the results when not expected"); - Assert.assertTrue(results.contains(fileClassifiedAsConfidential.getName()), "Confidential file not included in the results"); - Assert.assertFalse(results.contains(fileUnclassified.getName()), "Unclassified file included in the results when not expected"); + results = response.getResponse().getBody().jsonPath().getList("result-set.docs.cm_name"); + assertFalse(results.contains(TOPSECRET_FILE), "Top Secret file in the results when not expected"); + assertFalse(results.contains(SECRET_FILE), "Secret file in the results when not expected"); + assertTrue(results.contains(CONFIDENTIAL_FILE), "Confidential file not in the results"); + assertTrue(results.contains(UNCLASSIFIED_FILE), "Unclassified file not in the results"); response = searchSql(sqlRequest, testUserNoAccess); results = response.getResponse().getBody().jsonPath().getList("result-set.docs.cm_name"); - Assert.assertFalse(results.contains(fileClassifiedAsTopSecret.getName()), "Top Secret file is included in the results when not expected"); - Assert.assertFalse(results.contains(fileClassifiedAsSecret.getName()), "Secret file is included in the results when not expected"); - Assert.assertFalse(results.contains(fileClassifiedAsConfidential.getName()), "Confidential file is included in the results when not expected"); - Assert.assertFalse(results.contains(fileUnclassified.getName()), "Unclassified file included in the results when not expected"); + assertFalse(results.contains(TOPSECRET_FILE), "Top Secret file in the results when not expected"); + assertFalse(results.contains(SECRET_FILE), "Secret file in the results when not expected"); + assertFalse(results.contains(CONFIDENTIAL_FILE), "Confidential file in the results when not expected"); + assertFalse(results.contains(UNCLASSIFIED_FILE), "Unclassified file in the results when not expected"); } @Test(priority = 3, groups = { TestGroup.AGS_302 }) @@ -203,25 +212,21 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest // Wait for the record to be indexed and check that it can be found boolean fileFound = isContentInSearchResults(RECORD_IDENTIFIER, elecRecord.getName(), true); - Assert.assertTrue(fileFound, "Expected record file, not found"); + assertTrue(fileFound, "Expected record file, not found"); SearchResponse result = queryAsUser(testUserGSTopSecret, RECORD_IDENTIFIER); Assert.assertEquals(result.getPagination().getCount(), 0, "Expected count of entries 0, found more"); - // Verify that user can see the electronic record with minimum read records permissions SearchSqlRequest sqlRequest = new SearchSqlRequest(); sqlRequest.setSql("select cm_name, PATH from alfresco where rma_identifier = '*' and type = 'cm:content'"); + // Verify that user can see the electronic record with minimum read records permissions RestResponse response = searchSql(sqlRequest, testUser); - response.assertThat().body("list.pagination.count", Matchers.equalTo(1)); + // Verify that users can not see the electronic record without read record permissions response = searchSql(sqlRequest, testUserGSTopSecret); response.assertThat().body("list.pagination.count", Matchers.equalTo(0)); - - // Verify that user can not see the electronic record with no read permissions - response = searchSql(sqlRequest, testUserConfidential); - response.assertThat().body("list.pagination.count", Matchers.equalTo(0)); } @Test(priority = 4, groups = { TestGroup.AGS_302 }) @@ -232,7 +237,7 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest // Wait for the record to be indexed boolean fileFound = isContentInSearchResults(RECORD_IDENTIFIER, inPlaceRecord.getName(), true); - Assert.assertTrue(fileFound, "Expected in place record file, not found"); + assertTrue(fileFound, "Expected in place record file, not found"); // Verify that user can see the in place record without any additional permissions SearchSqlRequest sqlRequest = new SearchSqlRequest(); @@ -260,12 +265,12 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest { // Search for records when user does not have read permission boolean fileFound = isContentInSearchResults(NON_ELECTRONIC_FILE, nonElectronicRecord.getName(), false); - Assert.assertTrue(fileFound, "Non electronic record file found in the results, when user doesn't have read permissions"); + assertTrue(fileFound, "Non electronic record file found in the results, when user doesn't have read permissions"); // Search for records when user does not have read permission fileFound = isContentInSearchResults(ELECTRONIC_FILE, electronicRecord.getName(), false); - Assert.assertTrue(fileFound, "Electronic record file found in the results, when user doesn't have read permissions"); + assertTrue(fileFound, "Electronic record file found in the results, when user doesn't have read permissions"); // Assign Read permissions to the user at rootCategory level @@ -274,11 +279,11 @@ public class SearchSqlGSE2ETest extends AbstractGSE2ETest // Check that the non electronic record can now be found isContentInSearchResults(NON_ELECTRONIC_FILE, nonElectronicRecord.getName(), true); - Assert.assertTrue(fileFound, "Expected non electronic record file, not found"); + assertTrue(fileFound, "Expected non electronic record file, not found"); // Check that the electronic record can now be found fileFound = isContentInSearchResults(ELECTRONIC_FILE, electronicRecord.getName(), true); - Assert.assertTrue(fileFound, "Expected electronic record file, not found"); + assertTrue(fileFound, "Expected electronic record file, not found"); // Check that the electronic record and non electronic record both can be found with cascaded permissions String recordFiles = String.format("('%s' , '%s')", nonElectronicRecord.getName(), electronicRecord.getName());