mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)
90946: Merged V4.2-BUG-FIX (4.2.5) to HEAD-BUG-FIX (5.0/Cloud) 90874: Merged DEV (4.2.4) to V4.2-BUG-FIX (4.2.5) 90590: MNT-12281 : Cannot set CSV delimiter in DeclarativeSpreadsheetWebScript Added CSV delimiter as a request parameter to the DeclarativeSpreadsheetWebScript implementations Added JUnit test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@94749 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2014 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.repo.web.scripts;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.TestWebScriptServer;
|
||||
import org.springframework.extensions.webscripts.TestWebScriptServer.Response;
|
||||
|
||||
/**
|
||||
* Test for DeclarativeSpreadsheetWebScript class
|
||||
*
|
||||
* @author alex.mukha
|
||||
* @since 4.2.4
|
||||
*/
|
||||
public class DeclarativeSpreadsheetWebScriptTest extends BaseWebScriptTest
|
||||
{
|
||||
private String admin;
|
||||
private static String URL = "/api/test/getcsv";
|
||||
protected static final QName[] COLUMNS = new QName[]
|
||||
{
|
||||
ContentModel.PROP_USERNAME,
|
||||
ContentModel.PROP_FIRSTNAME,
|
||||
ContentModel.PROP_LASTNAME
|
||||
};
|
||||
|
||||
/** The context locations, in reverse priority order. */
|
||||
private static final String CONFIG_LOCATION = "classpath:alfresco/declarative-spreadsheet-webscript-application-context.xml";
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception
|
||||
{
|
||||
super.setCustomContext(CONFIG_LOCATION);
|
||||
super.setUp();
|
||||
getServer().getApplicationContext();
|
||||
admin = AuthenticationUtil.getAdminUserName();
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(admin);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tearDown() throws Exception
|
||||
{
|
||||
AuthenticationUtil.clearCurrentSecurityContext();
|
||||
};
|
||||
|
||||
public void testCSVStrategy() throws Exception
|
||||
{
|
||||
TestWebScriptServer.GetRequest req = new TestWebScriptServer.GetRequest(URL);
|
||||
Response response = sendRequest(req, Status.STATUS_OK, admin);
|
||||
// default excel, delimiter is a comma ","
|
||||
assertEquals("The response CSV body was not correct.", "User Name,First Name,Last Name\n", response.getContentAsString());
|
||||
|
||||
req = new TestWebScriptServer.GetRequest(URL + "?" + DeclarativeSpreadsheetWebScript.PARAM_REQ_DELIMITER + "=%2C");
|
||||
response = sendRequest(req, Status.STATUS_OK, admin);
|
||||
// delimiter is a comma ","
|
||||
assertEquals("The response CSV body was not correct.", "User Name,First Name,Last Name\n", response.getContentAsString());
|
||||
|
||||
req = new TestWebScriptServer.GetRequest(URL + "?" + DeclarativeSpreadsheetWebScript.PARAM_REQ_DELIMITER + "=%09");
|
||||
response = sendRequest(req, Status.STATUS_OK, admin);
|
||||
// delimiter is a tab space "\t"
|
||||
assertEquals("The response CSV body was not correct.", "User Name\tFirst Name\tLast Name\n", response.getContentAsString());
|
||||
|
||||
req = new TestWebScriptServer.GetRequest(URL + "?" + DeclarativeSpreadsheetWebScript.PARAM_REQ_DELIMITER + "=%3B");
|
||||
response = sendRequest(req, Status.STATUS_OK, admin);
|
||||
// delimiter is a semicolon ";"
|
||||
assertEquals("The response CSV body was not correct.", "User Name;First Name;Last Name\n", response.getContentAsString());
|
||||
}
|
||||
}
|
@@ -0,0 +1,66 @@
|
||||
package org.alfresco.repo.web.scripts;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.Pair;
|
||||
import org.apache.commons.csv.CSVPrinter;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
|
||||
/**
|
||||
* Test class for DeclarativeSpreadsheetWebScriptTest class
|
||||
* @author alex.mukha
|
||||
* @since 4.2.4
|
||||
*/
|
||||
public class TestDeclarativeSpreadsheetWebScriptGet extends DeclarativeSpreadsheetWebScript
|
||||
{
|
||||
@Override
|
||||
protected Object identifyResource(String format, WebScriptRequest req)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean allowHtmlFallback()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Pair<QName, Boolean>> buildPropertiesForHeader(Object resource, String format, WebScriptRequest req)
|
||||
{
|
||||
List<Pair<QName,Boolean>> properties =
|
||||
new ArrayList<Pair<QName,Boolean>>(DeclarativeSpreadsheetWebScriptTest.COLUMNS.length);
|
||||
boolean required = true;
|
||||
for(QName qname : DeclarativeSpreadsheetWebScriptTest.COLUMNS)
|
||||
{
|
||||
Pair<QName,Boolean> p = null;
|
||||
if(qname != null)
|
||||
{
|
||||
p = new Pair<QName, Boolean>(qname, required);
|
||||
}
|
||||
else
|
||||
{
|
||||
required = false;
|
||||
}
|
||||
properties.add(p);
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void populateBody(Object resource, Workbook workbook, Sheet sheet, List<QName> properties) throws IOException
|
||||
{
|
||||
// Set the sheet name
|
||||
workbook.setSheetName(0, "test");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void populateBody(Object resource, CSVPrinter csv, List<QName> properties) throws IOException
|
||||
{
|
||||
}
|
||||
}
|
@@ -101,6 +101,7 @@ public class WebScriptTestSuite extends TestSuite
|
||||
suite.addTestSuite( FacetRestApiTest.class );
|
||||
suite.addTestSuite( CommentsApiTest.class );
|
||||
suite.addTestSuite( FolderTemplateTest.class );
|
||||
suite.addTestSuite( DeclarativeSpreadsheetWebScriptTest.class );
|
||||
|
||||
// This uses a slightly different context
|
||||
// As such, we can't run it in the same suite as the others,
|
||||
|
Reference in New Issue
Block a user