How to use from method of com.github.kittinunf.fuel.test.MockHelper class

Best Fuel code snippet using com.github.kittinunf.fuel.test.MockHelper.from

MockHelper.kt

Source:MockHelper.kt Github

copy

Full Screen

...25    }26    /**27     * The mock server for the current test run.28     *29     * Do not store this in a class variable as that will prohibit individual test cases from being30     *   correctly parallelised without copying the class, and you can't / should not rely on31     *   expected requests to be available across tests.32     *33     * @return [ClientAndServer]34     */35    fun server(): ClientAndServer = this.mockServer36    /**37     * Convenience method to request a request to its expected response38     *39     * @see request40     * @see response41     * @see reflect42     *43     * @example When you need different responses for the same request, you can reuse the request44     *   with multiple calls to this method:45     *46     *   val request = mock.request().withPath('/different-each-time')47     *   mock.chain(request, mock.response().withStatusCode(500))48     *   mock.chain(request, mock.response().withStatusCode(502))49     *   mock.chain(request, mock.response().withStatusCode(204))50     *51     *   // fetch('/different-each-time) => 50052     *   // fetch('/different-each-time) => 50253     *   // fetch('/different-each-time) => 20454     *55     * @param request [HttpRequest] the request56     * @param response [HttpResponse] the response57     * @param times [Times] times this can occur, defaults to once58     * @param server [ClientAndServer] the server to register on59     */60    fun chain(61        request: HttpRequest,62        response: HttpResponse,63        times: Times = Times.once(),64        server: ClientAndServer = server()65    ) {66        server.`when`(request, times).respond(response)67    }68    /**69     * @see chain(HttpRequest, HttpResponse, Times, ClientAndServer)70     */71    fun chain(72        request: HttpRequest,73        response: HttpTemplate,74        times: Times = Times.once(),75        server: ClientAndServer = server()76    ) {77        server.`when`(request, times).respond(response)78    }79    /**80     * Creates a new mock request.81     *82     * This method is introduced to keep the import out of test cases and to make it easy to replace83     *   the library for mocking requests.84     *85     * @example mock request for posting on a path86     *87     *   val request = mock.request().withMethod(Method.POST.value).withPath('/post-path')88     *89     * @return [HttpRequest]90     */91    fun request(): HttpRequest = HttpRequest.request()92    /**93     * Creates a new mock response.94     *95     * This method is introduced to keep the import out of test cases and to make it easy to replace96     *   the library for mocking responses.97     */98    fun response(): HttpResponse = HttpResponse.response()99    /**100     * Creates a new mock response template.101     *102     * @see REFLECT_TEMPLATE103     * @see reflect104     *105     * This method is introduced to keep the import out of test cases and to make it easy to replace106     *   the library for mocking requests.107     */108    fun responseTemplate(): HttpTemplate = HttpTemplate.template(HttpTemplate.TemplateType.JAVASCRIPT)109    /**110     * Creates a mock response that reflects what is coming in via the REFLECT_TEMPLATE template111     *112     * @see REFLECT_TEMPLATE113     *114     * This method is introduced to keep the import out of test cases and to make it easy to replace115     *   the library for mocking requests.116     */117    fun reflect(): HttpTemplate = responseTemplate().withTemplate(REFLECT_TEMPLATE)118    /**119     * Generates the full path for a request to the given path120     *121     * @param path [String] the relative path122     * @return [String] the full path123     */124    fun path(path: String): String = URL("http://localhost:${server().localPort}/$path").toString()125    fun securedPath(path: String): String = URL("https://localhost:${server().localPort}/$path").toString()126    companion object {127        const val REFLECT_TEMPLATE = """128            return {129                'statusCode': 200,130                'headers': {131                    'Date' : [ Date() ],132                    'Content-Type' : [ 'application/json' ],133                    'Cookie' : request.headers['cookie'] || []134                },135                'body': JSON.stringify(136                    {137                        method: request.method,138                        path: request.path,139                        query: request.queryStringParameters,140                        body: request.body,141                        headers: request.headers,142                        reflect: true,143                        userAgent: (request.headers['user-agent'] || request.headers['User-Agent'] || [])[0]                    }144                )145            };146        """147    }148}149data class MockReflected(150    val method: String,151    val path: String,152    val query: Parameters = listOf(),153    val body: MockReflectedBody? = null,154    val headers: Headers = Headers(),155    val reflect: Boolean = true,156    val userAgent: String? = null157) {158    operator fun get(key: String) = headers[key]159    class Deserializer : ResponseDeserializable<MockReflected> {160        override fun deserialize(content: String) = MockReflected.from(JSONObject(content))161    }162    companion object {163        fun from(json: JSONObject): MockReflected {164            val base = MockReflected(165                method = json.getString("method"),166                path = json.getString("path")167            )168            return json.keySet().fold(base) { current, key ->169                if (json.isNull(key)) {170                    current171                } else {172                    when (key) {173                        "query" -> {174                            val queryObject = json.getJSONObject(key)175                            current.copy(176                                query = queryObject.keySet().fold(listOf()) { query, parameter ->177                                    if (queryObject.isNull(parameter)) {178                                        query.plus(Pair(parameter, null))179                                    } else {180                                        val values = queryObject.get(parameter)181                                        when (values) {182                                            is JSONArray -> query.plus(Pair(parameter, values.toList()))183                                            else -> query.plus(Pair(parameter, values.toString()))184                                        }185                                    }186                                }187                            )188                        }189                        "body" -> current.copy(body = MockReflectedBody.from(190                            json.optJSONObject(key) ?: JSONObject().put("type", "STRING").put("string", json.getString(key))191                        ))192                        "headers" -> current.copy(headers = Headers.from(json.getJSONObject(key).toMap()))193                        "reflect" -> current.copy(reflect = json.getBoolean(key))194                        "userAgent" -> current.copy(userAgent = json.getString("userAgent"))195                        else -> current196                    }197                }198            }199        }200    }201}202data class MockReflectedBody(203    val type: String,204    val string: String? = null,205    val binary: ByteArray? = null,206    val contentType: String? = null207) {208    companion object {209        fun from(json: JSONObject): MockReflectedBody {210            val base = MockReflectedBody(211                type = json.getString("type"),212                contentType = json.optString("contentType")213            )214            return when (base.type) {215                "STRING" -> base.copy(string = json.getString("string"))216                "BINARY" -> base.copy(binary = json.getString("binary").decodeBase64())217                else -> base218            }219        }220    }221    override fun equals(other: Any?): Boolean {222        if (this === other) return true223        if (javaClass != other?.javaClass) return false...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Fuel automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful