wi_th {webmockr} | R Documentation |
Set additional parts of a stubbed request
Description
Set query params, request body, request headers and/or basic_auth
Usage
wi_th(.data, ..., .list = list())
Arguments
.data |
input. Anything that can be coerced to a |
... |
Comma separated list of named variables. accepts the following:
|
.list |
named list, has to be one of |
Details
with
is a function in the base
package, so we went with
wi_th
Values for query, body, headers, and basic_auth:
query: (list) a named list. values are coerced to character class in the recorded stub. You can pass numeric, integer, etc., but all will be coerced to character.
body: various, including character string, list, raw, numeric, upload (
crul::upload()
,httr::upload_file()
,curl::form_file()
, orcurl::form_data()
they both create the same object in the end)headers: (list) a named list
basic_auth: (character) a length two vector, username and password. authentication type (basic/digest/ntlm/etc.) is ignored. that is, mocking authenciation right now does not take into account the authentication type. We don't do any checking of the username/password except to detect edge cases where for example, the username/password were probably not set by the user on purpose (e.g., a URL is picked up by an environment variable)
Note that there is no regex matching on query, body, or headers. They are tested for matches in the following ways:
query: compare stubs and requests with
identical()
. this compares named lists, so both list names and values are comparedbody: varies depending on the body format (list vs. character, etc.)
headers: compare stub and request values with
==
. list names are compared with%in%
.basic_auth
is included in headers (with the name Authorization)
Value
an object of class StubbedRequest
, with print method describing
the stub
Note
see more examples in stub_request()
Examples
# first, make a stub object
req <- stub_request("post", "https://httpbin.org/post")
# add body
# list
wi_th(req, body = list(foo = "bar"))
# string
wi_th(req, body = '{"foo": "bar"}')
# raw
wi_th(req, body = charToRaw('{"foo": "bar"}'))
# numeric
wi_th(req, body = 5)
# an upload
wi_th(req, body = crul::upload(system.file("CITATION")))
# wi_th(req, body = httr::upload_file(system.file("CITATION")))
# add query - has to be a named list
wi_th(req, query = list(foo = "bar"))
# add headers - has to be a named list
wi_th(req, headers = list(foo = "bar"))
wi_th(req, headers = list(`User-Agent` = "webmockr/v1", hello="world"))
# .list - pass in a named list instead
wi_th(req, .list = list(body = list(foo = "bar")))
# basic authentication
wi_th(req, basic_auth = c("user", "pass"))
wi_th(req, basic_auth = c("user", "pass"), headers = list(foo = "bar"))