mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-10 11:33:11 +00:00
[DS-3952] Don't require authorization. Test this properly.
This commit is contained in:
@@ -30,6 +30,7 @@ import org.dspace.core.Context;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,7 +54,7 @@ public class RequestItemRepository
|
|||||||
protected RequestItemConverter requestItemConverter;
|
protected RequestItemConverter requestItemConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//@PreAuthorize(expr)
|
@PreAuthorize("permitAll()")
|
||||||
public RequestItemRest findOne(Context context, String id) {
|
public RequestItemRest findOne(Context context, String id) {
|
||||||
RequestItem requestItem = requestItemService.findByToken(context, id);
|
RequestItem requestItem = requestItemService.findByToken(context, id);
|
||||||
if (null == requestItem) {
|
if (null == requestItem) {
|
||||||
@@ -70,6 +71,7 @@ public class RequestItemRepository
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@PreAuthorize("permitAll()")
|
||||||
public RequestItemRest createAndReturn(Context ctx) {
|
public RequestItemRest createAndReturn(Context ctx) {
|
||||||
// Fill a RequestItemRest from the client's HTTP request.
|
// Fill a RequestItemRest from the client's HTTP request.
|
||||||
HttpServletRequest req = getRequestService()
|
HttpServletRequest req = getRequestService()
|
||||||
|
@@ -73,11 +73,12 @@ public class RequestItemRepositoryIT
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test of findOne method, of class RequestItemRepository.
|
* Test of findOne method, with an authenticated user.
|
||||||
|
*
|
||||||
* @throws java.lang.Exception passed through.
|
* @throws java.lang.Exception passed through.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindOne()
|
public void testFindOneAuthenticated()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
System.out.println("findOne");
|
System.out.println("findOne");
|
||||||
|
|
||||||
@@ -112,14 +113,53 @@ public class RequestItemRepositoryIT
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test of createAndReturn method, of class RequestItemRepository.
|
* Test of findOne method, with an UNauthenticated user.
|
||||||
|
*
|
||||||
|
* @throws java.lang.Exception passed through.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testFindOneNotAuthenticated()
|
||||||
|
throws Exception {
|
||||||
|
System.out.println("findOne");
|
||||||
|
|
||||||
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
|
// Create necessary supporting objects.
|
||||||
|
Collection collection = CollectionBuilder.createCollection(context, parentCommunity)
|
||||||
|
.build();
|
||||||
|
Item item = ItemBuilder.createItem(context, collection)
|
||||||
|
.build();
|
||||||
|
InputStream is = new ByteArrayInputStream(new byte[0]);
|
||||||
|
Bitstream bitstream = BitstreamBuilder.createBitstream(context, item, is)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// Create a request.
|
||||||
|
RequestItem request = RequestItemBuilder
|
||||||
|
.createRequestItem(context, item, bitstream)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// Test: can we find it?
|
||||||
|
final String uri = URI_ROOT + '/' + request.getToken();
|
||||||
|
getClient().perform(get(uri))
|
||||||
|
.andExpect(status().isOk()) // Can we find it?
|
||||||
|
.andExpect(content().contentType(contentType))
|
||||||
|
.andExpect(jsonPath("$", Matchers.is(
|
||||||
|
RequestCopyMatcher.matchRequestCopy(request))));
|
||||||
|
|
||||||
|
// Clean up.
|
||||||
|
bitstream.setDeleted(true);
|
||||||
|
context.restoreAuthSystemState();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test of createAndReturn method, with an authenticated user.
|
||||||
*
|
*
|
||||||
* @throws java.sql.SQLException passed through.
|
* @throws java.sql.SQLException passed through.
|
||||||
* @throws org.dspace.authorize.AuthorizeException passed through.
|
* @throws org.dspace.authorize.AuthorizeException passed through.
|
||||||
* @throws java.io.IOException passed through.
|
* @throws java.io.IOException passed through.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testCreateAndReturn()
|
public void testCreateAndReturnAuthenticated()
|
||||||
throws SQLException, AuthorizeException, IOException, Exception {
|
throws SQLException, AuthorizeException, IOException, Exception {
|
||||||
System.out.println("createAndReturn");
|
System.out.println("createAndReturn");
|
||||||
|
|
||||||
@@ -176,6 +216,71 @@ public class RequestItemRepositoryIT
|
|||||||
context.restoreAuthSystemState();
|
context.restoreAuthSystemState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test of createAndReturn method, with an UNauthenticated user.
|
||||||
|
* This should succeed: anyone can file a request.
|
||||||
|
*
|
||||||
|
* @throws java.sql.SQLException passed through.
|
||||||
|
* @throws org.dspace.authorize.AuthorizeException passed through.
|
||||||
|
* @throws java.io.IOException passed through.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testCreateAndReturnNotAuthenticated()
|
||||||
|
throws SQLException, AuthorizeException, IOException, Exception {
|
||||||
|
System.out.println("createAndReturn");
|
||||||
|
|
||||||
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
|
// Create some necessary objects.
|
||||||
|
Collection col = CollectionBuilder.createCollection(context,
|
||||||
|
parentCommunity).build();
|
||||||
|
Item item = ItemBuilder.createItem(context, col).build();
|
||||||
|
InputStream is = new ByteArrayInputStream(new byte[0]);
|
||||||
|
Bitstream bitstream = BitstreamBuilder.createBitstream(context, item, is)
|
||||||
|
.withName("/dev/null")
|
||||||
|
.withMimeType("text/plain")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// Fake up a request in REST form.
|
||||||
|
RequestItemRest rir = new RequestItemRest();
|
||||||
|
rir.setBitstreamId(bitstream.getID().toString());
|
||||||
|
rir.setItemId(item.getID().toString());
|
||||||
|
rir.setRequestEmail(RequestItemBuilder.REQ_EMAIL);
|
||||||
|
rir.setRequestMessage(RequestItemBuilder.REQ_MESSAGE);
|
||||||
|
rir.setRequestName(RequestItemBuilder.REQ_NAME);
|
||||||
|
rir.setAllfiles(false);
|
||||||
|
|
||||||
|
// Create it and see if it was created correctly.
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
MvcResult mvcResult = getClient()
|
||||||
|
.perform(post(URI_ROOT)
|
||||||
|
.content(mapper.writeValueAsBytes(rir))
|
||||||
|
.contentType(contentType))
|
||||||
|
.andExpect(status().isCreated())
|
||||||
|
.andExpect(content().contentType(contentType))
|
||||||
|
.andExpect(jsonPath("$", Matchers.allOf(
|
||||||
|
hasJsonPath("$.id", not(is(emptyOrNullString()))),
|
||||||
|
hasJsonPath("$.type", is(RequestItemRest.NAME)),
|
||||||
|
hasJsonPath("$.token", not(is(emptyOrNullString()))),
|
||||||
|
hasJsonPath("$.requestEmail", is(RequestItemBuilder.REQ_EMAIL)),
|
||||||
|
hasJsonPath("$.requestMessage", is(RequestItemBuilder.REQ_MESSAGE)),
|
||||||
|
hasJsonPath("$.requestName", is(RequestItemBuilder.REQ_NAME)),
|
||||||
|
hasJsonPath("$.allfiles", is(false)),
|
||||||
|
hasJsonPath("$.requestDate", not(is(emptyOrNullString()))), // TODO should be an ISO datetime
|
||||||
|
hasJsonPath("$._links.self.href", not(is(emptyOrNullString())))
|
||||||
|
)))
|
||||||
|
.andReturn();
|
||||||
|
|
||||||
|
// Clean up the created request.
|
||||||
|
String content = mvcResult.getResponse().getContentAsString();
|
||||||
|
Map<String,Object> map = mapper.readValue(content, Map.class);
|
||||||
|
String requestToken = String.valueOf(map.get("token"));
|
||||||
|
RequestItem ri = requestItemService.findByToken(context, requestToken);
|
||||||
|
requestItemService.delete(context, ri);
|
||||||
|
|
||||||
|
context.restoreAuthSystemState();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test of getDomainClass method, of class RequestItemRepository.
|
* Test of getDomainClass method, of class RequestItemRepository.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user