Data-Dictionary Mock Service

Here's an example of a simple SoapUI mock service to emulate a data-dictionary running on port 443.

Details about the API can be found in Integration with Data Dictionary.

Supported URIs

This mock service can handle the following queries

URI

Valid Values

URI

Valid Values

commonModelElements/instance~vfModuleNetworkType~1.0/validateInstance

"l3-network", "l3-network-other"

commonModelElements/attribute~networkType~1.0/validateInstance

"l3-network", "l3-network-other"



Possible results

Returns

HTTP code

Body

Details

Returns

HTTP code

Body

Details

Success

200-OK



When the submitted value exists

InvalidValue

404-NotFound

{ "VF-Module network type is invalid" }

When the submitted value is not in the list

NotAcceptable

406-NotAcceptable

{ "instance data missing or invalid" }

When request content is not valid

SoapUI Project

Save the following content into an xml file.  The file can then be imported into SoapUI or started with SoapUI's mockservicerunner utility.

<?xml version="1.0" encoding="UTF-8"?> <con:soapui-project id="11bcea31-958e-42a2-941c-aae9994035c6" activeEnvironment="Default" name="Data-Dictionary-MockService" resourceRoot="" soapui-version="5.2.1" xmlns:con="http://eviware.com/soapui/config"> <con:settings/> <con:restMockService id="b5abed92-a306-4901-a4d3-08fc8df0f7ce" port="443" path="/commonModelElements" host="dummy-host" name="MockService-commonModelElements" docroot=""> <con:settings/> <con:properties/> <con:restMockAction name="/instance~vfModuleNetworkType~1.0" method="POST" resourcePath="/instance~vfModuleNetworkType~1.0" id="38e636c9-417f-442a-be4d-72a7d9642315"> <con:settings/> <con:defaultResponse>NotAcceptable</con:defaultResponse> <con:dispatchStyle>SCRIPT</con:dispatchStyle> <con:dispatchPath>log.info "request body: ${mockRequest.getRequestContent()}" def requestBody = mockRequest.getRequestContent() if(requestBody == null || requestBody.isEmpty()) { log.error "Request body is missing" return 'NotAcceptable' } def content = new groovy.json.JsonSlurper().parseText(requestBody) if(content == null || content.isEmpty()) { log.error "Content missing" return 'NotAcceptable' } def validTypes = ['[l3-network]', '[l3-network-other]'] def type = content.instance.type.toString() if(!validTypes.contains(type)) { log.error "type value '$type' not in list $validTypes" return 'InvalidValue' } return 'Success'</con:dispatchPath> <con:response name="Success" id="49d480f2-0320-44c8-b20a-272a97e8fa64" httpResponseStatus="200" mediaType="application/json"> <con:settings/> <con:responseContent/> </con:response> <con:response name="InvalidValue" id="e4e045c3-59c4-4674-9dcf-c530d0a126bd" httpResponseStatus="404" mediaType="application/json"> <con:settings/> <con:responseContent>{ "VF-Module network type is invalid" }</con:responseContent> </con:response> <con:response name="NotAcceptable" id="2fb80ca5-7138-4d1b-89e0-23cdd2f22a4d" httpResponseStatus="406" mediaType="application/json"> <con:settings/> <con:responseContent>{ "instance data missing or invalid" }</con:responseContent> </con:response> </con:restMockAction> <con:restMockAction name="/attribute~networkType~1.0" method="POST" resourcePath="/attribute~networkType~1.0" id="fec546e4-2e7d-4f18-bbd3-cc4c7261be88"> <con:settings/> <con:defaultResponse>NotAcceptable</con:defaultResponse> <con:dispatchStyle>SCRIPT</con:dispatchStyle> <con:dispatchPath>log.info "request body: ${mockRequest.getRequestContent()}" def requestBody = mockRequest.getRequestContent() if(requestBody == null || requestBody.isEmpty()) { log.error "Request body is missing" return 'NotAcceptable' } def content = new groovy.json.JsonSlurper().parseText(requestBody) if(content == null || content.isEmpty()) { log.error "Content missing" return 'NotAcceptable' } def validTypes = ['l3-network', 'l3-network-other'] def type = content.instance.toString() if(!validTypes.contains(type)) { log.error "type value '$type' not in list $validTypes" return 'InvalidValue' } return 'Success'</con:dispatchPath> <con:response name="Success" id="f1da00ba-cbec-4e33-acb7-1dc5a3656776" httpResponseStatus="200" mediaType="application/json"> <con:settings/> <con:responseContent/> </con:response> <con:response name="InvalidValue" id="533b2a6f-8cbf-4dd1-954d-d2d67d3bbde2" httpResponseStatus="404" mediaType="application/json"> <con:settings/> <con:responseContent>{ "VF-Module network type is invalid" }</con:responseContent> </con:response> <con:response name="NotAcceptable" id="2f07c34f-b862-4338-b13b-d729f847dc86" httpResponseStatus="406" mediaType="application/json"> <con:settings/> <con:responseContent>{ "instance data missing or invalid" }</con:responseContent> </con:response> </con:restMockAction> </con:restMockService> <con:properties/> <con:wssContainer/> <con:oAuth2ProfileContainer/> <con:sensitiveInformation/> </con:soapui-project>