blob: f4e8fc06c4b8853617f5eb1b4a93ffb7825de5ea [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.services.extension.rest;
import java.text.MessageFormat;
import org.eclipse.skalli.commons.XMLUtils;
import org.eclipse.skalli.testutil.RestWriterTestBase;
import org.junit.Test;
import org.restlet.Request;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
import org.restlet.data.Reference;
import org.restlet.data.Status;
@SuppressWarnings("nls")
public class ErrorRepresentationTest extends RestWriterTestBase {
@Test
public void testMarshalXML() throws Exception {
ErrorRepresentation error = new ErrorRepresentation(getRequestContext(MediaType.TEXT_XML),
Status.CLIENT_ERROR_NOT_FOUND, "error:notfound", "Unknown Resource");
error.write(writer);
assertEqualsXML(MessageFormat.format(
"<error {0}=\"{1}\" {2}=\"{3}\" {4}=\"{5} http://example.org:8080/schemas/error.xsd\">" +
"<errorId>error:notfound</errorId><timestamp>{6}</timestamp>" +
"<message>Unknown Resource</message></error>",
XMLUtils.XMLNS, RestUtils.API_NAMESPACE, XMLUtils.XMLNS_XSI, XMLUtils.XSI_INSTANCE_NS,
XMLUtils.XSI_SCHEMA_LOCATION, RestUtils.API_NAMESPACE, error.getTimestamp()));
}
@Test
public void testMarshalXMLDefaultErrorId() throws Exception {
ErrorRepresentation error = new ErrorRepresentation(getRequestContext(MediaType.TEXT_XML),
Status.CLIENT_ERROR_NOT_FOUND, null, null);
error.write(writer);
assertEqualsXML(MessageFormat.format(
"<error {0}=\"{1}\" {2}=\"{3}\" {4}=\"{5} http://example.org:8080/schemas/error.xsd\">" +
"<errorId>rest:/foo/bar:{6}</errorId><timestamp>{7}</timestamp>" +
"<message>{8} ({9})</message></error>",
XMLUtils.XMLNS, RestUtils.API_NAMESPACE, XMLUtils.XMLNS_XSI, XMLUtils.XSI_INSTANCE_NS,
XMLUtils.XSI_SCHEMA_LOCATION, RestUtils.API_NAMESPACE,
Status.CLIENT_ERROR_NOT_FOUND.getCode(), error.getTimestamp(),
Status.CLIENT_ERROR_NOT_FOUND.getDescription(), Status.CLIENT_ERROR_NOT_FOUND.getName()));
}
@Test
public void testMarshalJSON() throws Exception {
ErrorRepresentation error = new ErrorRepresentation(getRequestContext(MediaType.APPLICATION_JSON),
Status.CLIENT_ERROR_NOT_FOUND, "error:notfound", "Unknown Resource");
error.write(writer);
assertEqualsJSON("{\"errorId\":\"error:notfound\"," +
"\"timestamp\":\"" + error.getTimestamp() + "\"," +
"\"message\":\"Unknown Resource\"}");
}
@Test
public void testMarshalJSONDefaultErrorId() throws Exception {
ErrorRepresentation error = new ErrorRepresentation(getRequestContext(MediaType.APPLICATION_JSON),
Status.CLIENT_ERROR_NOT_FOUND, null, null);
error.write(writer);
assertEqualsJSON(MessageFormat.format(
"'{'\"errorId\":\"rest:/foo/bar:{0}\",\"timestamp\":\"{1}\",\"message\":\"{2} ({3})\"}",
Status.CLIENT_ERROR_NOT_FOUND.getCode(), error.getTimestamp(),
Status.CLIENT_ERROR_NOT_FOUND.getDescription(), Status.CLIENT_ERROR_NOT_FOUND.getName()));
}
private RequestContext getRequestContext(MediaType mediaType) {
Reference resourceRef = new Reference("http", "example.org", 8080, "/foo/bar", "a=foo&b=bar&c", "frag");
resourceRef.addQueryParameter("accept", mediaType.getName());
Request request = new Request(Method.GET, resourceRef);
return new RequestContext(request);
}
}