To run the example project, clone the repo, and run pod install
from the Example directory first.
SwaggerAutomocker is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'SwaggerAutomocker'
Configure App Transport Security: Because the purpose of this mock server is only for mock environment, our server only supports http protocol, so to be able to run the mock server you need to disable App Transport Security by adding the key App Transport Security Settings to your Info.plist, with a sub-key where Allow Arbitrary Loads is set to Yes.
Config data generator:
var dataGenerator: DataGenerator {
let dataGenerator = DataGenerator()
dataGenerator.useFakeryDataGenerator = true
dataGenerator.distinctElementsInArray = true
dataGenerator.generateDummyDataLazily = true
dataGenerator.rootArrayElementCount = 3
dataGenerator.childArrayElementCount = 3
// DefaultDataConfigurator
dataGenerator.defaultDataConfigurator.dateTimeDefaultValue = "2021-01-01T17:32:28Z"
// ...
// FakeryDataConfigurator
dataGenerator.fakeryDataConfigurator.minInt = 0
dataGenerator.fakeryDataConfigurator.maxInt = 1000000
// ...
return dataGenerator
}
Start mock server from embedded swagger json file:
var mockServer: MockServer?
let swaggerJson = readJSONFromFile(fileName: "swagger")
if let swaggerJson = swaggerJson {
mockServer = MockServer(port: 8080,
concurrency: 50,
swaggerJson: swaggerJson,
dataGenerator: dataGenerator,
genDataSourceExtensionInConsole: true)
// Set genDataSourceExtensionInConsole to true, so the MockServerResponseDataSource extension will be printed automatically in the console log.
// You can copy it into your source code to save time implementing all the endpoints.
mockServer?.responseDataSource = self
mockServer?.start()
}
or from swagger json url:
var mockServer: MockServer?
let swaggerUrl = "https://mobileapp-fe-dev.swissmedical.net/aevis-app-backend-api/v3/api-docs"
mockServer = MockServer(port: 8080,
concurrency: 50,
swaggerUrl: swaggerUrl,
dataGenerator: dataGenerator,
genDataSourceExtensionInConsole: true)
// Set genDataSourceExtensionInConsole to true, so the MockServerResponseDataSource extension will be printed automatically in the console log.
// You can copy it into your source code to save time implementing all the endpoints.
mockServer?.responseDataSource = self
mockServer?.start()
Stop mock server:
mockServer?.stop()
Custom response for each request if needed via MockServerResponseDataSource protocol:
func mockServer(_ mockServer: MockServer, responseFor request: HTTPRequest, to endpoint: MockServerEndpoint, possibleResponses: [HTTPResponse]) -> HTTPResponse? {
// Pick one response from possibleResponses array
return possibleResponses.first(where: {$0.statusCode > 299})
// or customize your own response for each request depending on
// request.path, request.method, request.pathParams, request.queryItems
// request.body.jsonObject, request.body.jsonArray, request.body.stringArray, request.body.string
return HTTPResponse(statusCode: 409,
headers: ["X-Server-Message": "Conflict"],
body: "Email was used to sign up for another account.".utf8Data)
}
lngyeen, [email protected]
SwaggerAutomocker is available under the MIT license. See the LICENSE file for more info.