RM-6310: sc:securityMarksSearch is not properly updated when editing the content classification (affects the results from RM search results): automation test

This commit is contained in:
jcule
2018-05-25 21:46:19 +01:00
parent 4c4ef8dc3b
commit 986c1b8fea
3 changed files with 127 additions and 24 deletions

View File

@@ -121,6 +121,37 @@ public abstract class BaseAPI
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 propertValue = "";
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")))
{
propertValue = item.getJSONObject("properties").getString(propertyName);
}
}
}
catch (JSONException error)
{
throw new RuntimeException("Unable to parse result", error);
}
return propertValue;
}
/**
* Helper method to extract property values from request result and put them in map as a list that corresponds to a unique property value.
*

View File

@@ -123,42 +123,41 @@ public class SearchAPI extends BaseAPI
* Search as a user for nodes on site "rm" matching query, using SearchAPI.RM_DEFAULT_RECORD_FILTERS and sorted
* by sortby
* <br>
* If more fine-grained control of search parameters is required, use rmSearch() directly.
*
* @param username
* @param password
* @param query
* @param sortby
* @return list of record names
* @return list of node names
*/
public List<String> searchForRecordsAsUser(
String username, String password,
String query, String sortby,
boolean includeCategories, boolean includeFolders)
public List<String> searchForNodeNamesAsUser(String username, String password, String query, String sortby,
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));
}
/**
* Search as a user for content on site "rm" matching query, using SearchAPI.RM_DEFAULT_NODES_FILTERS and sorted
* by sortby
* <br>
* If more fine-grained control of search parameters is required, use rmSearch() directly.
* 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
* @return list of record names
* @param includeCategories
* @param includeFolders
* @return list of node properties
*/
public List<String> searchForRmContentAsUser(
String username,
String password,
String query,
String sortby)
public String searchForNodePropertyAsUser(String username, String password, String nodeRef, String propertyName, String query, String sortby,
boolean includeCategories, boolean includeFolders)
{
return getItemNames(rmSearch(username, password, "rm", query, RM_DEFAULT_NODES_FILTERS, sortby));
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.
* @param username
@@ -228,12 +227,35 @@ public class SearchAPI extends BaseAPI
/**
* Helper method to extract list of names from search result.
*
* @param searchResult
* @return list of document or record names in search result
* @throws FileNotFoundException
* @throws JsonSyntaxException
* @throws JsonIOException
* @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)
{
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);
}
}