1. Added examples for all parameters, request body and response body
2. Changed the response/request type to Object from String for all json objects
3. Passed json format data in all tests
4. PUT and PATCH operations at present return empty response, hence examples are changed to be in sync
Issue-ID: CPS-780
Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca>
Change-Id: If6dd5bb48df4e1bbf1026eaadf315df8f972e282
properties:
name:
type: string
properties:
name:
type: string
dataspaceName:
type: string
dataspaceName:
type: string
schemaSetName:
type: string
schemaSetName:
type: string
ErrorMessage:
type: object
ErrorMessage:
type: object
properties:
status:
type: string
properties:
status:
type: string
- example: Dataspace not found
- example: Dataspace with name D1 does not exist.
MultipartFile:
type: object
MultipartFile:
type: object
type: string
description: multipartFile
format: binary
type: string
description: multipartFile
format: binary
- example: http://example.com/examples/example.yang
+ example: 'https://github.com/onap/cps/blob/master/cps-service/src/test/resources/bookstore.yang'
ModuleReferences:
type: object
ModuleReferences:
type: object
properties:
name:
type: string
properties:
name:
type: string
- example: module_reference_name
+ example: my-module-reference-name
- example: module_reference_namespace
+ example: my-module-reference-namespace
- example: module_reference_revision
+ example: my-module-reference-revision
SchemaSetDetails:
type: object
SchemaSetDetails:
type: object
properties:
dataspaceName:
type: string
properties:
dataspaceName:
type: string
moduleReferences:
type: array
items:
$ref: '#/components/schemas/ModuleReferences'
name:
type: string
moduleReferences:
type: array
items:
$ref: '#/components/schemas/ModuleReferences'
name:
type: string
+ example: my-schema-set
+
+ examples:
+ dataSampleRequest:
+ value:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 01
+ name: SciFi
+ - code: 02
+ name: kids
+
+ dataSampleResponse:
+ summary: The data node returned does not include the root node. This is being investigated as a part of CPS-461
+ value:
+ bookstore-name: Chapters
+ categories:
+ - code: 01
+ name: SciFi
+ - code: 02
+ name: kids
parameters:
dataspaceNameInQuery:
parameters:
dataspaceNameInQuery:
required: true
schema:
type: string
required: true
schema:
type: string
dataspaceNameInPath:
name: dataspace-name
in: path
dataspaceNameInPath:
name: dataspace-name
in: path
required: true
schema:
type: string
required: true
schema:
type: string
anchorNameInPath:
name: anchor-name
in: path
anchorNameInPath:
name: anchor-name
in: path
required: true
schema:
type: string
required: true
schema:
type: string
schemaSetNameInQuery:
name: schema-set-name
in: query
schemaSetNameInQuery:
name: schema-set-name
in: query
required: true
schema:
type: string
required: true
schema:
type: string
schemaSetNameInPath:
name: schema-set-name
in: path
schemaSetNameInPath:
name: schema-set-name
in: path
required: true
schema:
type: string
required: true
schema:
type: string
anchorNameInQuery:
name: anchor-name
in: query
anchorNameInQuery:
name: anchor-name
in: query
required: true
schema:
type: string
required: true
schema:
type: string
xpathInQuery:
name: xpath
in: query
xpathInQuery:
name: xpath
in: query
+ description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
required: false
schema:
type: string
default: /
required: false
schema:
type: string
default: /
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: /shops/bookstore/categories[@code=1]
requiredXpathInQuery:
name: xpath
in: query
requiredXpathInQuery:
name: xpath
in: query
+ description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
required: true
schema:
type: string
required: true
schema:
type: string
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: /shops/bookstore/categories[@code=1]
cpsPathInQuery:
name: cps-path
in: query
cpsPathInQuery:
name: cps-path
in: query
+ description: For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
required: false
schema:
type: string
default: /
required: false
schema:
type: string
default: /
+ examples:
+ container cps path:
+ value: //bookstore
+ list attributes cps path:
+ value: //categories[@code=1]
includeDescendantsOptionInQuery:
name: include-descendants
in: query
includeDescendantsOptionInQuery:
name: include-descendants
in: query
schema:
type: boolean
default: false
schema:
type: boolean
default: false
observedTimestampInQuery:
name: observed-timestamp
in: query
observedTimestampInQuery:
name: observed-timestamp
in: query
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 404
+ message: Resource Not Found
+ details: The requested resource is not found
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 401
+ message: Unauthorized request
+ details: This request is unauthorized
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 403
+ message: Request Forbidden
+ details: This request is forbidden
BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 400
+ message: Bad Request
+ details: The provided request is not valid
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 409
+ message: Conflicting request
+ details: The request cannot be processed as the resource is in use.
Ok:
description: OK
content:
application/json:
schema:
type: object
Ok:
description: OK
content:
application/json:
schema:
type: object
- example: { "key": "value" }
+ examples:
+ dataSampleResponse:
+ value: ""
Created:
description: Created
content:
text/plain:
schema:
type: string
Created:
description: Created
content:
text/plain:
schema:
type: string
NoContent:
description: No Content
content: {}
NoContent:
description: No Content
content: {}
application/json:
schema:
type: object
application/json:
schema:
type: object
- example: { "child": my_child,"leafList": "leafListElement1, leafListElement2", "leaf": my_leaf }
+ examples:
+ dataSampleResponse:
+ $ref: 'components.yml#/components/examples/dataSampleResponse'
'400':
$ref: 'components.yml#/components/responses/BadRequest'
'401':
'400':
$ref: 'components.yml#/components/responses/BadRequest'
'401':
content:
application/json:
schema:
content:
application/json:
schema:
+ type: object
+ examples:
+ dataSampleRequest:
+ $ref: 'components.yml#/components/examples/dataSampleRequest'
responses:
'201':
$ref: 'components.yml#/components/responses/Created'
responses:
'201':
$ref: 'components.yml#/components/responses/Created'
content:
application/json:
schema:
content:
application/json:
schema:
+ type: object
+ examples:
+ dataSampleRequest:
+ $ref: 'components.yml#/components/examples/dataSampleRequest'
- $ref: 'components.yml#/components/responses/Created'
+ $ref: 'components.yml#/components/responses/Ok'
'400':
$ref: 'components.yml#/components/responses/BadRequest'
'401':
'400':
$ref: 'components.yml#/components/responses/BadRequest'
'401':
content:
application/json:
schema:
content:
application/json:
schema:
+ type: object
+ examples:
+ dataSampleRequest:
+ $ref: 'components.yml#/components/examples/dataSampleRequest'
responses:
'201':
$ref: 'components.yml#/components/responses/Created'
responses:
'201':
$ref: 'components.yml#/components/responses/Created'
content:
application/json:
schema:
content:
application/json:
schema:
+ type: object
+ examples:
+ dataSampleRequest:
+ $ref: 'components.yml#/components/examples/dataSampleRequest'
responses:
'200':
$ref: 'components.yml#/components/responses/Ok'
responses:
'200':
$ref: 'components.yml#/components/responses/Ok'
content:
application/json:
schema:
content:
application/json:
schema:
+ type: object
+ examples:
+ dataSampleRequest:
+ $ref: 'components.yml#/components/examples/dataSampleRequest'
responses:
'200':
$ref: 'components.yml#/components/responses/Ok'
responses:
'200':
$ref: 'components.yml#/components/responses/Ok'
- $ref: 'components.yml#/components/parameters/includeDescendantsOptionInQuery'
responses:
'200':
- $ref: 'components.yml#/components/parameters/includeDescendantsOptionInQuery'
responses:
'200':
- $ref: 'components.yml#/components/responses/Ok'
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSampleResponse:
+ $ref: 'components.yml#/components/examples/dataSampleResponse'
'400':
$ref: 'components.yml#/components/responses/BadRequest'
'401':
'400':
$ref: 'components.yml#/components/responses/BadRequest'
'401':
@Override
public ResponseEntity<String> createNode(final String dataspaceName, final String anchorName,
@Override
public ResponseEntity<String> createNode(final String dataspaceName, final String anchorName,
- final String jsonData, final String parentNodeXpath, final String observedTimestamp) {
+ final Object jsonData, final String parentNodeXpath, final String observedTimestamp) {
if (isRootXpath(parentNodeXpath)) {
if (isRootXpath(parentNodeXpath)) {
- cpsDataService.saveData(dataspaceName, anchorName, jsonData, toOffsetDateTime(observedTimestamp));
+ cpsDataService.saveData(dataspaceName, anchorName, jsonData.toString(),
+ toOffsetDateTime(observedTimestamp));
- cpsDataService.saveData(dataspaceName, anchorName, parentNodeXpath, jsonData,
+ cpsDataService.saveData(dataspaceName, anchorName, parentNodeXpath, jsonData.toString(),
toOffsetDateTime(observedTimestamp));
}
return new ResponseEntity<>(HttpStatus.CREATED);
toOffsetDateTime(observedTimestamp));
}
return new ResponseEntity<>(HttpStatus.CREATED);
@Override
public ResponseEntity<Void> deleteDataNode(final String dataspaceName, final String anchorName,
@Override
public ResponseEntity<Void> deleteDataNode(final String dataspaceName, final String anchorName,
- final String xpath, final String observedTimestamp) {
+ final String xpath, final String observedTimestamp) {
cpsDataService.deleteDataNode(dataspaceName, anchorName, xpath,
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
cpsDataService.deleteDataNode(dataspaceName, anchorName, xpath,
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
@Override
public ResponseEntity<String> addListElements(final String parentNodeXpath,
@Override
public ResponseEntity<String> addListElements(final String parentNodeXpath,
- final String dataspaceName, final String anchorName, final String jsonData, final String observedTimestamp) {
- cpsDataService.saveListElements(dataspaceName, anchorName, parentNodeXpath, jsonData,
+ final String dataspaceName, final String anchorName, final Object jsonData, final String observedTimestamp) {
+ cpsDataService.saveListElements(dataspaceName, anchorName, parentNodeXpath, jsonData.toString(),
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.CREATED);
}
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.CREATED);
}
@Override
public ResponseEntity<Object> updateNodeLeaves(final String dataspaceName,
@Override
public ResponseEntity<Object> updateNodeLeaves(final String dataspaceName,
- final String anchorName, final String jsonData, final String parentNodeXpath, final String observedTimestamp) {
- cpsDataService.updateNodeLeaves(dataspaceName, anchorName, parentNodeXpath, jsonData,
+ final String anchorName, final Object jsonData, final String parentNodeXpath, final String observedTimestamp) {
+ cpsDataService.updateNodeLeaves(dataspaceName, anchorName, parentNodeXpath, jsonData.toString(),
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.OK);
}
@Override
public ResponseEntity<Object> replaceNode(final String dataspaceName, final String anchorName,
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.OK);
}
@Override
public ResponseEntity<Object> replaceNode(final String dataspaceName, final String anchorName,
- final String jsonData, final String parentNodeXpath, final String observedTimestamp) {
+ final Object jsonData, final String parentNodeXpath, final String observedTimestamp) {
- .replaceNodeTree(dataspaceName, anchorName, parentNodeXpath, jsonData, toOffsetDateTime(observedTimestamp));
+ .replaceNodeTree(dataspaceName, anchorName, parentNodeXpath, jsonData.toString(),
+ toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.OK);
}
@Override
return new ResponseEntity<>(HttpStatus.OK);
}
@Override
- public ResponseEntity<String> replaceListContent(final String parentNodeXpath,
- final String dataspaceName, final String anchorName, final String jsonData,
+ public ResponseEntity<Object> replaceListContent(final String parentNodeXpath,
+ final String dataspaceName, final String anchorName, final Object jsonData,
final String observedTimestamp) {
final String observedTimestamp) {
- cpsDataService.replaceListContent(dataspaceName, anchorName, parentNodeXpath, jsonData,
+ cpsDataService.replaceListContent(dataspaceName, anchorName, parentNodeXpath, jsonData.toString(),
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.OK);
}
toOffsetDateTime(observedTimestamp));
return new ResponseEntity<>(HttpStatus.OK);
}
def dataspaceName = 'my_dataspace'
def anchorName = 'my_anchor'
def noTimestamp = null
def dataspaceName = 'my_dataspace'
def anchorName = 'my_anchor'
def noTimestamp = null
+ def jsonString = '{"some-key" : "some-value"}'
+ def jsonObject
@Shared
static DataNode dataNodeWithLeavesNoChildren = new DataNodeBuilder().withXpath('/xpath')
@Shared
static DataNode dataNodeWithLeavesNoChildren = new DataNodeBuilder().withXpath('/xpath')
def setup() {
dataNodeBaseEndpoint = "$basePath/v1/dataspaces/$dataspaceName"
def setup() {
dataNodeBaseEndpoint = "$basePath/v1/dataspaces/$dataspaceName"
+ jsonObject = groovy.json.JsonOutput.toJson(jsonString);
}
def 'Create a node: #scenario.'() {
}
def 'Create a node: #scenario.'() {
- given: 'some json to create a data node'
+ given: 'endpoint to create a node'
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
- def json = 'some json (this is not validated)'
when: 'post is invoked with datanode endpoint and json'
def response =
mvc.perform(
post(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', parentNodeXpath)
when: 'post is invoked with datanode endpoint and json'
def response =
mvc.perform(
post(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', parentNodeXpath)
).andReturn().response
then: 'a created response is returned'
response.status == HttpStatus.CREATED.value()
then: 'the java API was called with the correct parameters'
).andReturn().response
then: 'a created response is returned'
response.status == HttpStatus.CREATED.value()
then: 'the java API was called with the correct parameters'
- 1 * mockCpsDataService.saveData(dataspaceName, anchorName, json, noTimestamp)
+ 1 * mockCpsDataService.saveData(dataspaceName, anchorName, jsonString, noTimestamp)
where: 'following xpath parameters are are used'
scenario | parentNodeXpath
'no xpath parameter' | ''
where: 'following xpath parameters are are used'
scenario | parentNodeXpath
'no xpath parameter' | ''
}
def 'Create a node with observed-timestamp'() {
}
def 'Create a node with observed-timestamp'() {
- given: 'some json to create a data node'
+ given: 'endpoint to create a node'
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
- def json = 'some json (this is not validated)'
when: 'post is invoked with datanode endpoint and json'
def response =
mvc.perform(
when: 'post is invoked with datanode endpoint and json'
def response =
mvc.perform(
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', '')
.param('observed-timestamp', observedTimestamp)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', '')
.param('observed-timestamp', observedTimestamp)
).andReturn().response
then: 'a created response is returned'
response.status == expectedHttpStatus.value()
then: 'the java API was called with the correct parameters'
).andReturn().response
then: 'a created response is returned'
response.status == expectedHttpStatus.value()
then: 'the java API was called with the correct parameters'
- expectedApiCount * mockCpsDataService.saveData(dataspaceName, anchorName, json,
+ expectedApiCount * mockCpsDataService.saveData(dataspaceName, anchorName, jsonString,
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
where:
scenario | observedTimestamp || expectedApiCount | expectedHttpStatus
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
where:
scenario | observedTimestamp || expectedApiCount | expectedHttpStatus
}
def 'Create a child node'() {
}
def 'Create a child node'() {
- given: 'some json to create a data node'
+ given: 'endpoint to create a node'
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
- def json = 'some json (this is not validated)'
and: 'parent node xpath'
def parentNodeXpath = 'some xpath'
when: 'post is invoked with datanode endpoint and json'
def postRequestBuilder = post(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', parentNodeXpath)
and: 'parent node xpath'
def parentNodeXpath = 'some xpath'
when: 'post is invoked with datanode endpoint and json'
def postRequestBuilder = post(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', parentNodeXpath)
if (observedTimestamp != null)
postRequestBuilder.param('observed-timestamp', observedTimestamp)
def response =
if (observedTimestamp != null)
postRequestBuilder.param('observed-timestamp', observedTimestamp)
def response =
then: 'a created response is returned'
response.status == HttpStatus.CREATED.value()
then: 'the java API was called with the correct parameters'
then: 'a created response is returned'
response.status == HttpStatus.CREATED.value()
then: 'the java API was called with the correct parameters'
- 1 * mockCpsDataService.saveData(dataspaceName, anchorName, parentNodeXpath, json,
+ 1 * mockCpsDataService.saveData(dataspaceName, anchorName, parentNodeXpath, jsonString,
DateTimeUtility.toOffsetDateTime(observedTimestamp))
where:
scenario | observedTimestamp
DateTimeUtility.toOffsetDateTime(observedTimestamp))
where:
scenario | observedTimestamp
}
def 'Save list elements #scenario.'() {
}
def 'Save list elements #scenario.'() {
- given: 'parent node xpath and json data inputs'
+ given: 'parent node xpath '
def parentNodeXpath = 'parent node xpath'
def parentNodeXpath = 'parent node xpath'
- def jsonData = 'json data'
when: 'list-node endpoint is invoked with post (create) operation'
def postRequestBuilder = post("$dataNodeBaseEndpoint/anchors/$anchorName/list-nodes")
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', parentNodeXpath)
when: 'list-node endpoint is invoked with post (create) operation'
def postRequestBuilder = post("$dataNodeBaseEndpoint/anchors/$anchorName/list-nodes")
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', parentNodeXpath)
if (observedTimestamp != null)
postRequestBuilder.param('observed-timestamp', observedTimestamp)
def response = mvc.perform(postRequestBuilder).andReturn().response
then: 'a created response is returned'
response.status == expectedHttpStatus.value()
then: 'the java API was called with the correct parameters'
if (observedTimestamp != null)
postRequestBuilder.param('observed-timestamp', observedTimestamp)
def response = mvc.perform(postRequestBuilder).andReturn().response
then: 'a created response is returned'
response.status == expectedHttpStatus.value()
then: 'the java API was called with the correct parameters'
- expectedApiCount * mockCpsDataService.saveListElements(dataspaceName, anchorName, parentNodeXpath, jsonData,
+ expectedApiCount * mockCpsDataService.saveListElements(dataspaceName, anchorName, parentNodeXpath, jsonString,
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
where:
scenario | observedTimestamp || expectedApiCount | expectedHttpStatus
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
where:
scenario | observedTimestamp || expectedApiCount | expectedHttpStatus
}
def 'Update data node leaves: #scenario.'() {
}
def 'Update data node leaves: #scenario.'() {
- given: 'json data'
- def jsonData = 'json data'
+ given: 'endpoint to update a node '
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'patch request is performed'
def response =
mvc.perform(
patch(endpoint)
.contentType(MediaType.APPLICATION_JSON)
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'patch request is performed'
def response =
mvc.perform(
patch(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', inputXpath)
).andReturn().response
then: 'the service method is invoked with expected parameters'
.param('xpath', inputXpath)
).andReturn().response
then: 'the service method is invoked with expected parameters'
- 1 * mockCpsDataService.updateNodeLeaves(dataspaceName, anchorName, xpathServiceParameter, jsonData, null)
+ 1 * mockCpsDataService.updateNodeLeaves(dataspaceName, anchorName, xpathServiceParameter, jsonString, null)
and: 'response status indicates success'
response.status == HttpStatus.OK.value()
where:
and: 'response status indicates success'
response.status == HttpStatus.OK.value()
where:
}
def 'Update data node leaves with observedTimestamp'() {
}
def 'Update data node leaves with observedTimestamp'() {
- given: 'json data'
- def jsonData = 'json data'
+ given: 'endpoint to update a node leaves '
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'patch request is performed'
def response =
mvc.perform(
patch(endpoint)
.contentType(MediaType.APPLICATION_JSON)
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'patch request is performed'
def response =
mvc.perform(
patch(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', '/')
.param('observed-timestamp', observedTimestamp)
).andReturn().response
then: 'the service method is invoked with expected parameters'
.param('xpath', '/')
.param('observed-timestamp', observedTimestamp)
).andReturn().response
then: 'the service method is invoked with expected parameters'
- expectedApiCount * mockCpsDataService.updateNodeLeaves(dataspaceName, anchorName, '/', jsonData,
+ expectedApiCount * mockCpsDataService.updateNodeLeaves(dataspaceName, anchorName, '/', jsonString,
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
and: 'response status indicates success'
response.status == expectedHttpStatus.value()
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
and: 'response status indicates success'
response.status == expectedHttpStatus.value()
}
def 'Replace data node tree: #scenario.'() {
}
def 'Replace data node tree: #scenario.'() {
- given: 'json data'
- def jsonData = 'json data'
+ given: 'endpoint to replace node'
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'put request is performed'
def response =
mvc.perform(
put(endpoint)
.contentType(MediaType.APPLICATION_JSON)
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'put request is performed'
def response =
mvc.perform(
put(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', inputXpath))
.andReturn().response
then: 'the service method is invoked with expected parameters'
.param('xpath', inputXpath))
.andReturn().response
then: 'the service method is invoked with expected parameters'
- 1 * mockCpsDataService.replaceNodeTree(dataspaceName, anchorName, xpathServiceParameter, jsonData, noTimestamp)
+ 1 * mockCpsDataService.replaceNodeTree(dataspaceName, anchorName, xpathServiceParameter, jsonString, noTimestamp)
and: 'response status indicates success'
response.status == HttpStatus.OK.value()
where:
and: 'response status indicates success'
response.status == HttpStatus.OK.value()
where:
}
def 'Replace data node tree with observedTimestamp.'() {
}
def 'Replace data node tree with observedTimestamp.'() {
- given: 'json data'
- def jsonData = 'json data'
+ given: 'endpoint to replace node'
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'put request is performed'
def response =
mvc.perform(
put(endpoint)
.contentType(MediaType.APPLICATION_JSON)
def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes"
when: 'put request is performed'
def response =
mvc.perform(
put(endpoint)
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', '')
.param('observed-timestamp', observedTimestamp))
.andReturn().response
then: 'the service method is invoked with expected parameters'
.param('xpath', '')
.param('observed-timestamp', observedTimestamp))
.andReturn().response
then: 'the service method is invoked with expected parameters'
- expectedApiCount * mockCpsDataService.replaceNodeTree(dataspaceName, anchorName, '/', jsonData,
+ expectedApiCount * mockCpsDataService.replaceNodeTree(dataspaceName, anchorName, '/', jsonString,
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
and: 'response status indicates success'
response.status == expectedHttpStatus.value()
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
and: 'response status indicates success'
response.status == expectedHttpStatus.value()
def putRequestBuilder = put("$dataNodeBaseEndpoint/anchors/$anchorName/list-nodes")
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', 'parent xpath')
def putRequestBuilder = put("$dataNodeBaseEndpoint/anchors/$anchorName/list-nodes")
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', 'parent xpath')
if (observedTimestamp != null)
putRequestBuilder.param('observed-timestamp', observedTimestamp)
def response = mvc.perform(putRequestBuilder).andReturn().response
then: 'a success response is returned'
response.status == expectedHttpStatus.value()
and: 'the java API was called with the correct parameters'
if (observedTimestamp != null)
putRequestBuilder.param('observed-timestamp', observedTimestamp)
def response = mvc.perform(putRequestBuilder).andReturn().response
then: 'a success response is returned'
response.status == expectedHttpStatus.value()
and: 'the java API was called with the correct parameters'
- expectedApiCount * mockCpsDataService.replaceListContent(dataspaceName, anchorName, 'parent xpath', 'json data',
+ expectedApiCount * mockCpsDataService.replaceListContent(dataspaceName, anchorName, 'parent xpath', jsonString,
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
where:
scenario | observedTimestamp || expectedApiCount | expectedHttpStatus
{ it == DateTimeUtility.toOffsetDateTime(observedTimestamp) })
where:
scenario | observedTimestamp || expectedApiCount | expectedHttpStatus
post("$basePath/v1/dataspaces/dataspace-name/anchors/anchor-name/nodes")
.contentType(MediaType.APPLICATION_JSON)
.param('xpath', 'parent node xpath')
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()
).andReturn().response
then: 'response code indicates bad input parameters'
response.status == BAD_REQUEST.value()