Skip to content

Commit

Permalink
Add endpoint for deleting workspaces; fixes 60887336
Browse files Browse the repository at this point in the history
  • Loading branch information
cbeer committed Nov 18, 2013
1 parent 97ae37e commit 2861320
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 2 deletions.
Expand Up @@ -21,6 +21,7 @@
import static java.util.Collections.singletonMap;
import static javax.ws.rs.core.MediaType.TEXT_HTML;
import static javax.ws.rs.core.Response.created;
import static javax.ws.rs.core.Response.noContent;
import static org.fcrepo.http.commons.domain.RDFMediaType.N3;
import static org.fcrepo.http.commons.domain.RDFMediaType.N3_ALT1;
import static org.fcrepo.http.commons.domain.RDFMediaType.N3_ALT2;
Expand All @@ -35,6 +36,7 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
Expand Down Expand Up @@ -131,4 +133,19 @@ public Response createWorkspace(@PathParam("path")
.buildFromMap(singletonMap("path", path))).build();

}

/**
* Delete a workspace from the repository
* @param path
* @return
* @throws RepositoryException
*/
@DELETE
@Path("{path}")
public Response deleteWorkspace(@PathParam("path") final String path) throws RepositoryException {
final Workspace workspace = session.getWorkspace();
workspace.deleteWorkspace(path);

return noContent().build();
}
}
Expand Up @@ -17,14 +17,17 @@
package org.fcrepo.http.api.repository;

import static org.fcrepo.http.commons.test.util.TestHelpers.setField;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;

import java.net.URI;

import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;

Expand Down Expand Up @@ -64,11 +67,11 @@ public void setUp() throws Exception {
workspaces = new FedoraRepositoryWorkspaces();
setField(workspaces, "session", mockSession);
setField(workspaces, "uriInfo", mockUriInfo);
when(mockSession.getWorkspace()).thenReturn(mockWorkspace);
}

@Test
public void testGetWorkspaces() throws Exception {
when(mockSession.getWorkspace()).thenReturn(mockWorkspace);
when(mockWorkspace.getAccessibleWorkspaceNames()).thenReturn(
new String[] {"xxx"});

Expand All @@ -93,7 +96,20 @@ public void testGetWorkspaces() throws Exception {
final String resourceName = resource.toString();

org.junit.Assert.assertNotNull(resourceName);
org.junit.Assert.assertEquals(uri.toString(), resourceName);
assertEquals(uri.toString(), resourceName);
}

@Test
public void testCreateWorkspace() throws Exception {
final Response response = workspaces.createWorkspace("xxx", mockUriInfo);
verify(mockWorkspace).createWorkspace("xxx");
assertEquals(201, response.getStatus());
}

@Test
public void testDeleteWorkspace() throws Exception {
final Response response = workspaces.deleteWorkspace("xxx");
verify(mockWorkspace).deleteWorkspace("xxx");
assertEquals(204, response.getStatus());
}
}
Expand Up @@ -28,6 +28,7 @@

import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.junit.Test;
Expand Down Expand Up @@ -76,4 +77,26 @@ public void shouldDemonstratePathsAndWorkspaces() throws IOException,
final GraphStore graphStore = getGraphStore(httpGet);
logger.info(graphStore.toString());
}

@Test
public void shouldCreateAndDeleteWorkspace() throws IOException {
final String workspace = randomUUID().toString();

final HttpPost httpCreateWorkspace =
new HttpPost(serverAddress + "fcr:workspaces/" + workspace);
final HttpResponse createWorkspaceResponse =
execute(httpCreateWorkspace);

assertEquals(201, createWorkspaceResponse.getStatusLine()
.getStatusCode());

final HttpDelete httpDeleteWorkspace = new HttpDelete(serverAddress + "fcr:workspaces/" + workspace);

final HttpResponse deleteWorkspaceResponse =
execute(httpDeleteWorkspace);

assertEquals(204, deleteWorkspaceResponse.getStatusLine()
.getStatusCode());

}
}

0 comments on commit 2861320

Please sign in to comment.