context("stub_request and crul: get")
library(crul)
crul::mock()
# clear any stubs
stub_registry_clear()
test_that("stub_request works well: get requests", {
skip_on_cran()
# before any stubs made
## 0 stubs
expect_equal(length(stub_registry()$request_stubs), 0)
x <- crul::HttpClient$new(url = hb())
ms1 <- get_err_mssg(x$get('get', query = list(foo = "bar", a = 5)))
expect_error(
x$get('get', query = list(foo = "bar", a = 5)),
re_escape(ms1)
)
ms2 <- get_err_mssg(x$get('get', query = list(foo = "bar", stuff = FALSE)))
expect_error(
x$get('get', query = list(foo = "bar", stuff = FALSE)),
re_escape(ms2)
)
ms3 <- get_err_mssg(x$get('get', query = list(foo = "bar")))
expect_error(
x$get('get', query = list(foo = "bar")),
re_escape(ms3)
)
# after a stub made
stub_request("get", hb("/get?foo=bar&a=5")) %>%
wi_th(headers = list(
'Accept-Encoding' = 'gzip, deflate',
'Accept' = 'application/json, text/xml, application/xml, */*')
)
## 1 stub
expect_equal(length(stub_registry()$request_stubs), 1)
# the matching request works
z <- x$get('get', query = list(foo = "bar", a = 5))
expect_is(z, "HttpResponse")
expect_equal(z$url, hb("/get?foo=bar&a=5"))
# but the others still do not work cause they dont match the stub
ms2 <- get_err_mssg(x$get('get', query = list(foo = "bar", stuff = FALSE)))
expect_error(x$get('get', query = list(foo = "bar", stuff = FALSE)), re_escape(ms2))
ms3 <- get_err_mssg(x$get('get', query = list(foo = "bar")))
expect_error(x$get('get', query = list(foo = "bar")), re_escape(ms3))
# a stub for the second request
stub_request("get", hb("/get?foo=bar&stuff=FALSE")) %>%
wi_th(headers = list(
'Accept-Encoding' = 'gzip, deflate',
'Accept' = 'application/json, text/xml, application/xml, */*')
)
## 2 stubs now
expect_equal(length(stub_registry()$request_stubs), 2)
# the other request now works
w <- x$get('get', query = list(foo = "bar", stuff = FALSE))
expect_is(w, "HttpResponse")
expect_equal(w$url, hb("/get?foo=bar&stuff=FALSE"))
# but the others still do not work cause they dont match the stub
ms4 <- get_err_mssg(x$get('get', query = list(foo = "bar")))
expect_error(x$get('get', query = list(foo = "bar")), re_escape(ms4))
})
# clear any stubs again
stub_registry_clear()
context("stub_request and crul: post")
test_that("stub_request works well: post requests", {
skip_on_cran()
# before any stubs made
## 0 stubs
expect_equal(length(stub_registry()$request_stubs), 0)
x <- crul::HttpClient$new(url = hb())
ms1 <- get_err_mssg(x$post('post', body = list(foo = "bar", a = 5)))
expect_error(
x$post('post', body = list(foo = "bar", a = 5)),
re_escape(ms1)
)
# after a stub made
stub_request("post", hb("/post")) %>%
wi_th(headers = list(
'Accept-Encoding' = 'gzip, deflate',
'Accept' = 'application/json, text/xml, application/xml, */*'),
body = list(foo = "bar", a = 5)
)
## 1 stub
expect_equal(length(stub_registry()$request_stubs), 1)
# the matching request works
z <- x$post('post', body = list(foo = "bar", a = 5))
expect_is(z, "HttpResponse")
expect_equal(z$url, hb("/post"))
# but the others still do not work cause they dont match the stub
ms2 <- get_err_mssg(x$post('post', query = list(foo = "bar", stuff = FALSE)))
expect_error(x$post('post', query = list(foo = "bar", stuff = FALSE)), re_escape(ms2))
ms3 <- get_err_mssg(x$post('post', query = list(foo = "bar")))
expect_error(x$post('post', query = list(foo = "bar")), re_escape(ms3))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.