mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
100553: Removed possibility to updated schema name, element and qualifier
This commit is contained in:
@@ -313,21 +313,23 @@ public class MetadataFieldRestRepository extends DSpaceRestRepository<MetadataFi
|
||||
throw new UnprocessableEntityException("Cannot parse JSON in request body", e);
|
||||
}
|
||||
|
||||
if (metadataFieldRest == null || isBlank(metadataFieldRest.getElement())) {
|
||||
throw new UnprocessableEntityException("metadata element (in request body) cannot be blank");
|
||||
MetadataField metadataField = metadataFieldService.find(context, id);
|
||||
if (metadataField == null) {
|
||||
throw new ResourceNotFoundException("metadata field with id: " + id + " not found");
|
||||
}
|
||||
|
||||
if (!Objects.equals(metadataFieldRest.getElement(), metadataField.getElement())) {
|
||||
throw new UnprocessableEntityException("Metadata element cannot be updated.");
|
||||
}
|
||||
|
||||
if (!Objects.equals(metadataFieldRest.getQualifier(), metadataField.getQualifier())) {
|
||||
throw new UnprocessableEntityException("Metadata qualifier cannot be updated.");
|
||||
}
|
||||
|
||||
if (!Objects.equals(id, metadataFieldRest.getId())) {
|
||||
throw new UnprocessableEntityException("ID in request body doesn't match path ID");
|
||||
}
|
||||
|
||||
MetadataField metadataField = metadataFieldService.find(context, id);
|
||||
if (metadataField == null) {
|
||||
throw new ResourceNotFoundException("metadata field with id: " + id + " not found");
|
||||
}
|
||||
|
||||
metadataField.setElement(metadataFieldRest.getElement());
|
||||
metadataField.setQualifier(metadataFieldRest.getQualifier());
|
||||
metadataField.setScopeNote(metadataFieldRest.getScopeNote());
|
||||
|
||||
try {
|
||||
|
@@ -147,8 +147,13 @@ public class MetadataSchemaRestRepository extends DSpaceRestRepository<MetadataS
|
||||
throw new UnprocessableEntityException("Cannot parse JSON in request body", e);
|
||||
}
|
||||
|
||||
if (metadataSchemaRest == null || isBlank(metadataSchemaRest.getPrefix())) {
|
||||
throw new UnprocessableEntityException("metadata schema name cannot be blank");
|
||||
MetadataSchema metadataSchema = metadataSchemaService.find(context, id);
|
||||
if (metadataSchema == null) {
|
||||
throw new ResourceNotFoundException("metadata schema with id: " + id + " not found");
|
||||
}
|
||||
|
||||
if (!Objects.equals(metadataSchemaRest.getPrefix(), metadataSchema.getName())) {
|
||||
throw new UnprocessableEntityException("Metadata schema name cannot be updated.");
|
||||
}
|
||||
if (isBlank(metadataSchemaRest.getNamespace())) {
|
||||
throw new UnprocessableEntityException("metadata schema namespace cannot be blank");
|
||||
@@ -158,12 +163,6 @@ public class MetadataSchemaRestRepository extends DSpaceRestRepository<MetadataS
|
||||
throw new UnprocessableEntityException("ID in request doesn't match path ID");
|
||||
}
|
||||
|
||||
MetadataSchema metadataSchema = metadataSchemaService.find(context, id);
|
||||
if (metadataSchema == null) {
|
||||
throw new ResourceNotFoundException("metadata schema with id: " + id + " not found");
|
||||
}
|
||||
|
||||
metadataSchema.setName(metadataSchemaRest.getPrefix());
|
||||
metadataSchema.setNamespace(metadataSchemaRest.getNamespace());
|
||||
|
||||
try {
|
||||
|
@@ -202,7 +202,7 @@ public class MetadataSchemaRestRepositoryIT extends AbstractControllerIntegratio
|
||||
|
||||
MetadataSchemaRest metadataSchemaRest = new MetadataSchemaRest();
|
||||
metadataSchemaRest.setId(metadataSchema.getID());
|
||||
metadataSchemaRest.setPrefix(TEST_NAME_UPDATED);
|
||||
metadataSchemaRest.setPrefix(TEST_NAME);
|
||||
metadataSchemaRest.setNamespace(TEST_NAMESPACE_UPDATED);
|
||||
|
||||
getClient(getAuthToken(admin.getEmail(), password))
|
||||
@@ -214,7 +214,33 @@ public class MetadataSchemaRestRepositoryIT extends AbstractControllerIntegratio
|
||||
getClient().perform(get("/api/core/metadataschemas/" + metadataSchema.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", MetadataschemaMatcher
|
||||
.matchEntry(TEST_NAME_UPDATED, TEST_NAMESPACE_UPDATED)));
|
||||
.matchEntry(TEST_NAME, TEST_NAMESPACE_UPDATED)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update_schemaNameShouldThrowError() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
MetadataSchema metadataSchema = MetadataSchemaBuilder.createMetadataSchema(context, TEST_NAME, TEST_NAMESPACE)
|
||||
.build();
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
MetadataSchemaRest metadataSchemaRest = new MetadataSchemaRest();
|
||||
metadataSchemaRest.setId(metadataSchema.getID());
|
||||
metadataSchemaRest.setPrefix(TEST_NAME_UPDATED);
|
||||
metadataSchemaRest.setNamespace(TEST_NAMESPACE_UPDATED);
|
||||
|
||||
getClient(getAuthToken(admin.getEmail(), password))
|
||||
.perform(put("/api/core/metadataschemas/" + metadataSchema.getID())
|
||||
.content(new ObjectMapper().writeValueAsBytes(metadataSchemaRest))
|
||||
.contentType(contentType))
|
||||
.andExpect(status().isUnprocessableEntity());
|
||||
|
||||
getClient().perform(get("/api/core/metadataschemas/" + metadataSchema.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", MetadataschemaMatcher
|
||||
.matchEntry(TEST_NAME, TEST_NAMESPACE)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -832,31 +832,81 @@ public class MetadatafieldRestRepositoryIT extends AbstractControllerIntegration
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||
.build();
|
||||
.build();
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
||||
metadataFieldRest.setId(metadataField.getID());
|
||||
metadataFieldRest.setElement(ELEMENT);
|
||||
metadataFieldRest.setQualifier(QUALIFIER);
|
||||
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
||||
|
||||
getClient(getAuthToken(admin.getEmail(), password))
|
||||
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||
.contentType(contentType))
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update_elementShouldThrowError() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||
.build();
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
||||
metadataFieldRest.setId(metadataField.getID());
|
||||
metadataFieldRest.setElement(ELEMENT_UPDATED);
|
||||
metadataFieldRest.setQualifier(QUALIFIER);
|
||||
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
||||
|
||||
getClient(getAuthToken(admin.getEmail(), password))
|
||||
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||
.contentType(contentType))
|
||||
.andExpect(status().isUnprocessableEntity());
|
||||
|
||||
getClient().perform(get("/api/core/metadatafields/" + metadataField.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", MetadataFieldMatcher.matchMetadataFieldByKeys(
|
||||
metadataSchema.getName(), ELEMENT, QUALIFIER)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update_qualifierShouldThrowError() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||
.build();
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
||||
metadataFieldRest.setId(metadataField.getID());
|
||||
metadataFieldRest.setElement(ELEMENT);
|
||||
metadataFieldRest.setQualifier(QUALIFIER_UPDATED);
|
||||
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
||||
|
||||
getClient(getAuthToken(admin.getEmail(), password))
|
||||
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||
.contentType(contentType))
|
||||
.andExpect(status().isOk());
|
||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||
.contentType(contentType))
|
||||
.andExpect(status().isUnprocessableEntity());
|
||||
|
||||
getClient().perform(get("/api/core/metadatafields/" + metadataField.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", MetadataFieldMatcher.matchMetadataFieldByKeys(
|
||||
metadataSchema.getName(), ELEMENT_UPDATED, QUALIFIER_UPDATED)
|
||||
));
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", MetadataFieldMatcher.matchMetadataFieldByKeys(
|
||||
metadataSchema.getName(), ELEMENT, QUALIFIER)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update_checkUpdatedInIndex() throws Exception {
|
||||
public void update_checkNotUpdatedInIndex() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||
@@ -885,27 +935,27 @@ public class MetadatafieldRestRepositoryIT extends AbstractControllerIntegration
|
||||
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||
.contentType(contentType))
|
||||
.andExpect(status().isOk());
|
||||
.andExpect(status().isUnprocessableEntity());
|
||||
|
||||
// new metadata field found in index
|
||||
// new metadata field not found in index
|
||||
getClient().perform(get(SEARCH_BYFIELDNAME_ENDPOINT)
|
||||
.param("schema", metadataSchema.getName())
|
||||
.param("element", ELEMENT_UPDATED)
|
||||
.param("qualifier", QUALIFIER_UPDATED))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$._embedded.metadatafields", Matchers.hasItem(
|
||||
MetadataFieldMatcher.matchMetadataFieldByKeys(metadataSchema.getName(),
|
||||
ELEMENT_UPDATED, QUALIFIER_UPDATED))
|
||||
))
|
||||
.andExpect(jsonPath("$.page.totalElements", is(1)));
|
||||
.andExpect(jsonPath("$.page.totalElements", is(0)));
|
||||
|
||||
// original metadata field not found in index
|
||||
// original metadata field found in index
|
||||
getClient().perform(get(SEARCH_BYFIELDNAME_ENDPOINT)
|
||||
.param("schema", metadataSchema.getName())
|
||||
.param("element", metadataField.getElement())
|
||||
.param("qualifier", metadataField.getQualifier()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.page.totalElements", is(0)));
|
||||
.andExpect(jsonPath("$._embedded.metadatafields", Matchers.hasItem(
|
||||
MetadataFieldMatcher.matchMetadataFieldByKeys(metadataSchema.getName(),
|
||||
ELEMENT, QUALIFIER))
|
||||
))
|
||||
.andExpect(jsonPath("$.page.totalElements", is(1)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user