package com.linkedin.restli.internal.server.response;
import com.linkedin.data.DataMap;
import com.linkedin.data.template.RecordTemplate;
import com.linkedin.restli.common.CollectionMetadata;
import com.linkedin.restli.common.CreateIdStatus;
import com.linkedin.restli.common.EmptyRecord;
import com.linkedin.restli.common.HttpStatus;
import com.linkedin.restli.common.ResourceMethod;
import com.linkedin.restli.internal.server.ResponseType;
import com.linkedin.restli.server.RestLiResponseData;
import com.linkedin.restli.server.RestLiServiceException;
import java.net.HttpCookie;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* @author erli
* @author gye
*/
public class TestRestLiResponseData
{
private final RestLiServiceException exception500 = new RestLiServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR);
private final RestLiServiceException exception503 = new RestLiServiceException(HttpStatus.S_503_SERVICE_UNAVAILABLE);
// Tests for the exception/status invariant of RestLiResponseEnvelope class.
@Test (dataProvider = "baseClassOperations")
public void testRestLiResponseEnvelopeInvariant(RestLiResponseDataImpl responseData)
{
// Headers
Map<String, String> headers = new HashMap<String, String>();
Assert.assertEquals(responseData.getHeaders(), headers);
String headerKey = "testKey";
String headerValue = "testValue";
responseData.getHeaders().put(headerKey, headerValue);
Assert.assertEquals(responseData.getHeaders().get(headerKey), headerValue);
// Cookies
List<HttpCookie> cookies = Collections.<HttpCookie>emptyList();
Assert.assertEquals(responseData.getCookies(), cookies);
// Exceptions
if (responseData.isErrorResponse())
{
Assert.assertNotNull(responseData.getServiceException());
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_500_INTERNAL_SERVER_ERROR);
responseData.setException(exception503);
Assert.assertEquals(responseData.getServiceException().getStatus(), HttpStatus.S_503_SERVICE_UNAVAILABLE);
// Make sure conversion to normal works
responseData.setStatus(HttpStatus.S_200_OK);
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_200_OK);
}
else
{
Assert.assertNull(responseData.getServiceException());
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_200_OK);
responseData.setStatus(HttpStatus.S_201_CREATED);
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_201_CREATED);
}
}
@DataProvider(name = "baseClassOperations")
public Object[][] provideAllBaseObjects()
{
RestLiServiceException exception = new RestLiServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR);
ResourceMethod[] methods = ResourceMethod.class.getEnumConstants();
Object[][] sampleResponseData = new Object[methods.length * 2][1];
for (int i = 0; i < methods.length; i++)
{
RestLiResponseDataImpl successResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl errorResponseData = new RestLiResponseDataImpl(exception,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
successResponseData.setResponseEnvelope(EnvelopeBuilderUtil.buildBlankResponseEnvelope(methods[i], successResponseData));
errorResponseData.setResponseEnvelope(EnvelopeBuilderUtil.buildBlankResponseEnvelope(methods[i], errorResponseData));
sampleResponseData[i * 2] = new Object[] { successResponseData };
sampleResponseData[i * 2 + 1] = new Object[] { errorResponseData };
}
return sampleResponseData;
}
@Test(dataProvider = "recordResponseEnvelopesProvider")
public void testRecordResponseEnvelopeUpdates(RestLiResponseDataImpl responseData)
{
RecordResponseEnvelope recordResponseEnvelope = responseData.getRecordResponseEnvelope();
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertEquals(recordResponseEnvelope.getRecord(), new EmptyRecord());
// Swap to exception
responseData.setException(exception500);
Assert.assertNull(recordResponseEnvelope.getRecord());
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_500_INTERNAL_SERVER_ERROR);
Assert.assertEquals(responseData.getServiceException(), exception500);
Assert.assertEquals(responseData.getServiceException(), exception500);
// Swap back
recordResponseEnvelope.setRecord(new EmptyRecord(), HttpStatus.S_200_OK);
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertEquals(recordResponseEnvelope.getRecord(), new EmptyRecord());
}
@DataProvider
public static Object[][] recordResponseEnvelopesProvider()
{
RestLiResponseDataImpl getResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl createResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl actionResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
getResponseData.setResponseEnvelope(new GetResponseEnvelope(new EmptyRecord(), getResponseData));
createResponseData.setResponseEnvelope(new CreateResponseEnvelope(new EmptyRecord(), createResponseData));
actionResponseData.setResponseEnvelope(new ActionResponseEnvelope(new EmptyRecord(), actionResponseData));
return new Object[][]{
{ getResponseData },
{ createResponseData },
{ actionResponseData }
};
}
@Test(dataProvider = "collectionResponseEnvelopesProvider")
@SuppressWarnings("unchecked")
public void testCollectionResponseEnvelopeUpdates(RestLiResponseDataImpl responseData)
{
CollectionResponseEnvelope responseEnvelope = responseData.getCollectionResponseEnvelope();
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertEquals(responseEnvelope.getCollectionResponse(), Collections.<EmptyRecord>emptyList());
Assert.assertEquals(responseEnvelope.getCollectionResponsePaging(), new CollectionMetadata());
Assert.assertEquals(responseEnvelope.getCollectionResponseCustomMetadata(), new EmptyRecord());
// Swap to exception
responseData.setException(exception500);
Assert.assertNull(responseEnvelope.getCollectionResponse());
Assert.assertNull(responseEnvelope.getCollectionResponseCustomMetadata());
Assert.assertNull(responseEnvelope.getCollectionResponsePaging());
Assert.assertEquals(responseData.getServiceException(), exception500);
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_500_INTERNAL_SERVER_ERROR);
// Swap back
responseEnvelope.setCollectionResponse(new ArrayList<RecordTemplate>(), new CollectionMetadata(), new EmptyRecord(),
HttpStatus.S_200_OK);
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertEquals(responseEnvelope.getCollectionResponse(), Collections.<EmptyRecord>emptyList());
Assert.assertEquals(responseEnvelope.getCollectionResponsePaging(), new CollectionMetadata());
Assert.assertEquals(responseEnvelope.getCollectionResponseCustomMetadata(), new EmptyRecord());
// Check mutability when available
List<EmptyRecord> temp = (List<EmptyRecord>) responseEnvelope.getCollectionResponse();
temp.add(new EmptyRecord());
Assert.assertEquals(responseEnvelope.getCollectionResponse().size(), 1);
}
@DataProvider
public static Object[][] collectionResponseEnvelopesProvider()
{
RestLiResponseDataImpl getAllResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl finderResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
getAllResponseData.setResponseEnvelope(new GetAllResponseEnvelope(Collections.<EmptyRecord>emptyList(),
new CollectionMetadata(),
new EmptyRecord(), getAllResponseData));
finderResponseData.setResponseEnvelope(new FinderResponseEnvelope(Collections.<EmptyRecord>emptyList(),
new CollectionMetadata(),
new EmptyRecord(), finderResponseData));
return new Object[][]{
{ getAllResponseData },
{ finderResponseData }
};
}
@Test(dataProvider = "createCollectionResponseEnvelopesProvider")
public void testCreateCollectionResponseEnvelopeUpdates(RestLiResponseDataImpl responseData)
{
BatchCreateResponseEnvelope responseEnvelope = responseData.getBatchCreateResponseEnvelope();
Assert.assertNull(responseData.getServiceException());
Assert.assertEquals(responseEnvelope.getCreateResponses(), Collections.emptyList());
Assert.assertFalse(responseData.isErrorResponse());
responseData.setException(exception500);
Assert.assertNull(responseEnvelope.getCreateResponses());
responseEnvelope.setCreateResponse(new ArrayList<BatchCreateResponseEnvelope.CollectionCreateResponseItem>(),
HttpStatus.S_200_OK);
Assert.assertNull(responseData.getServiceException());
Assert.assertEquals(responseEnvelope.getCreateResponses().size(), 0);
responseEnvelope.getCreateResponses()
.add(new BatchCreateResponseEnvelope.CollectionCreateResponseItem(
new CreateIdStatus<Object>(new DataMap(), new Object())));
responseEnvelope.getCreateResponses()
.add(new BatchCreateResponseEnvelope.CollectionCreateResponseItem(exception500, 2));
Assert.assertEquals(responseEnvelope.getCreateResponses().size(), 2);
}
@DataProvider
private Object[][] createCollectionResponseEnvelopesProvider()
{
RestLiResponseDataImpl responseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
responseData.setResponseEnvelope(
new BatchCreateResponseEnvelope(Collections.<BatchCreateResponseEnvelope.CollectionCreateResponseItem>emptyList(),
responseData));
return new Object[][] {
{ responseData }
};
}
@Test(dataProvider = "batchResponseEnvelopesProvider")
public void testBatchResponseEnvelopeUpdates(RestLiResponseDataImpl responseData)
{
BatchResponseEnvelope responseEnvelope = responseData.getBatchResponseEnvelope();
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertNull(responseData.getServiceException());
responseData.setException(exception500);
Assert.assertNull(responseEnvelope.getBatchResponseMap());
Map<Object, BatchResponseEnvelope.BatchResponseEntry> targetMap = new HashMap<Object, BatchResponseEnvelope.BatchResponseEntry>();
responseEnvelope.setBatchResponseMap(targetMap, HttpStatus.S_200_OK);
Assert.assertNull(responseData.getServiceException());
targetMap.put("key", new BatchResponseEnvelope.BatchResponseEntry(null, new EmptyRecord()));
Assert.assertEquals(responseEnvelope.getBatchResponseMap().size(), 1);
Assert.assertEquals(responseEnvelope.getBatchResponseMap().get("key").getRecord(), new EmptyRecord());
}
@DataProvider
public static Object[][] batchResponseEnvelopesProvider()
{
RestLiResponseDataImpl batchGetResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl batchUpdateResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl batchPartialUpdateResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl batchDeleteResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
batchGetResponseData.setResponseEnvelope(
new BatchGetResponseEnvelope(Collections.<Object, BatchResponseEnvelope.BatchResponseEntry>emptyMap(),
batchGetResponseData));
batchUpdateResponseData.setResponseEnvelope(
new BatchUpdateResponseEnvelope(Collections.<Object, BatchResponseEnvelope.BatchResponseEntry>emptyMap(),
batchUpdateResponseData));
batchPartialUpdateResponseData.setResponseEnvelope(
new BatchPartialUpdateResponseEnvelope(Collections.<Object, BatchResponseEnvelope.BatchResponseEntry>emptyMap(),
batchPartialUpdateResponseData));
batchDeleteResponseData.setResponseEnvelope(
new BatchDeleteResponseEnvelope(Collections.<Object, BatchResponseEnvelope.BatchResponseEntry>emptyMap(),
batchDeleteResponseData));
return new Object[][] {
{ batchGetResponseData },
{ batchUpdateResponseData },
{ batchPartialUpdateResponseData },
{ batchDeleteResponseData }
};
}
@Test(dataProvider = "emptyResponseEnvelopesProvider")
public void testEmptyResponseEnvelopeUpdates(RestLiResponseDataImpl responseData)
{
Assert.assertFalse(responseData.isErrorResponse());
responseData.setException(new RestLiServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR));
Assert.assertTrue(responseData.isErrorResponse());
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_500_INTERNAL_SERVER_ERROR);
responseData.setStatus(HttpStatus.S_200_OK);
Assert.assertFalse(responseData.isErrorResponse());
Assert.assertEquals(responseData.getStatus(), HttpStatus.S_200_OK);
}
@DataProvider
private Object[][] emptyResponseEnvelopesProvider()
{
RestLiResponseDataImpl partialUpdateResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl updateResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl deleteResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
RestLiResponseDataImpl optionsResponseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
partialUpdateResponseData.setResponseEnvelope(new UpdateResponseEnvelope(partialUpdateResponseData));
updateResponseData.setResponseEnvelope(new UpdateResponseEnvelope(updateResponseData));
deleteResponseData.setResponseEnvelope(new DeleteResponseEnvelope(deleteResponseData));
optionsResponseData.setResponseEnvelope(new OptionsResponseEnvelope(optionsResponseData));
return new Object[][] {
{ partialUpdateResponseData },
{ updateResponseData },
{ deleteResponseData },
{ optionsResponseData }
};
}
@Test(dataProvider = "envelopeResourceMethodDataProvider")
public void testResourceMethod(RestLiResponseData responseData, ResourceMethod resourceMethod)
{
Assert.assertEquals(responseData.getResourceMethod(), resourceMethod);
}
@Test(dataProvider = "envelopeResourceMethodDataProvider")
public void testResponseType(RestLiResponseData responseData, ResourceMethod resourceMethod)
{
ResponseType responseType = ResponseType.fromMethodType(resourceMethod);
Assert.assertEquals(responseData.getResponseType(), responseType);
}
@Test(dataProvider = "envelopeResourceMethodDataProvider")
public void testSetNullExceptions(RestLiResponseDataImpl responseData, ResourceMethod resourceMethod)
{
try
{
responseData.setException(null);
Assert.fail();
}
catch (UnsupportedOperationException e)
{
// expected
}
}
@Test(dataProvider = "envelopeResourceMethodDataProvider")
public void testSetNullStatus(RestLiResponseData responseData, ResourceMethod resourceMethod)
{
ResponseType responseType = ResponseType.fromMethodType(resourceMethod);
try
{
switch (responseType)
{
case SINGLE_ENTITY:
responseData.getRecordResponseEnvelope().setRecord(new EmptyRecord(), null);
Assert.fail();
break;
case BATCH_ENTITIES:
responseData.getBatchResponseEnvelope()
.setBatchResponseMap(Collections.<Object, BatchResponseEnvelope.BatchResponseEntry>emptyMap(), null);
Assert.fail();
break;
case CREATE_COLLECTION:
responseData.getBatchCreateResponseEnvelope()
.setCreateResponse(Collections.<BatchCreateResponseEnvelope.CollectionCreateResponseItem>emptyList(),
null);
Assert.fail();
break;
case GET_COLLECTION:
responseData.getCollectionResponseEnvelope()
.setCollectionResponse(Collections.<RecordTemplate>emptyList(), new CollectionMetadata(),
new EmptyRecord(), null);
break;
case STATUS_ONLY:
responseData.getEmptyResponseEnvelope().setStatus(null);
break;
default:
Assert.fail();
}
Assert.fail();
}
catch (UnsupportedOperationException e)
{
// expected
}
}
@Test(dataProvider = "envelopeResourceMethodDataProvider")
public void testRestLiResponseEnvelopesGetter(RestLiResponseData responseData, ResourceMethod resourceMethod)
{
// make sure the correct response envelope is returned for the resource method
switch(resourceMethod)
{
case GET:
Assert.assertTrue(responseData.getGetResponseEnvelope().getClass().equals(GetResponseEnvelope.class));
break;
case CREATE:
Assert.assertTrue(responseData.getCreateResponseEnvelope().getClass().equals(CreateResponseEnvelope.class));
break;
case ACTION:
Assert.assertTrue(responseData.getActionResponseEnvelope().getClass().equals(ActionResponseEnvelope.class));
break;
case FINDER:
Assert.assertTrue(responseData.getFinderResponseEnvelope().getClass().equals(FinderResponseEnvelope.class));
break;
case GET_ALL:
Assert.assertTrue(responseData.getGetAllResponseEnvelope().getClass().equals(GetAllResponseEnvelope.class));
break;
case BATCH_CREATE:
Assert.assertTrue(responseData.getBatchCreateResponseEnvelope().getClass()
.equals(BatchCreateResponseEnvelope.class));
break;
case BATCH_GET:
Assert.assertTrue(responseData.getBatchGetResponseEnvelope().getClass().equals(BatchGetResponseEnvelope.class));
break;
case BATCH_UPDATE:
Assert.assertTrue(responseData.getBatchUpdateResponseEnvelope().getClass()
.equals(BatchUpdateResponseEnvelope.class));
break;
case BATCH_PARTIAL_UPDATE:
Assert.assertTrue(responseData.getBatchPartialUpdateResponseEnvelope().getClass()
.equals(BatchPartialUpdateResponseEnvelope.class));
break;
case BATCH_DELETE:
Assert.assertTrue(responseData.getBatchDeleteResponseEnvelope().getClass()
.equals(BatchDeleteResponseEnvelope.class));
break;
case UPDATE:
Assert.assertTrue(responseData.getUpdateResponseEnvelope().getClass().equals(UpdateResponseEnvelope.class));
break;
case DELETE:
Assert.assertTrue(responseData.getDeleteResponseEnvelope().getClass().equals(DeleteResponseEnvelope.class));
break;
case PARTIAL_UPDATE:
Assert.assertTrue(responseData.getPartialUpdateResponseEnvelope().getClass()
.equals(PartialUpdateResponseEnvelope.class));
break;
case OPTIONS:
Assert.assertTrue(responseData.getOptionsResponseEnvelope().getClass().equals(OptionsResponseEnvelope.class));
break;
default:
throw new IllegalStateException();
}
}
@Test(dataProvider = "envelopeResourceMethodDataProvider")
public void testRestLiResponseEnvelopesGetterException(RestLiResponseData responseData, ResourceMethod method)
{
ResponseType responseType = ResponseType.fromMethodType(method);
try
{
responseData.getRecordResponseEnvelope();
if (responseType != ResponseType.SINGLE_ENTITY) Assert.fail();
}
catch (UnsupportedOperationException e)
{
if (responseType == ResponseType.SINGLE_ENTITY) Assert.fail();
}
try
{
responseData.getCollectionResponseEnvelope();
if (responseType != ResponseType.GET_COLLECTION) Assert.fail();
}
catch (UnsupportedOperationException e)
{
if (responseType == ResponseType.GET_COLLECTION) Assert.fail();
}
try
{
responseData.getBatchCreateResponseEnvelope();
if (responseType != ResponseType.CREATE_COLLECTION) Assert.fail();
}
catch (UnsupportedOperationException e)
{
if (responseType == ResponseType.CREATE_COLLECTION) Assert.fail();
}
try
{
responseData.getBatchResponseEnvelope();
if (responseType != ResponseType.BATCH_ENTITIES) Assert.fail();
}
catch (UnsupportedOperationException e)
{
if (responseType == ResponseType.BATCH_ENTITIES) Assert.fail();
}
try
{
responseData.getEmptyResponseEnvelope();
if (responseType != ResponseType.STATUS_ONLY) Assert.fail();
}
catch (UnsupportedOperationException e)
{
if (responseType == ResponseType.STATUS_ONLY) Assert.fail();
}
try
{
responseData.getActionResponseEnvelope();
if (method != ResourceMethod.ACTION) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.ACTION) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getBatchCreateResponseEnvelope();
if (method != ResourceMethod.BATCH_CREATE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.BATCH_CREATE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getBatchDeleteResponseEnvelope();
if (method != ResourceMethod.BATCH_DELETE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.BATCH_DELETE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getBatchGetResponseEnvelope();
if (method != ResourceMethod.BATCH_GET) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.BATCH_GET) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getBatchPartialUpdateResponseEnvelope();
if (method != ResourceMethod.BATCH_PARTIAL_UPDATE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.BATCH_PARTIAL_UPDATE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getBatchUpdateResponseEnvelope();
if (method != ResourceMethod.BATCH_UPDATE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.BATCH_UPDATE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getCreateResponseEnvelope();
if (method != ResourceMethod.CREATE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.CREATE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getDeleteResponseEnvelope();
if (method != ResourceMethod.DELETE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.DELETE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getFinderResponseEnvelope();
if (method != ResourceMethod.FINDER) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.FINDER) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getGetAllResponseEnvelope();
if (method != ResourceMethod.GET_ALL) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.GET_ALL) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getOptionsResponseEnvelope();
if (method != ResourceMethod.OPTIONS) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.OPTIONS) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getGetResponseEnvelope();
if (method != ResourceMethod.GET) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.GET) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getPartialUpdateResponseEnvelope();
if (method != ResourceMethod.PARTIAL_UPDATE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.PARTIAL_UPDATE) Assert.fail("Should not throw UnsupportedOperationException");
}
try
{
responseData.getUpdateResponseEnvelope();
if (method != ResourceMethod.UPDATE) Assert.fail("Did not throw UnsupportedOperationException");
}
catch (UnsupportedOperationException e)
{
if (method == ResourceMethod.UPDATE) Assert.fail("Should not throw UnsupportedOperationException");
}
}
@DataProvider
private Object[][] envelopeResourceMethodDataProvider()
{
ResourceMethod[] resourceMethods = ResourceMethod.values();
Object[][] envelopeResourceMethods = new Object[resourceMethods.length][2];
for (int i = 0; i < envelopeResourceMethods.length; i++)
{
RestLiResponseDataImpl responseData = new RestLiResponseDataImpl(HttpStatus.S_200_OK,
Collections.<String, String>emptyMap(),
Collections.<HttpCookie>emptyList());
responseData.setResponseEnvelope(EnvelopeBuilderUtil.buildBlankResponseEnvelope(resourceMethods[i], responseData));
envelopeResourceMethods[i][0] = responseData;
envelopeResourceMethods[i][1] = resourceMethods[i];
}
return envelopeResourceMethods;
}
}