The Kony Mock Data adapter capability helps you to continue to develop apps when the back-end services that an app connects to are not ready to be leveraged.
There are several instances in an app development life-cycle when back-end systems and app development happen in parallel and only the contract or interface for the app to communicate to a backend is finalized. In this scenario, you can create a response template to stub the response that is expected from the actual backend. The response template can have hard-coded values or use pre-built functions such as concat, firstName, lastName, gender, random, email, and phone, and options to randomize the output within the required criteria.
For example, in the scenario mentioned earlier, a Kony app developer can create the service based on a stub template. The stub response template can be set for each operation of a service. The app developers can continue to develop apps based on a sample back-end response from the stub template.
Important: Services built with Mock Data adapter will always give you mock data and cannot be switch between live backend and mock data like Stub backend response feature.
To configure your Mock Data Adapter, provide the following details:
Field | Description |
---|---|
Custom Code |
Custom Code enables you to specify dependent JAR. Important: Make sure that you upload a custom JAR file that is built on the same JDK version used for installing Kony Fabric Integration. You can download the uploaded jars to your local system. |
Throttling |
API throttling enables you to limit the number of request calls within a minute. If an API exceeds the throttling limit, it will not return the service response.
|
Note: All options in the Advanced section are optional.
In the Description field, provide a suitable description for the service.
The Operations List tab appears only after the service definition is saved.
Note: Click Operations List tab > Configure Operation. The Configured Operations list appears.
To create an operation, follow these steps:
Note: To use an existing integration service, refer to How to Use an Existing Integration Service.
In the Operation Modal tab, follow these steps:
This tab contains the request input, response output, and advanced sections. The input values are data types, scope, and format types. By default, the system will display the Request Input tab.
Note: You can add an entry by clicking the Add button if entries for the input and the output tabs do not exist.
You can also delete an entry. Select the check box for an entry, and then click the Delete button.
Field | Description |
---|---|
Name | It is prepopulated with the operation name. You can change the name if required. |
Operation Security Level |
It specifies how a client must authenticate to invoke this operation. Select one of the following security operations in the Operation Security Level field.
|
Configure your Mock data template in the Mock Data JSON Template text field. By default this field is enabled with a sample mock response template.
Note: For more information on Pre-built functions supported in Mock Data template, refer Mock Data Template and Supported Pre-built functions in Mock Data
Field | Description |
---|---|
Custom Code Invocation - Preprocessor and Postprocessor (for Java and JavaScript) | You can add pre and post processing logic to services to modify the request inputs. When you test, the services details of various stages in the service execution are presented to you for better debugging. All options in the Advanced section are optional. For more details, refer to Preprocessor and Postprocessor. |
Properties |
Additional configuration properties (timeout, cachable, unescape embedded xml in response, response encoding, number of connection retries allows you to configure service call time out cache response |
Front End API | It allows you map your endpoint/back-end URL of an operation to a front-end URL. |
Server Events | Using Server Events you can configure this service to trigger or process server side events. For detailed information, refer Server Events. |
Note: All options in the Advanced section are optional.
Integration services accept only form-url-encoded
inputs for all the input parameters provided in the service input parameters (request input).
Note: - To make duplicate entries, select the check box for the entry, click Copy, and then click Paste.
- To delete an entry, select the check box for an entry, and then click the Delete button.
Field | Description |
---|---|
Name | It Contains a Unique Identifier. Change the name if required. |
Value | Select Request or Session. It is set to Request by default.
|
TEST VALUE | Enter a value. A test value is used for testing the service. |
DEFAULT VALUE | Enter the value, if required. The default value will be used if the test value is empty. |
Datatype | Select one of the following data types.
|
Encode | Select the check box to enable encoding of an input parameter. For example, the name New York Times would be encoded as New%20York%20Times when the encoding is set to True. The encoding must also adhere to the HTML URL encoding standards. |
Description | Provide a suitable description. |
Note: - To make duplicate entries, select the check box for the entry, click Copy, and then click Paste.
- To delete an entry, select the check box for an entry, and then click the Delete button.
Field | Description |
---|---|
Name | It Contains a Unique Identifier. Change the name if required. |
Value | Select Request or Session. It is set to Request by default. By default, this field is set to Request. Five different options are available in Kony Fabric under Request Input > Headers > VALUE during configuration of any operation. When you start editing this field, dependent identity services are auto populated. These options primarily determine the source of the value of the header.
|
TEST VALUE | Enter a value. A test value is used for testing the service. |
DEFAULT VALUE | Enter the value, if required. The default value will be used if the test value is empty. |
Datatype | Select one of the following data types.
|
Description | Provide a suitable description. |
To forward the response to the client as it is, select the Enable pass-through input body check box. For more details on API Proxy service, refer to How to Enable Pass-through Proxy for Operations.
Note: If you define parameters inside a record as the session, the session scope will not get reflected for the parameters.
If you click Cancel, the Edit Service Parameters window will close without saving any information.
Note: You can view the service in the Data Panel feature of Kony Visualizer. By using the Data Panel, you can link back-end data services to your application UI elements seamlessly with low-code to no code. For more information on Data Panel, click here.
Note: The X-Kony-Stub-Response header
as true
in the back-end response indicates that the response is generated from the Mock Data template.
You can access input parameters in a Stub template by using the {{requestBody("<request_param_name>")}}
function. Additionally, you can access headers by using the {{requestHeader("<header_name>")}}
function.
For example, you want to send the testUser
request input parameter to the Stub template and the value of the parameter is defined in the Input Parameters section of Console. You can access the input parameter in the stub template as "inputtest": "{{requestBody("testUser")}}"
.
The following sample Stub template has been configured with the testUser request input parameter.
[ '{{repeat(30,40)}}', { "locationID": "{{index()}}", "company": "{{toUpperCase(company())}}", "phone": "+1 {{phone()}}", "address": "{{integer(100, 999)}} {{street()}}, {{city()}}, {{state()}}, {{integer(100, 10000)}}",
"
"latitude": "{{float(-90.000001, 90)}}",inputtest": "{{requestBody("testUser")}}"
,
"longitude": "{{float(-180.000001, 180)}}", "office":"{{random("HR Head Office","Sales Head Office","Marketing Head Office","Development Center")}}" } ]
Note: Kony functions for request input and header are as follows:
- To access any header with name, requestHeader
: Syntax: {{requestHeader("<header_name>")}}
- To access a request parameter, requestBody
: Syntax: {{requestBody("<request_param_name>")}}
The back-end stubbed response specifies a Mock Data template for stubbing and returning dynamically-generated mock data.
The following table details a sample Mock Data response template and a back-end response that is generated based on the Mock Data template.
Sample Mock Data Template (JSON) |
Sample Mock Data Response |
---|---|
[ '{{repeat(1,2)}}', { "locationID": "{{index()}}", "company": "{{toUpperCase(company())}}", "phone": "+1 {{phone()}}", "address": "{{integer(100, 999)}} {{street()}}, {{city()}}, {{state()}}, {{integer(100, 10000)}}", "latitude": "{{float(-90.000001, 90)}}", "longitude": "{{float(-180.000001, 180)}}", "office":"{{random("HR Head Office","Sales Head Office","Marketing Head Office","Development Center")}}" } ] |
[{ "locationID": "0", "company": "RODEOMAD", "phone": "+1 371-222-9269", "address": "671 Division Place, Grill, South Dakota, 9220", "latitude": "-0.29528046", "longitude": "159.72824", "office": "Marketing Head Office" }, |
The following list of the sample pre-built functions are supported in the Mock Data response template:
Description | repeat function repeats JSON or XML objects randomly based on the value range provided in the syntax. This is typically set at the beginning of a collection to repeat number of times as required. For example, it can be set to get a random number of transactions for an account for a set format by setting repeat function at the head of the collection as shown in the default template above. |
Syntax | '{{repeat (<lower_value>, <upper_value>)}}'
|
Sample Mock Data template | '{{repeat(30,40)}}'
|
Description | repeat function repeats JSON or XML objects randomly based on the fixed number provided in the syntax. This is typically set at the beginning of a collection to repeat number of times as required. For example, it can be set to get a random number of transactions for an account for a set format by setting repeat function at the head of the collection as shown in the default template above. |
Syntax | '{{repeat (<number>)}}'
|
Sample Mock Data template | '{{repeat(2)}}'
|
Description | Generates a random integer in the specified range. |
Syntax |
|
Sample Mock Data template | "productRating":"{{integer(0,5)}}"
|
Sample Mock Data response |
|
Description |
Generates a random 32-bit floating point number in the specified range. |
Syntax |
|
Sample Mock Data template | "floatrange": "{{float(3,9)}}"
|
Sample Mock Data response |
|
Description |
Generates a random 32-bit floating point number in the specified range of floating point numbers, with an option to round of the number of decimal places. |
Syntax |
|
Sample Mock Data template | "floatrange": "{{float(3,9,"%.2f")}}"
|
Sample Mock Data response |
|
Description | Generates a random 64-bit double number in the specified range. |
Syntax |
|
Sample Mock Data template | "double": "{{double(2,8)}}"
|
Sample Mock Data response |
|
Description | Generates a random long number in the specified range. |
Syntax |
|
Sample Mock Data template | "network":"{{long(200,500)}}"
|
Sample Mock Data response |
|
Description |
Generates a random GUID. |
Syntax |
|
Sample Mock Data template | "objects": "{{uuid()}}"
|
Sample Mock Data response |
|
Description |
Generates a random 16 bytes hexadecimal string. |
Syntax |
|
Sample Mock Data template |
|
Sample Mock Data response |
|
Description |
Generates a random hexadecimal string according to the specified size in bytes. |
Syntax |
|
Sample Mock Data template |
|
Sample Mock Data response |
|
Description |
Generates a hexadecimal string of size 12 bytes. |
Syntax |
|
Sample Mock Data template |
|
Sample Mock Data response |
|
Description |
Generates a random Boolean value, either True or False. |
Syntax |
|
Sample Mock Data template |
|
Sample Mock Data response |
|
Description |
Generates a random Boolean value, either True or False as per the given probability. |
Syntax |
|
Sample Mock Data template | "stockAvailable": "{{bool(0.9)}}"
|
Sample Mock Data response | "stockAvailable": "true"
|
Description | Generates an incrementing index integer for each record with a specific starting point. |
Syntax | "{{index()}}"
|
Sample Mock Data template | "locationID": "{{index()}}"
|
Sample Mock Data response | "locationID": "0"
|
Description | Generates an incrementing index integer for each record based on the name of the index. |
Syntax | "{{index("index-name")}}"
|
Sample Mock Data template | "index-number": "{{index("abc")}}"
|
Sample Mock Data response | "index-number": "42"
|
Description |
Generates an incrementing index integer for each record with a specific starting point. |
Syntax | "{{index(78)}"
|
Sample Mock Data template | "index-number": "{{index(78)}}"
|
Sample Mock Data response | "index-number": "4248"
|
Description | Generates an incrementing index integer for each record based on both a specific starting point and name of the index. |
Syntax | "
|
Sample Mock Data template | "index-name-number": "{{index("abc",78)}}"
|
Sample Mock Data response | "index-name-number": "626"
|
Description | Generates a random dummy text. User must specify the count of words required. |
Syntax | "
|
Sample Mock Data template | "productDescription": "{{lorem(5, "words")}}"
|
Sample Mock Data response | "productDescription": "lorem ipsum porta sit curabitur"
|
Description |
Generates a random dummy paragraph. User must specify the count of paragraphs required. |
Syntax | "{{lorem(count,"paragraphs")}}"
|
Sample Mock Data template | "about": "{{lorem(2, "paragraphs")}}"
|
Sample Mock Data response | "about": " Lorem ipsum eros amet accumsan non quisque ut molestie nullam sagittis tincidunt.Lorem ipsum quis aliquam nostra.
|
Description |
Generates a random phone number. The phone number is preceded by For example, for USA/Canada, the phone number format is |
Syntax | "{{phone()}}"
|
Sample Mock Data template | "phone": "+1 {{phone()}}"
|
Sample Mock Data response | "phone": "+1 371-222-9269"
|
Description |
Generates a random gender value, either male or female. |
Syntax | "{{gender()}}"
|
Sample Mock Data template | "gender": "{{gender()}}"
|
Sample Mock Data response | "gender": "female"
|
Description |
Generates the current date. |
Syntax | "{{date()}}"
|
Sample Mock Data template | "date": "{{date()}}"
|
Sample Mock Data response | "date": "Tue, 11 Sep 2018 10:55:44 GMT"
|
Description |
Generates the current date in the specified date format. |
Syntax | "{{date("java-simple-date-format")}}"
|
Sample Mock Data template | "date_format": "{{date("dd-MM-yyyy HH:mm:ss")}}"
|
Sample Mock Data response | "date_format": "11-09-2018 12:00:00"
|
Description |
Generates a random date in the specified range and specified format. Your date range input must be in this format: |
Syntax | "{{date("begin-date","end-date","java-simple-date-format"}}"
|
Sample Mock Data template |
|
Sample Mock Data response | "date_of_joining": "2015-12-22T22:00:33 +0000"
|
Description |
Generates a random date in the specified range of dates with default format. Your input must be in this format |
Syntax | "{{date("begin-date","end-date")}"
|
Sample Mock Data template |
|
Sample Mock Data response | "date_default_format": "Tue, 21 Jun 2016-06-21T19:26:18 +0000"
|
Description |
Generates the current timestamp (milliseconds, between the current time and midnight, January 1, 1970 UTC): |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "time": "1536662962710"
|
Description |
Generates the current timestamp (milliseconds, between the current time and midnight, January 1, 1970 UTC) between two dates with default format. Your input must be in this format |
Syntax | "{{timestamp("begin-date","end-date"}}"
|
Description |
Generates a random country name. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "country": "Montenegro"
|
Description |
Generates a JSON mapping with all country codes and country name. |
Syntax | "
|
Description |
Generates a JSON mapping with given country codes and country name. |
Syntax | "
|
Description |
Generates a random city. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "city": "Belva"
|
Description |
Generates a random state name. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "state": "Pennsylvania"
|
Description |
Generates a random company name. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "company": "Gorganic"
|
Description |
Generates a random last name. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "lastname": "Randolph"
|
Description |
Generates a random first name. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "firstname": "Mays"
|
Description |
Generates a random username based on the first initial of your random first name and random last name in lowercase. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "username": "nbarr"
|
Description |
Generate a random email address in the standard format. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "email": "irma.england@mazuda.com"
|
Description |
Generates a random email address with the specified domain name in the standard format. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "email": "wilson.allison@mydomain.com"
|
Description |
Generates a random social security number. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "ssn": "285-59-5039"
|
Description |
Generates a random ipv4 address. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "ipv4": "218.110.1.153"
|
Description |
Generates a random ipv6 address. |
Syntax | "
|
Sample Mock Data template |
|
Sample Mock Data response | "ipv6": "
|
Description |
Generates a random ipv6 address with all the alphabetical characters in uppercase. |
Syntax | "{{ipv6("upper")}}"
|
Description |
Generates a random ipv6 address with all the alphabetical characters in lowercase. |
Syntax | "{{ipv6("lower")}}"
|
Description |
Generates a string by concatenating all the strings given as inputs. |
Syntax | "{concat("A","B","C","D")}}"
|
Sample Mock Data template |
|
Sample Mock Data response | "id": "EMP2942"
|
Description |
Generates a substring from the given string and the starting position. |
Syntax | "{{substring("word",3)}}"
|
Sample Mock Data template |
|
Sample Mock Data response | "substring":"pleApps"
|
Description |
Generates a substring from the given string, the starting position, and the end position. |
Syntax | "{{substring("long word", 1, 6)}}"
|
Sample Mock Data template |
|
Sample Mock Data response | "substring":"ample"
|
Description |
random function provides string values to each record randomly based on the predefined sample string values provided while invoking the function. |
Syntax | "
|
Sample Mock Data template | "office":"{{random("HR Head Office","Sales Head Office","Marketing Head Office","Development Center")}}"
|
Sample Mock Data response | "office": "Marketing Head Office"
|
Description |
Generates a random string with alphabetic characters of length between 10 to 20 characters. |
Syntax | "
|
Sample Mock Data template | "alpha": "{{alpha()}}"
|
Sample Mock Data response | "alpha": "jFulYDTuFQBk"
|
Description |
Generates a random string with alphabetic characters and length in the given range. |
Syntax | "{{alpha(min,max)}}"
|
Sample Mock Data template | "alphaRange": "{{alpha(15,20)}}"
|
Sample Mock Data response | "alphaRange": "hTyLpLYMHGJkYrEB"
|
Description |
Generates a random string with alphabetic characters of given length. |
Syntax | "{{alpha(length)}}"
|
Sample Mock Data template | "alphaLength": "{{alpha(7)}}"
|
Sample Mock Data response | "alphaLength": "ZKziDST"
|
Description |
Generates a random string with alpha-numeric characters of length between 10 to 20 characters. |
Syntax | "{{alphaNumeric()}}"
|
Sample Mock Data template | "alphaNumeric": "{{alphaNumeric()}}"
|
Sample Mock Data response | "alphaNumeric": "hIrUkxDzdH4VIR86g6G"
|
Description |
Generates a random string with alpha-numeric characters of length in the specified range. |
Syntax | "{{alphaNumeric(min,max)}}"
|
Sample Mock Data template | "alphaNumericRange": "{{alphaNumeric(15,20)}}"
|
Sample Mock Data response | "alphaNumericRange": "k5BBh4U45o19vhaO4LQ"
|
Description |
Generates a random string with alpha-numeric characters of the given length. |
Syntax | "{{alphaNumeric(length)}}"
|
Sample Mock Data template | "alphaNumericLength": "{{alphaNumeric(7)}}"
|
Sample Mock Data response | "alphaNumericLength": "Zphdrag"
|
Description |
Converts the string value to lowercase letters. |
Syntax | "{{toLowerCase(company())}}"
|
Sample Mock Data template | "company": "{{toLowerCase(company())}}"
|
Sample Mock Data response | "company": "rodeomad"
|
Description |
Converts the string value to uppercase letters. |
Syntax | "{{toUpperCase(company())}}"
|
Sample Mock Data template | "company": "{{toUpperCase(company())}}"
|
Sample Mock Data response | "company": "RODEOMAD"
|
Description |
If you want to escape braces from within a function use a single escape character as seen in the example below: |
Syntax | "{{concat("\{", "test", "\}")}}
|
Description |
Mock Data service supports nesting functions as well. For example, if you wanted to create results that looked like dollar amounts, you can do the following: |
Syntax |
or something like this if you wanted a capitalized F or M:
|
Copyright © 2020 Kony, Inc. All rights reserved. |