blob: c27314b89b9900a4e09fc262fa3b0826f24b0bef [file] [log] [blame]
package org.apache.manifoldcf.agents.output.searchblox.tests;
import com.google.common.collect.Lists;
import junit.framework.TestCase;
import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxDocument;
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxDocument.DocumentAction;
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxDocument.IndexingFormat;
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxException;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Alessandro Benedetti
* 07/03/2015
* mcf-searchblox-connector
*/
public class SearchBloxDocumentTest extends TestCase{
SearchBloxDocument toTest;
RepositoryDocument rd;
public void setUp() throws ManifoldCFException {
Map<String, List<String>> args=initArgs();
String apikey="apikey";
rd=initRepoDocument();
String docURI = "URI";
toTest=new SearchBloxDocument(apikey, docURI,rd,args);
}
@Test
public void testUpdateXmlString() throws SearchBloxException {
String xmlGenerated=toTest.toString(IndexingFormat.XML, DocumentAction.ADD_UPDATE);
System.out.println(xmlGenerated);
String xmlExpected="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<searchblox apikey=\"apikey\"><document colname=\"collection1\">" +
"<uid>URI</uid><title boost=\"1\">I am a nice title</title><content boost=\"2\">I am a nice content in english!</content>" +
"<description boost=\"4\">I am a little tiny description</description><size>100</size><contenttype>html</contenttype>" +
"<meta name=\"meta2\">I am META2!</meta><meta name=\"share_allow\">user3</meta>" +
"<meta name=\"share_allow\">user2</meta><meta name=\"share_allow\">user1</meta>" +
"<meta name=\"meta1\">I am META1!</meta><meta name=\"share_deny\">user4</meta>" +
"<meta name=\"share_deny\">user5</meta><meta name=\"document_deny\">user52</meta>" +
"<meta name=\"document_deny\">user42</meta><meta name=\"document_allow\">user22</meta>" +
"<meta name=\"document_allow\">user12</meta><meta name=\"document_allow\">user33</meta></document></searchblox>";
assertEquals(xmlExpected,xmlGenerated);
}
@Test
public void testUpdateJsonString() throws SearchBloxException {
String jsonGenerated=toTest.toString(IndexingFormat.JSON, DocumentAction.ADD_UPDATE);
String expectedJson="{\"document\":{\"content\":\"I am a nice content in english!\",\"uid\":\"URI\",\"title\":\"I am a nice title\",\"description\":\"I am a little tiny description\",\"contenttype\":\"html\",\"colname\":\"collection1\",\"meta\":{\"meta2\":[\"I am META2!\"],\"meta1\":[\"I am META1!\"],\"share_allow\":[\"user3\",\"user2\",\"user1\"],\"share_deny\":[\"user4\",\"user5\"],\"document_deny\":[\"user52\",\"user42\"],\"document_allow\":[\"user22\",\"user12\",\"user33\"]},\"size\":\"100\"},\"apikey\":\"apikey\"}";
assertEquals(expectedJson,jsonGenerated);
}
@Test
public void testDeleteJsonString() throws SearchBloxException {
String jsonGenerated=toTest.toString(IndexingFormat.JSON, DocumentAction.DELETE);
System.out.println(jsonGenerated);
String xmlExpected="{\"document\":{\"uid\":\"URI\",\"colname\":\"collection1\"},\"apikey\":\"apikey\"}";
assertEquals(xmlExpected,jsonGenerated);
}
@Test
public void testDeleteXmlString() throws SearchBloxException {
String xmlGenerated=toTest.toString(IndexingFormat.XML, DocumentAction.DELETE);
System.out.println(xmlGenerated);
String xmlExpected="<?xml version=\"1.0\" encoding=\"UTF-8\"?><searchblox apikey=\"apikey\"><document colname=\"collection1\" uid=\"URI\"/></searchblox>";
assertEquals(xmlExpected,xmlGenerated);
}
private Map<String, List<String>> initArgs() {
Map<String, List<String>> argMap=new HashMap<String, List<String>>();
argMap.put("collection", Lists.newArrayList("collection1"));
argMap.put("title_boost", Lists.newArrayList("1"));
argMap.put("content_boost", Lists.newArrayList("2"));
argMap.put("keywords_boost", Lists.newArrayList("3"));
argMap.put("description_boost", Lists.newArrayList("4"));
return argMap;
}
private RepositoryDocument initRepoDocument() throws ManifoldCFException {
RepositoryDocument realRepoDoc=new RepositoryDocument();
String binaryContent="I am the binary content of an Amazing Document";
InputStream stream = new ByteArrayInputStream(binaryContent.getBytes(StandardCharsets.UTF_8));
realRepoDoc.addField("title","I am a nice title");
realRepoDoc.addField("content","I am a nice content in english!");
realRepoDoc.addField("description","I am a little tiny description");
realRepoDoc.addField("meta1","I am META1!");
realRepoDoc.addField("meta2","I am META2!");
realRepoDoc.setMimeType("html");
realRepoDoc.setBinary(stream,100);
realRepoDoc.setCreatedDate(new Date(System.currentTimeMillis()));
realRepoDoc.setSecurityACL(RepositoryDocument.SECURITY_TYPE_SHARE,new String[]{"user1","user2","user3"});
realRepoDoc.setSecurityACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT,new String[]{"user12","user22","user33"});
realRepoDoc.setSecurityDenyACL(RepositoryDocument.SECURITY_TYPE_SHARE, new String[]{"user4", "user5"});
realRepoDoc.setSecurityDenyACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT, new String[]{"user42", "user52"});
//allowAttributeName + aclType
return realRepoDoc;
}
}