package com.collabinate.server.adminresources;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.restlet.Request;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
import org.restlet.data.Status;
import com.collabinate.server.resources.GraphResourceTest;
/**
* Tests for the tenant data resource.
*
* @author mafuba
*
*/
public class TenantDataResourceTest extends GraphResourceTest
{
@Test
public void get_data_for_nonexistent_tenant_should_return_404()
{
assertEquals(Status.CLIENT_ERROR_NOT_FOUND, get().getStatus());
}
@Test
public void get_data_for_existing_tenant_should_return_200()
{
// add the tenant
Request request = new Request(Method.PUT,
"riap://application/1/admin/tenants/tenant");
component.handle(request);
assertEquals(Status.SUCCESS_OK, get().getStatus());
}
@Test
public void tenant_data_should_have_xml_content_type()
{
// add the tenant
Request request = new Request(Method.PUT,
"riap://application/1/admin/tenants/tenant");
component.handle(request);
assertEquals(MediaType.APPLICATION_XML,
get().getEntity().getMediaType());
}
@Test
public void tenant_data_should_contain_graphml()
{
// add the tenant
Request request = new Request(Method.PUT,
"riap://application/1/admin/tenants/tenant");
component.handle(request);
assertTrue(DatabaseResourceTest.isValidGraphml(
get().getEntityAsText()));
}
@Test
public void put_data_for_nonexistant_tenant_should_return_204()
{
// add the tenant
Request request = new Request(Method.PUT,
"riap://application/1/admin/tenants/tenant");
component.handle(request);
// get the data and remove the tenant
String data = get().getEntityAsText();
delete();
assertEquals(Status.SUCCESS_NO_CONTENT,
put(data, MediaType.APPLICATION_XML).getStatus());
}
@Test
public void put_data_for_existing_tenant_should_return_409()
{
// add the tenant
Request request = new Request(Method.PUT,
"riap://application/1/admin/tenants/tenant");
component.handle(request);
assertEquals(Status.CLIENT_ERROR_CONFLICT,
put(get().getEntityAsText(), MediaType.APPLICATION_XML)
.getStatus());
}
@Test
public void delete_data_for_nonexistent_tenant_should_return_404()
{
assertEquals(Status.CLIENT_ERROR_NOT_FOUND, delete().getStatus());
}
@Test
public void delete_data_for_existing_tenant_should_return_204()
{
// add the tenant
Request request = new Request(Method.PUT,
"riap://application/1/admin/tenants/tenant");
component.handle(request);
assertEquals(Status.SUCCESS_NO_CONTENT, delete().getStatus());
}
@Override
protected String getResourcePath()
{
return "/1/admin/tenants/tenant/data";
}
}