/*
* ============LICENSE_START=======================================================
* Copyright (C) 2020 Pantheon.tech
- * Modifications Copyright (C) 2021 Nordix Foundation
+ * Modifications Copyright (C) 2021-2022 Nordix Foundation
* Modifications Copyright (C) 2021 Bell Canada.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import org.onap.cps.spi.exceptions.ModelValidationException
import org.onap.cps.spi.exceptions.NotFoundInDataspaceException
import org.onap.cps.spi.exceptions.SchemaSetInUseException
+import org.onap.cps.spi.exceptions.DataspaceInUseException
+import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
class CpsRestExceptionHandlerSpec extends Specification {
@SpringBean
- CpsAdminService mockCpsAdminService = Mock()
+ CpsAdminService mockCpsAdminService = Stub()
@SpringBean
- CpsModuleService mockCpsModuleService = Mock()
+ CpsModuleService mockCpsModuleService = Stub()
@SpringBean
- CpsDataService mockCpsDataService = Mock()
+ CpsDataService mockCpsDataService = Stub()
@SpringBean
- CpsQueryService mockCpsQueryService = Mock()
+ CpsQueryService mockCpsQueryService = Stub()
@SpringBean
- ModelMapper modelMapper = Mock()
+ ModelMapper modelMapper = Stub()
+
+ @SpringBean
+ JsonObjectMapper jsonObjectMapper = Stub()
@Autowired
MockMvc mvc
def response = performTestRequest()
then: 'an HTTP Not Found response is returned with correct message and details'
assertTestResponse(response, NOT_FOUND, 'Object not found',
- 'Description does not exist in dataspace MyDataSpace.')
+ 'Description does not exist in dataspace MyDataSpace.')
}
def 'Request with an object already defined exception returns HTTP Status Conflict.'() {
def response = performTestRequest()
then: 'a HTTP conflict response is returned with correct message an details'
assertTestResponse(response, CONFLICT,
- "Already defined exception",
- "Anchor with name ${existingObjectName} already exists for ${dataspaceName}.")
+ "Already defined exception",
+ "Anchor with name ${existingObjectName} already exists for ${dataspaceName}.")
}
def 'Get request with a #exceptionThrown.class.simpleName returns HTTP Status Bad Request'() {
assertTestResponse(response, CONFLICT, exceptionThrown.getMessage(), exceptionThrown.getDetails())
where: 'the following exceptions are thrown'
exceptionThrown << [new DataInUseException(dataspaceName, existingObjectName),
- new SchemaSetInUseException(dataspaceName, existingObjectName)]
+ new SchemaSetInUseException(dataspaceName, existingObjectName),
+ new DataspaceInUseException(dataspaceName, errorDetails)]
}
/*
* NB. This method tests the expected behavior for POST request only;
* testing of PUT and PATCH requests omitted due to same NOT 'GET' condition is being used.
*/
+
def 'Post request with #exceptionThrown.class.simpleName returns HTTP Status Bad Request.'() {
given: '#exception is thrown the service indicating data is not found'
- mockCpsDataService.saveData(_, _, _, _) >> { throw exceptionThrown }
+ mockCpsDataService.saveData(_, _, _, _, _) >> { throw exceptionThrown }
when: 'data update request is performed'
def response = mvc.perform(
- post("$basePath/v1/dataspaces/dataspace-name/anchors/anchor-name/nodes")
- .contentType(MediaType.APPLICATION_JSON)
- .param('xpath', 'parent node xpath')
- .content('json data')
+ post("$basePath/v1/dataspaces/dataspace-name/anchors/anchor-name/nodes")
+ .contentType(MediaType.APPLICATION_JSON)
+ .param('xpath', 'parent node xpath')
+ .content(groovy.json.JsonOutput.toJson('{"some-key" : "some-value"}'))
).andReturn().response
then: 'response code indicates bad input parameters'
response.status == BAD_REQUEST.value()
def performTestRequest() {
return mvc.perform(
- get("$basePath/v1/dataspaces/dataspace-name/anchors"))
- .andReturn().response
+ get("$basePath/v1/dataspaces/dataspace-name/anchors"))
+ .andReturn().response
}
static void assertTestResponse(response, expectedStatus, expectedErrorMessage, expectedErrorDetails) {