/*
* ============LICENSE_START=======================================================
* Copyright (C) 2020 Pantheon.tech
- * Modifications Copyright (C) 2021 Nordix Foundation
+ * Modifications Copyright (C) 2021-2023 Nordix Foundation
* Modifications Copyright (C) 2021 Bell Canada.
+ * Modifications Copyright (C) 2022 TechMahindra Ltd.
+ * Modifications Copyright (C) 2022 Deutsche Telekom AG
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.cps.rest.exceptions
+import com.fasterxml.jackson.databind.ObjectMapper
import groovy.json.JsonSlurper
-import org.modelmapper.ModelMapper
import org.onap.cps.api.CpsAdminService
import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsModuleService
import org.onap.cps.api.CpsQueryService
+import org.onap.cps.rest.controller.CpsRestInputMapper
import org.onap.cps.spi.exceptions.AlreadyDefinedException
import org.onap.cps.spi.exceptions.CpsException
import org.onap.cps.spi.exceptions.CpsPathException
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.onap.cps.utils.PrefixResolver
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()
+ JsonObjectMapper jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
+
+ @SpringBean
+ CpsRestInputMapper cpsRestInputMapper = Stub()
+
+ @SpringBean
+ PrefixResolver prefixResolver = Mock()
@Autowired
MockMvc mvc
"Anchor with name ${existingObjectName} already exists for ${dataspaceName}.")
}
+ def 'Request with a schema set in use exception returns HTTP Status Conflict.'() {
+ when: 'Schema set in use exception is thrown by the service'
+ setupTestException(new SchemaSetInUseException(dataspaceName, existingObjectName))
+ def response = performTestRequest()
+ then: 'a HTTP conflict response is returned with correct message an details'
+ assertTestResponse(response, CONFLICT,
+ "Schema Set is being used.",
+ "Schema Set with name ${existingObjectName} in dataspace ${dataspaceName} is having Anchor records associated.")
+ }
+
def 'Get request with a #exceptionThrown.class.simpleName returns HTTP Status Bad Request'() {
- when: 'CPS validation exception is thrown by the service'
+ when: '#exceptionThrown.class.simpleName is thrown by the service'
setupTestException(exceptionThrown)
def response = performTestRequest()
then: 'an HTTP Bad Request response is returned with correct message and details'
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(groovy.json.JsonOutput.toJson('{"some-key" : "some-value"}'))
+ .content('{"some-key" : "some-value"}')
).andReturn().response
then: 'response code indicates bad input parameters'
response.status == BAD_REQUEST.value()