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

URIValid 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

ReturnsHTTP codeBodyDetails
Success200-OK
When the submitted value exists
InvalidValue404-NotFound{ "VF-Module network type is invalid" }When the submitted value is not in the list
NotAcceptable406-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>
  • No labels