mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-6310: sc:securityMarksSearch is not properly updated when editing the content classification (affects the results from RM search results): automation tests
This commit is contained in:
@@ -121,6 +121,37 @@ public abstract class BaseAPI
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to extract the property value for the given nodeRef and property name
|
||||||
|
*
|
||||||
|
* @param result
|
||||||
|
* @param nodeRef
|
||||||
|
* @param propertyName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected String getPropertyValue(JSONObject result, String nodeRef, String propertyName)
|
||||||
|
{
|
||||||
|
String propertyValue = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
JSONArray items = result.getJSONArray("items");
|
||||||
|
for (int i = 0; i < items.length(); i++)
|
||||||
|
{
|
||||||
|
JSONObject item = items.getJSONObject(i);
|
||||||
|
if(nodeRef.equals(item.getString("nodeRef")))
|
||||||
|
{
|
||||||
|
propertyValue = item.getJSONObject("properties").getString(propertyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (JSONException error)
|
||||||
|
{
|
||||||
|
throw new RuntimeException("Unable to parse result", error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return propertyValue;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to extract property values from request result and put them in map as a list that corresponds to a unique property value.
|
* Helper method to extract property values from request result and put them in map as a list that corresponds to a unique property value.
|
||||||
*
|
*
|
||||||
|
@@ -63,7 +63,7 @@ public class SearchAPI extends BaseAPI
|
|||||||
/** RM search URL template */
|
/** RM search URL template */
|
||||||
private static final String RM_SEARCH_ENDPOINT = "{0}alfresco/s/slingshot/rmsearch/{1}?{2}";
|
private static final String RM_SEARCH_ENDPOINT = "{0}alfresco/s/slingshot/rmsearch/{1}?{2}";
|
||||||
|
|
||||||
/** RM document search filters */
|
/** RM all nodes search filters */
|
||||||
private static final String RM_DEFAULT_NODES_FILTERS =
|
private static final String RM_DEFAULT_NODES_FILTERS =
|
||||||
"records/true,undeclared/true,vital/false,folders/{0},categories/{1},frozen/false,cutoff/false";
|
"records/true,undeclared/true,vital/false,folders/{0},categories/{1},frozen/false,cutoff/false";
|
||||||
|
|
||||||
@@ -123,23 +123,46 @@ public class SearchAPI extends BaseAPI
|
|||||||
* Search as a user for nodes on site "rm" matching query, using SearchAPI.RM_DEFAULT_RECORD_FILTERS and sorted
|
* Search as a user for nodes on site "rm" matching query, using SearchAPI.RM_DEFAULT_RECORD_FILTERS and sorted
|
||||||
* by sortby
|
* by sortby
|
||||||
* <br>
|
* <br>
|
||||||
* If more fine-grained control of search parameters is required, use rmSearch() directly.
|
*
|
||||||
* @param username
|
* @param username
|
||||||
* @param password
|
* @param password
|
||||||
* @param query
|
* @param query
|
||||||
* @param sortby
|
* @param sortby
|
||||||
* @return list of record names
|
* @return list of node names
|
||||||
*/
|
*/
|
||||||
public List<String> searchForRecordsAsUser(
|
|
||||||
String username, String password,
|
public List<String> searchForNodeNamesAsUser(String username, String password, String query, String sortby,
|
||||||
String query, String sortby,
|
boolean includeCategories, boolean includeFolders)
|
||||||
boolean includeCategories, boolean includeFolders)
|
|
||||||
{
|
{
|
||||||
String searchFilterParamaters = MessageFormat.format(RM_DEFAULT_NODES_FILTERS, Boolean.toString(includeFolders), Boolean.toString(includeCategories));
|
String searchFilterParamaters = MessageFormat.format(RM_DEFAULT_NODES_FILTERS, Boolean.toString(includeFolders),
|
||||||
|
Boolean.toString(includeCategories));
|
||||||
|
|
||||||
return getItemNames(rmSearch(username, password, "rm", query, searchFilterParamaters, sortby));
|
return getItemNames(rmSearch(username, password, "rm", query, searchFilterParamaters, sortby));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
|
* Search as a user for nodes on site "rm" matching query, using SearchAPI.RM_DEFAULT_RECORD_FILTERS and sorted
|
||||||
|
* by sortby and returns the property value for the given nodeRef and property name
|
||||||
|
*
|
||||||
|
* @param username
|
||||||
|
* @param password
|
||||||
|
* @param query
|
||||||
|
* @param sortby
|
||||||
|
* @param includeCategories
|
||||||
|
* @param includeFolders
|
||||||
|
* @return list of node properties
|
||||||
|
*/
|
||||||
|
public String searchForNodePropertyAsUser(String username, String password, String nodeRef, String propertyName, String query, String sortby,
|
||||||
|
boolean includeCategories, boolean includeFolders)
|
||||||
|
{
|
||||||
|
String searchFilterParamaters = MessageFormat.format(RM_DEFAULT_NODES_FILTERS, Boolean.toString(includeFolders),
|
||||||
|
Boolean.toString(includeCategories));
|
||||||
|
return getItemProperty(rmSearch(username, password, "rm", query, searchFilterParamaters, sortby), nodeRef, propertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
* Generic faceted search.
|
* Generic faceted search.
|
||||||
* @param username
|
* @param username
|
||||||
* @param password
|
* @param password
|
||||||
@@ -208,12 +231,35 @@ public class SearchAPI extends BaseAPI
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to extract list of names from search result.
|
* Helper method to extract list of names from search result.
|
||||||
|
*
|
||||||
* @param searchResult
|
* @param searchResult
|
||||||
* @return list of document or record names in search result
|
* @return list of document or record names in search result
|
||||||
|
* @throws FileNotFoundException
|
||||||
|
* @throws JsonSyntaxException
|
||||||
|
* @throws JsonIOException
|
||||||
* @throws RuntimeException for malformed search response
|
* @throws RuntimeException for malformed search response
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* Helper method to extract list of names from search result.
|
||||||
|
*
|
||||||
|
* @param searchResult
|
||||||
|
* @param getProperties
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private List<String> getItemNames(JSONObject searchResult)
|
private List<String> getItemNames(JSONObject searchResult)
|
||||||
{
|
{
|
||||||
return getPropertyValues(searchResult, "name");
|
return getPropertyValues(searchResult, "name");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to extract list of property values from search result for the given nodeRef.
|
||||||
|
*
|
||||||
|
* @param searchResult
|
||||||
|
* @param getProperties
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String getItemProperty(JSONObject searchResult, String nodeRef, String propertyName)
|
||||||
|
{
|
||||||
|
return getPropertyValue(searchResult, nodeRef, propertyName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -591,6 +591,17 @@ public class BaseRMRestTest extends RestTest
|
|||||||
RecordFolderAPI recordFolderAPI = restAPIFactory.getRecordFolderAPI();
|
RecordFolderAPI recordFolderAPI = restAPIFactory.getRecordFolderAPI();
|
||||||
recordFolderAPI.deleteRecordFolder(recordFolderId);
|
recordFolderAPI.deleteRecordFolder(recordFolderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a record
|
||||||
|
*
|
||||||
|
* @param recordId the id of the record to delete
|
||||||
|
*/
|
||||||
|
public void deleteRecord(String recordId)
|
||||||
|
{
|
||||||
|
RecordsAPI recordsAPI = restAPIFactory.getRecordsAPI();
|
||||||
|
recordsAPI.deleteRecord(recordId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a record category
|
* Delete a record category
|
||||||
@@ -670,13 +681,15 @@ public class BaseRMRestTest extends RestTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns records search results for the given search term
|
* Returns the list of node names returned by search results for the given search term
|
||||||
*
|
*
|
||||||
* @param user
|
* @param user
|
||||||
* @param term
|
* @param term
|
||||||
* @param sortby
|
* @param sortby
|
||||||
|
* @param includeFolders
|
||||||
|
* @param includeCategories
|
||||||
* @param expectedResults
|
* @param expectedResults
|
||||||
* @return
|
* @return List<String>
|
||||||
*/
|
*/
|
||||||
public List<String> searchForRMContentAsUser(UserModel user, String term, String sortby, boolean includeFolders,
|
public List<String> searchForRMContentAsUser(UserModel user, String term, String sortby, boolean includeFolders,
|
||||||
boolean includeCategories, List<String> expectedResults)
|
boolean includeCategories, List<String> expectedResults)
|
||||||
@@ -697,8 +710,9 @@ public class BaseRMRestTest extends RestTest
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
results = searchApi.searchForRecordsAsUser(user.getUsername(), user.getPassword(), term, sortby,
|
|
||||||
includeFolders, includeCategories);
|
results = searchApi.searchForNodeNamesAsUser(user.getUsername(), user.getPassword(), term, sortby,
|
||||||
|
includeFolders, includeCategories);
|
||||||
if (!results.isEmpty() && results.containsAll(expectedResults))
|
if (!results.isEmpty() && results.containsAll(expectedResults))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
@@ -713,6 +727,54 @@ public class BaseRMRestTest extends RestTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the property value for the given property name and nodeRef of the search results
|
||||||
|
*
|
||||||
|
* @param user
|
||||||
|
* @param term
|
||||||
|
* @param nodeRef
|
||||||
|
* @param propertyName
|
||||||
|
* @param sortby
|
||||||
|
* @param includeFolders
|
||||||
|
* @param includeCategories
|
||||||
|
* @param expectedResults
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String searchForRMContentAsUser(UserModel user, String term, String nodeRef, String propertyName,
|
||||||
|
String sortby, boolean includeFolders, boolean includeCategories, String expectedResults)
|
||||||
|
{
|
||||||
|
String result = "";
|
||||||
|
// wait for solr indexing
|
||||||
|
int counter = 0;
|
||||||
|
int waitInMilliSeconds = 6000;
|
||||||
|
while (counter < 3)
|
||||||
|
{
|
||||||
|
synchronized (this)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.wait(waitInMilliSeconds);
|
||||||
|
}
|
||||||
|
catch (InterruptedException e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = searchApi.searchForNodePropertyAsUser(user.getUsername(), user.getPassword(), nodeRef,
|
||||||
|
propertyName, term, sortby, includeFolders, includeCategories);
|
||||||
|
if (!result.isEmpty() && result.contains(expectedResults))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
// double wait time to not overdo solr search
|
||||||
|
waitInMilliSeconds = (waitInMilliSeconds * 2);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to return site document library content model
|
* Helper method to return site document library content model
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user