Skip to content
Snippets Groups Projects
Commit cadbae98 authored by izabel's avatar izabel
Browse files

LMS-417 Show Group / Project / Experiment / Sample in Download HTML page

SVN: 6022
parent d174178c
No related branches found
No related tags found
No related merge requests found
......@@ -59,9 +59,9 @@ public class DatasetDownloadServlet extends HttpServlet
static final String DATA_SET_KEY = "data-set";
static final String DATASET_CODE_KEY = "dataSetCode";
static final String SESSION_ID_KEY = "sessionID";
private static final long serialVersionUID = 1L;
protected static final Logger operationLog =
......@@ -69,7 +69,7 @@ public class DatasetDownloadServlet extends HttpServlet
protected static final Logger notificationLog =
LogFactory.getLogger(LogCategory.NOTIFY, DatasetDownloadServlet.class);
private static final Comparator<File> FILE_COMPARATOR = new Comparator<File>()
{
public int compare(File file1, File file2)
......@@ -84,7 +84,7 @@ public class DatasetDownloadServlet extends HttpServlet
};
private ApplicationContext applicationContext;
public DatasetDownloadServlet()
{
}
......@@ -93,7 +93,7 @@ public class DatasetDownloadServlet extends HttpServlet
{
this.applicationContext = applicationContext;
}
@Override
public final void init(final ServletConfig servletConfig) throws ServletException
{
......@@ -135,16 +135,16 @@ public class DatasetDownloadServlet extends HttpServlet
dataSetCode = pathInfo.substring(0, indexOfFirstSeparator);
pathInfo = pathInfo.substring(indexOfFirstSeparator + 1);
}
obtainDataSetFromServer(dataSetCode, request);
HttpSession session = request.getSession(false);
if (session == null)
{
printSessionExpired(response);
} else
{
ExternalData dataSet = tryToGetDataSet(session, dataSetCode);
if (dataSet == null)
{
......@@ -154,7 +154,7 @@ public class DatasetDownloadServlet extends HttpServlet
RenderingContext context = new RenderingContext(rootDir, requestURI, pathInfo);
renderPage(response, dataSet, context);
}
} catch (Exception e)
{
printError(request, response, e);
......@@ -186,7 +186,7 @@ public class DatasetDownloadServlet extends HttpServlet
writer.flush();
writer.close();
}
private void renderPage(HttpServletResponse response, ExternalData dataSet,
RenderingContext renderingContext) throws IOException
{
......@@ -232,8 +232,7 @@ public class DatasetDownloadServlet extends HttpServlet
String name = child.getName();
File rootDir = renderingContext.getRootDir();
String relativePath = FileUtilities.getRelativeFile(rootDir, child);
String normalizedRelativePath =
relativePath.replace('\\', '/');
String normalizedRelativePath = relativePath.replace('\\', '/');
if (child.isDirectory())
{
directoryRenderer.printDirectory(name, normalizedRelativePath);
......@@ -244,7 +243,7 @@ public class DatasetDownloadServlet extends HttpServlet
}
directoryRenderer.printFooter();
writer.flush();
} finally
{
IOUtils.closeQuietly(writer);
......@@ -314,17 +313,16 @@ public class DatasetDownloadServlet extends HttpServlet
if (dataSetRootDirectory.exists() == false)
{
throw new UserFailureException("Data set '" + dataSet.getCode()
+ "' not found in store at '" + dataSetRootDirectory.getAbsolutePath()
+ "'.");
+ "' not found in store at '" + dataSetRootDirectory.getAbsolutePath() + "'.");
}
return dataSetRootDirectory;
}
private void putDataSetToMap(HttpSession session, String dataSetCode, ExternalData dataSet)
{
getDataSets(session).put(dataSetCode, dataSet);
}
private ExternalData tryToGetDataSet(HttpSession session, String dataSetCode)
{
return getDataSets(session).get(dataSetCode);
......
......@@ -25,17 +25,21 @@ import org.apache.commons.lang.StringUtils;
import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
import ch.systemsx.cisd.common.utilities.Template;
import ch.systemsx.cisd.lims.base.Experiment;
import ch.systemsx.cisd.lims.base.ExternalData;
import ch.systemsx.cisd.lims.base.Group;
import ch.systemsx.cisd.lims.base.Procedure;
import ch.systemsx.cisd.lims.base.Project;
/**
*
*
* @author Franz-Josef Elmer
*/
class HTMLDirectoryRenderer implements IDirectoryRenderer
{
private static final DecimalFormat FORMAT_KB = new DecimalFormat("0.0 KB");
private static final DecimalFormat FORMAT_MB = new DecimalFormat("0.0 MB");
private static final DecimalFormat FORMAT_GB = new DecimalFormat("0.0 GB");
private static final int UNIT_KB = 1024;
......@@ -44,9 +48,46 @@ class HTMLDirectoryRenderer implements IDirectoryRenderer
private static final int UNIT_GB = UNIT_MB * UNIT_KB;
private static final Template ROW_TEMPLATE
= new Template("<tr><td><a href='${path}'>${name}</td><td>${size}</td></tr>");
private static final String DATASET_DESCRIPTION =
"${group}/${project}/${experiment}/${sample}/${dataset}";
private static final String DATASET_DOWNLOAD_SERVICE = "Data Set Download Service";
private static final String TITLE =
"<title> " + DATASET_DOWNLOAD_SERVICE + ": " + DATASET_DESCRIPTION + "</title>";
private static final String CSS =
"<style type='text/css'> "
+ "* { margin: 3px; }"
+ "html { height: 100%; }"
+ "body { height: 100%; font-family: verdana, tahoma, helvetica; font-size: 11px; text-align:left; }"
+ "h1 { text-align: center; padding: 1em; color: #1E4E8F;}"
+ ".td_hd { border: 1px solid #FFFFFF; padding 3px; background-color: #DDDDDD; height: 1.5em; }"
+ ".div_hd { background-color: #1E4E8F; color: white; font-weight: bold; padding: 3px; }"
+ "table { border-collapse: collapse; padding: 1em; }"
+ "tr, td { font-family: verdana, tahoma, helvetica; font-size: 11px; }"
+ ".td_file { font-family: verdana, tahoma, helvetica; font-size: 11px; height: 1.5em }"
+ ".wrapper { min-height: 100%; height: auto !important; height: 100%; margin: 0em auto -4em; }"
+ ".footer { height: 4em; text-align: center; }" + "</style>";
private static final Template ROW_TEMPLATE =
new Template(
"<tr><td class='td_file'><a href='${path}'>${name}</td><td>${size}</td></tr>");
private static final Template HEADER_TEMPLATE =
new Template("<html><head>" + TITLE + CSS + "</head>"
+ "<body><div class='wrapper'><h1>" + DATASET_DOWNLOAD_SERVICE + "</h1>"
+ "<div class='div_hd'>Information about data set</div>" + "<table>"
+ "<tr><td class='td_hd'>Group:</td><td>${group}</td></tr>"
+ "<tr><td class='td_hd'>Project:</td><td>${project}</td></tr>"
+ "<tr><td class='td_hd'>Experiment:</td><td>${experiment}</td></tr>"
+ "<tr><td class='td_hd'>Sample:</td><td>${sample}</td></tr>"
+ "<tr><td class='td_hd'>Data Set Code:</td><td>${dataset}</td></tr></table> "
+ "<div class='div_hd'>Files</div>" + "<table> " + "${folder}" + "");
private static final Template FOOTER_TEMPLATE =
new Template("</table> </div> <div class='footer'>${footer} </div> </body></html>");
private PrintWriter writer;
private final String urlPrefix;
......@@ -72,15 +113,32 @@ class HTMLDirectoryRenderer implements IDirectoryRenderer
public void printHeader(ExternalData dataSet)
{
writer.println("<html><body>");
writer.println("<h1>Data Set " + dataSet.getCode() + "</h1>");
String datasetCode = dataSet.getCode();
String sampleCode = dataSet.getSampleCode();
Procedure procedure = dataSet.getProcedure();
Experiment experiment = procedure.getExperiment();
String experimentCode = experiment.getCode();
Project project = experiment.getProject();
String projectCode = project.getCode();
Group group = project.getGroup();
String groupCode = group.getCode();
Template template = HEADER_TEMPLATE.createFreshCopy();
template.bind("group", groupCode);
template.bind("project", projectCode);
template.bind("experiment", experimentCode);
template.bind("sample", sampleCode);
template.bind("dataset", datasetCode);
if (StringUtils.isNotBlank(relativePathOrNull))
{
writer.println("Folder: " + relativePathOrNull);
template.bind("folder", "<tr><td class='td_hd'>Folder:</td><td>" + relativePathOrNull
+ "</td></tr>");
} else
{
template.bind("folder", "");
}
writer.println("<table border='0' cellpadding='5' cellspacing='0'>");
writer.println(template.createText());
}
public void printLinkToParentDirectory(String relativePath)
{
printRow("..", relativePath, "");
......@@ -90,7 +148,7 @@ class HTMLDirectoryRenderer implements IDirectoryRenderer
{
printRow(name, relativePath, "");
}
public void printFile(String name, String relativePath, long size)
{
printRow(name, relativePath, renderFileSize(size));
......@@ -104,7 +162,7 @@ class HTMLDirectoryRenderer implements IDirectoryRenderer
template.bind("size", fileSize);
writer.println(template.createText());
}
private String encodeURL(String url)
{
try
......@@ -115,7 +173,7 @@ class HTMLDirectoryRenderer implements IDirectoryRenderer
throw CheckedExceptionTunnel.wrapIfNecessary(ex);
}
}
private String renderFileSize(long size)
{
if (size < 10 * UNIT_KB)
......@@ -135,7 +193,11 @@ class HTMLDirectoryRenderer implements IDirectoryRenderer
public void printFooter()
{
writer.println("</table></body></html>");
Template template = FOOTER_TEMPLATE.createFreshCopy();
template
.bind("footer",
"Copyright &copy; 2008 ETHZ - <a href='http://www.cisd.systemsx.ethz.ch/'>CISD</a>");
writer.println(template.createText());
}
}
......@@ -21,24 +21,22 @@ import java.io.PrintWriter;
import ch.systemsx.cisd.lims.base.ExternalData;
/**
*
*
* @author Franz-Josef Elmer
*/
public interface IDirectoryRenderer
{
public String getContentType();
public void setWriter(PrintWriter writer);
public void printHeader(ExternalData dataSet);
public void printLinkToParentDirectory(String relativePath);
public void printDirectory(String name, String relativePath);
public void printFile(String name, String relativePath, long size);
public void printFooter();
}
......@@ -45,20 +45,21 @@ import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
import ch.systemsx.cisd.common.logging.BufferedAppender;
import ch.systemsx.cisd.common.utilities.FileUtilities;
import ch.systemsx.cisd.common.utilities.OSUtilities;
import ch.systemsx.cisd.lims.base.Experiment;
import ch.systemsx.cisd.lims.base.ExternalData;
import ch.systemsx.cisd.lims.base.Group;
import ch.systemsx.cisd.lims.base.IDataSetService;
import ch.systemsx.cisd.lims.base.LocatorType;
import ch.systemsx.cisd.lims.base.Procedure;
import ch.systemsx.cisd.lims.base.Project;
/**
*
*
* @author Franz-Josef Elmer
*/
public class DatasetDownloadServletTest
public class DatasetDownloadServletTest
{
private static final String APPLICATION_NAME = "download";
private static final String REQUEST_URI_PREFIX = "/" + APPLICATION_NAME + "/";
private static final String EXPIRATION_MESSAGE =
......@@ -68,35 +69,42 @@ public class DatasetDownloadServletTest
"OPERATION.ch.systemsx.cisd.openbis.datasetdownload.DatasetDownloadServlet";
private static final String LOG_INFO = "INFO " + LOGGER_NAME + " - ";
private static final String LOG_ERROR = "ERROR " + LOGGER_NAME + " - ";
private static final File TEST_FOLDER = new File("targets/unit-test/store");
private static final String EXAMPLE_DATA_SET_FOLDER_NAME = "data set #123";
private static final File EXAMPLE_DATA_SET_FOLDER =
new File(TEST_FOLDER, EXAMPLE_DATA_SET_FOLDER_NAME);
private static final String EXAMPLE_FILE_NAME = "read me @home.txt";
private static final File EXAMPLE_FILE = new File(EXAMPLE_DATA_SET_FOLDER, EXAMPLE_FILE_NAME);
private static final String EXAMPLE_FILE_CONTENT = "Hello world!";
private static final String EXAMPLE_DATA_SET_SUB_FOLDER_NAME = "+ s % ! # @";
private static final String ESCAPED_EXAMPLE_DATA_SET_SUB_FOLDER_NAME =
encode(EXAMPLE_DATA_SET_SUB_FOLDER_NAME);
private static final File EXAMPLE_DATA_SET_SUB_FOLDER =
new File(EXAMPLE_DATA_SET_FOLDER, EXAMPLE_DATA_SET_SUB_FOLDER_NAME);
private static final String EXAMPLE_SESSION_ID = "AV76CF";
private static final String EXAMPLE_DATA_SET_CODE = "1234-1";
private static final String SAMPLE_CODE = "SAMPLE-S";
private static final String EXPERIMENT_CODE = "EPERIMENT-E";
private static final String GROUP_CODE = "GROUP-G";
private static final String PROJECT_CODE = "PROJECT-P";
private static String encode(String url)
{
try
......@@ -107,8 +115,9 @@ public class DatasetDownloadServletTest
throw CheckedExceptionTunnel.wrapIfNecessary(ex);
}
}
private BufferedAppender logRecorder;
private Mockery context;
private HttpServletRequest request;
......@@ -118,7 +127,7 @@ public class DatasetDownloadServletTest
private IDataSetService dataSetService;
private HttpSession httpSession;
@BeforeMethod
public void setUp()
{
......@@ -143,7 +152,7 @@ public class DatasetDownloadServletTest
// Otherwise one do not known which test failed.
context.assertIsSatisfied();
}
@Test
public void testInitialDoGet() throws Exception
{
......@@ -152,24 +161,20 @@ public class DatasetDownloadServletTest
prepareForObtainingDataSetFromServer(externalData);
prepareForGettingDataSetFromSession(externalData, "");
prepareForCreatingHTML(writer);
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals("<html><body>" + OSUtilities.LINE_SEPARATOR + "<h1>Data Set 1234-1</h1>"
+ OSUtilities.LINE_SEPARATOR
+ "<table border=\'0\' cellpadding=\'5\' cellspacing=\'0\'>"
+ OSUtilities.LINE_SEPARATOR + "<tr><td><a href='/download/1234-1/"
+ ESCAPED_EXAMPLE_DATA_SET_SUB_FOLDER_NAME + "'>"
+ EXAMPLE_DATA_SET_SUB_FOLDER_NAME + "</td><td></td></tr>"
+ OSUtilities.LINE_SEPARATOR
+ "<tr><td><a href='/download/1234-1/read+me+%40home.txt'>read me @home.txt</td>"
+ "<td>12 Bytes</td></tr>" + OSUtilities.LINE_SEPARATOR + "</table></body></html>"
+ OSUtilities.LINE_SEPARATOR, writer.toString());
assertEquals(
"<html><head><title> Data Set Download Service: GROUP-G/PROJECT-P/EPERIMENT-E/SAMPLE-S/1234-1</title><style type=\'text/css\'> * { margin: 3px; }html { height: 100%; }body { height: 100%; font-family: verdana, tahoma, helvetica; font-size: 11px; text-align:left; }h1 { text-align: center; padding: 1em; color: #1E4E8F;}.td_hd { border: 1px solid #FFFFFF; padding 3px; background-color: #DDDDDD; height: 1.5em; }.div_hd { background-color: #1E4E8F; color: white; font-weight: bold; padding: 3px; }table { border-collapse: collapse; padding: 1em; }tr, td { font-family: verdana, tahoma, helvetica; font-size: 11px; }.td_file { font-family: verdana, tahoma, helvetica; font-size: 11px; height: 1.5em }.wrapper { min-height: 100%; height: auto !important; height: 100%; margin: 0em auto -4em; }.footer { height: 4em; text-align: center; }</style></head><body><div class=\'wrapper\'><h1>Data Set Download Service</h1><div class=\'div_hd\'>Information about data set</div><table><tr><td class=\'td_hd\'>Group:</td><td>GROUP-G</td></tr><tr><td class=\'td_hd\'>Project:</td><td>PROJECT-P</td></tr><tr><td class=\'td_hd\'>Experiment:</td><td>EPERIMENT-E</td></tr><tr><td class=\'td_hd\'>Sample:</td><td>SAMPLE-S</td></tr><tr><td class=\'td_hd\'>Data Set Code:</td><td>1234-1</td></tr></table> <div class=\'div_hd\'>Files</div><table> \n"
+ "<tr><td class=\'td_file\'><a href=\'/download/1234-1/%2B+s+%25+%21+%23+%40\'>+ s % ! # @</td><td></td></tr>\n"
+ "<tr><td class=\'td_file\'><a href=\'/download/1234-1/read+me+%40home.txt\'>read me @home.txt</td><td>12 Bytes</td></tr>\n"
+ "</table> </div> <div class=\'footer\'>Copyright &copy; 2008 ETHZ - <a href=\'http://www.cisd.systemsx.ethz.ch/\'>CISD</a> </div> </body></html>\n"
+ "", writer.toString());
assertEquals(LOG_INFO + "Data set '1234-1' obtained from openBIS server."
+ OSUtilities.LINE_SEPARATOR + LOG_INFO
+ "For data set '1234-1' show directory <wd>/data set #123",
getNormalizedLogContent());
context.assertIsSatisfied();
}
......@@ -188,7 +193,7 @@ public class DatasetDownloadServletTest
will(returnValue(new PrintWriter(writer)));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
String pageContent = writer.toString();
......@@ -198,11 +203,10 @@ public class DatasetDownloadServletTest
String logContent = logRecorder.getLogContent();
assertEquals("Text snippet >" + snippet + "< not found in following page content: "
+ logContent, true, logContent.indexOf(snippet) > 0);
context.assertIsSatisfied();
}
@Test
public void testDoGetButUnknownDataSetCode() throws Exception
{
......@@ -222,12 +226,12 @@ public class DatasetDownloadServletTest
one(request).getRequestURI();
String codeAndPath = externalData.getCode();
will(returnValue(REQUEST_URI_PREFIX + codeAndPath));
one(response).getWriter();
will(returnValue(new PrintWriter(writer)));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals("<html><body><h1>Error</h1>" + OSUtilities.LINE_SEPARATOR
......@@ -237,10 +241,10 @@ public class DatasetDownloadServletTest
assertEquals(LOG_INFO + "Data set '1234-1' obtained from openBIS server."
+ OSUtilities.LINE_SEPARATOR + LOG_INFO
+ "User failure: Unknown data set '1234-1'.", logContent);
context.assertIsSatisfied();
}
@Test
public void testDoGetSubFolder() throws Exception
{
......@@ -249,22 +253,20 @@ public class DatasetDownloadServletTest
prepareForNotObtainingDataSetFromServer();
prepareForGettingDataSetFromSession(externalData, ESCAPED_EXAMPLE_DATA_SET_SUB_FOLDER_NAME);
prepareForCreatingHTML(writer);
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals("<html><body>" + OSUtilities.LINE_SEPARATOR + "<h1>Data Set 1234-1</h1>"
+ OSUtilities.LINE_SEPARATOR + "Folder: " + EXAMPLE_DATA_SET_SUB_FOLDER_NAME
+ OSUtilities.LINE_SEPARATOR
+ "<table border=\'0\' cellpadding=\'5\' cellspacing=\'0\'>"
+ OSUtilities.LINE_SEPARATOR + "<tr><td><a href='/download/1234-1/'>..</td><td></td></tr>"
+ OSUtilities.LINE_SEPARATOR + "</table></body></html>"
+ OSUtilities.LINE_SEPARATOR, writer.toString());
assertEquals(
"<html><head><title> Data Set Download Service: GROUP-G/PROJECT-P/EPERIMENT-E/SAMPLE-S/1234-1</title><style type=\'text/css\'> * { margin: 3px; }html { height: 100%; }body { height: 100%; font-family: verdana, tahoma, helvetica; font-size: 11px; text-align:left; }h1 { text-align: center; padding: 1em; color: #1E4E8F;}.td_hd { border: 1px solid #FFFFFF; padding 3px; background-color: #DDDDDD; height: 1.5em; }.div_hd { background-color: #1E4E8F; color: white; font-weight: bold; padding: 3px; }table { border-collapse: collapse; padding: 1em; }tr, td { font-family: verdana, tahoma, helvetica; font-size: 11px; }.td_file { font-family: verdana, tahoma, helvetica; font-size: 11px; height: 1.5em }.wrapper { min-height: 100%; height: auto !important; height: 100%; margin: 0em auto -4em; }.footer { height: 4em; text-align: center; }</style></head><body><div class=\'wrapper\'><h1>Data Set Download Service</h1><div class=\'div_hd\'>Information about data set</div><table><tr><td class=\'td_hd\'>Group:</td><td>GROUP-G</td></tr><tr><td class=\'td_hd\'>Project:</td><td>PROJECT-P</td></tr><tr><td class=\'td_hd\'>Experiment:</td><td>EPERIMENT-E</td></tr><tr><td class=\'td_hd\'>Sample:</td><td>SAMPLE-S</td></tr><tr><td class=\'td_hd\'>Data Set Code:</td><td>1234-1</td></tr></table> <div class=\'div_hd\'>Files</div><table> <tr><td class=\'td_hd\'>Folder:</td><td>+ s % ! # @</td></tr>\n"
+ "<tr><td class=\'td_file\'><a href=\'/download/1234-1/\'>..</td><td></td></tr>\n"
+ "</table> </div> <div class=\'footer\'>Copyright &copy; 2008 ETHZ - <a href=\'http://www.cisd.systemsx.ethz.ch/\'>CISD</a> </div> </body></html>\n",
writer.toString());
assertEquals(LOG_INFO + "For data set '1234-1' show directory <wd>/data set #123/"
+ EXAMPLE_DATA_SET_SUB_FOLDER_NAME, getNormalizedLogContent());
context.assertIsSatisfied();
}
@Test
public void testDoGetFile() throws Exception
{
......@@ -289,16 +291,16 @@ public class DatasetDownloadServletTest
}));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals("Hello world!", outputStream.toString());
assertEquals(LOG_INFO + "For data set '1234-1' deliver file "
+ "<wd>/data set #123/read me @home.txt (12 bytes).", getNormalizedLogContent());
context.assertIsSatisfied();
}
@Test
public void testDoGetNonExistingFile() throws Exception
{
......@@ -311,7 +313,7 @@ public class DatasetDownloadServletTest
{
one(request).getRequestURL();
will(returnValue(new StringBuffer("requestURL")));
one(request).getQueryString();
will(returnValue("queryString"));
......@@ -319,7 +321,7 @@ public class DatasetDownloadServletTest
will(returnValue(new PrintWriter(writer)));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals("<html><body><h1>Error</h1>" + OSUtilities.LINE_SEPARATOR
......@@ -329,10 +331,10 @@ public class DatasetDownloadServletTest
assertEquals("The following string does not start as expected: " + logContent, true,
logContent.startsWith(LOG_ERROR
+ "Request requestURL?queryString caused an exception:"));
context.assertIsSatisfied();
}
@Test
public void testDoGetForExpiredSession() throws Exception
{
......@@ -343,7 +345,7 @@ public class DatasetDownloadServletTest
{
one(request).getRequestURI();
will(returnValue(REQUEST_URI_PREFIX + EXAMPLE_DATA_SET_CODE));
one(request).getSession(false);
will(returnValue(null));
......@@ -351,12 +353,12 @@ public class DatasetDownloadServletTest
will(returnValue(new PrintWriter(writer)));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals(EXPIRATION_MESSAGE, writer.toString());
assertEquals("", getNormalizedLogContent());
context.assertIsSatisfied();
}
......@@ -365,22 +367,22 @@ public class DatasetDownloadServletTest
{
final StringWriter writer = new StringWriter();
context.checking(new Expectations()
{
{
one(request).getRequestURI();
will(returnValue("blabla"));
one(request).getRequestURL();
will(returnValue(new StringBuffer("requestURL")));
one(request).getQueryString();
will(returnValue("query"));
one(response).getWriter();
will(returnValue(new PrintWriter(writer)));
}
});
{
one(request).getRequestURI();
will(returnValue("blabla"));
one(request).getRequestURL();
will(returnValue(new StringBuffer("requestURL")));
one(request).getQueryString();
will(returnValue("query"));
one(response).getWriter();
will(returnValue(new PrintWriter(writer)));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals("<html><body><h1>Error</h1>" + OSUtilities.LINE_SEPARATOR
......@@ -389,12 +391,11 @@ public class DatasetDownloadServletTest
writer.toString());
String logContent = getNormalizedLogContent();
assertEquals("The following string does not start as expected: " + logContent, true,
logContent.startsWith(LOG_ERROR
+ "Request requestURL?query caused an exception:"));
logContent.startsWith(LOG_ERROR + "Request requestURL?query caused an exception:"));
context.assertIsSatisfied();
}
@Test
public void testDoGetForPathInfoStartingWithSeparator() throws Exception
{
......@@ -402,28 +403,28 @@ public class DatasetDownloadServletTest
final ExternalData externalData = createExternalData();
prepareForObtainingDataSetFromServer(externalData);
context.checking(new Expectations()
{
{
one(request).getRequestURI();
will(returnValue(REQUEST_URI_PREFIX + EXAMPLE_DATA_SET_CODE));
one(request).getSession(false);
will(returnValue(null));
one(response).getWriter();
will(returnValue(new PrintWriter(writer)));
}
});
{
one(request).getRequestURI();
will(returnValue(REQUEST_URI_PREFIX + EXAMPLE_DATA_SET_CODE));
one(request).getSession(false);
will(returnValue(null));
one(response).getWriter();
will(returnValue(new PrintWriter(writer)));
}
});
DatasetDownloadServlet servlet = createServlet();
servlet.doGet(request, response);
assertEquals(EXPIRATION_MESSAGE, writer.toString());
assertEquals(LOG_INFO + "Data set '1234-1' obtained from openBIS server.",
getNormalizedLogContent());
context.assertIsSatisfied();
}
private void prepareForGettingDataSetFromSession(final ExternalData externalData,
final String path)
{
......@@ -448,7 +449,7 @@ public class DatasetDownloadServletTest
}
});
}
private void prepareForNotObtainingDataSetFromServer()
{
context.checking(new Expectations()
......@@ -473,17 +474,17 @@ public class DatasetDownloadServletTest
one(request).getSession(true);
will(returnValue(httpSession));
one(httpSession).setMaxInactiveInterval(120);
one(httpSession).getAttribute(DatasetDownloadServlet.DATA_SET_KEY);
will(returnValue(null));
one(httpSession).setAttribute(DatasetDownloadServlet.DATA_SET_KEY,
new HashMap<String, ExternalData>());
}
});
}
private void prepareForCreatingHTML(final StringWriter writer) throws IOException
{
context.checking(new Expectations()
......@@ -491,7 +492,7 @@ public class DatasetDownloadServletTest
{
one(response).getWriter();
will(returnValue(new PrintWriter(writer)));
one(response).setContentType("text/html");
}
});
......@@ -499,13 +500,25 @@ public class DatasetDownloadServletTest
private ExternalData createExternalData()
{
Group group = new Group();
group.setCode(GROUP_CODE);
Project project = new Project();
project.setCode(PROJECT_CODE);
project.setGroup(group);
Procedure procedure = new Procedure();
Experiment experiment = new Experiment();
experiment.setCode(EXPERIMENT_CODE);
experiment.setProject(project);
procedure.setExperiment(experiment);
final ExternalData externalData = new ExternalData();
externalData.setProcedure(procedure);
externalData.setCode(EXAMPLE_DATA_SET_CODE);
externalData.setSampleCode(SAMPLE_CODE);
externalData.setLocatorType(new LocatorType(LocatorType.DEFAULT_LOCATOR_TYPE_CODE));
externalData.setLocation(EXAMPLE_DATA_SET_FOLDER_NAME);
return externalData;
}
private DatasetDownloadServlet createServlet()
{
Properties properties = new Properties();
......@@ -520,7 +533,7 @@ public class DatasetDownloadServletTest
return new DatasetDownloadServlet(new ApplicationContext(dataSetService, configParameters,
APPLICATION_NAME));
}
private String getNormalizedLogContent()
{
String logContent = logRecorder.getLogContent();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment