Nothing
skip_on_cran()
skip_if_offline(url_parse(hb())$domain)
context("AsyncVaried")
test_that("AsyncVaried works", {
expect_is(AsyncVaried, "R6ClassGenerator")
req1 <- HttpRequest$new(url = hb("/get"))$get()
req2 <- HttpRequest$new(url = hb("/post"))$post()
aa <- AsyncVaried$new(req1, req2)
expect_is(aa, "AsyncVaried")
expect_is(aa$.__enclos_env__$private$async_request, "function")
expect_is(aa$parse, "function")
expect_is(aa$content, "function")
expect_is(aa$requests, "function")
# before requests
expect_equal(length(aa$content()), 0)
expect_equal(length(aa$status()), 0)
expect_equal(length(aa$status_code()), 0)
expect_equal(length(aa$times()), 0)
# after requests
aa$request()
expect_equal(length(aa$content()), 2)
expect_equal(length(aa$status()), 2)
expect_equal(length(aa$status_code()), 2)
expect_equal(length(aa$times()), 2)
# response_headers and response_headers_all
expect_is(aa$responses()[[1]]$response_headers, "list")
expect_named(aa$responses()[[1]]$response_headers)
expect_is(aa$responses()[[1]]$response_headers_all, "list")
expect_named(aa$responses()[[1]]$response_headers_all, NULL)
})
test_that("AsyncVaried fails well", {
expect_error(AsyncVaried$new(), "must pass in at least one request")
expect_error(AsyncVaried$new(5), "all inputs must be of class 'HttpRequest'")
})
context("AsyncVaried - order of results")
test_that("AsyncVaried - order", {
req1 <- HttpRequest$new(url = hb("/get?a=5"))$get()
req2 <- HttpRequest$new(url = hb("/get?b=6"))$get()
req3 <- HttpRequest$new(url = hb("/get?c=7"))$get()
aa <- AsyncVaried$new(req1, req2, req3)
aa$request()
out <- aa$responses()
expect_is(out, "asyncresponses")
expect_is(out[[1]], "HttpResponse")
expect_is(out[[2]], "HttpResponse")
expect_is(out[[3]], "HttpResponse")
expect_match(out[[1]]$url, "a=5")
expect_match(out[[2]]$url, "b=6")
expect_match(out[[3]]$url, "c=7")
})
context("AsyncVaried - disk")
test_that("AsyncVaried - writing to disk works", {
f <- tempfile()
g <- tempfile()
req1 <- HttpRequest$new(url = hb("/get"))$get(disk = f)
req2 <- HttpRequest$new(url = hb("/post"))$post(disk = g)
req3 <- HttpRequest$new(url = hb("/get"))$get()
out <- AsyncVaried$new(req1, req2, req3)
out$request()
cont <- out$content()
lines_f <- readLines(f)
lines_g <- readLines(g)
expect_is(out, "AsyncVaried")
expect_is(cont, "list")
expect_is(cont[[1]], "raw")
expect_identical(cont[[1]], raw(0))
expect_is(cont[[2]], "raw")
expect_identical(cont[[2]], raw(0))
expect_is(cont[[3]], "raw")
expect_gt(length(cont[[3]]), 0)
expect_is(lines_f, "character")
expect_gt(length(lines_f), 0)
expect_is(lines_g, "character")
expect_gt(length(lines_g), 0)
# cleanup
closeAllConnections()
})
context("AsyncVaried - stream")
test_that("AsyncVaried - streaming to disk works", {
lst <- c()
fun <- function(x) lst <<- append(lst, list(x))
req1 <- HttpRequest$new(url = hb("/get")
)$get(query = list(foo = "bar"), stream = fun)
req2 <- HttpRequest$new(url = hb("/get")
)$get(query = list(hello = "world"), stream = fun)
out <- AsyncVaried$new(req1, req2)
suppressWarnings(out$request())
expect_is(out, "AsyncVaried")
expect_identical(out$responses()[[1]]$content, raw(0))
expect_identical(out$responses()[[2]]$content, raw(0))
expect_is(lst, "list")
expect_is(lst[[1]], "list")
expect_is(lst[[2]], "list")
expect_is(rawToChar(lst[[1]]$content), "character")
expect_is(rawToChar(lst[[2]]$content), "character")
})
context("AsyncVaried - basic auth")
test_that("AsyncVaried - basic auth works", {
url <- hb("/basic-auth/user/passwd")
auth <- auth(user = "user", pwd = "passwd")
reqlist <- list(
HttpRequest$new(url = url, auth = auth)$get(),
HttpRequest$new(url = url, auth = auth)$get(query = list(a=5)),
HttpRequest$new(url = url, auth = auth)$get(query = list(b=3))
)
out <- AsyncVaried$new(.list = reqlist)
out$request()
expect_is(out, "AsyncVaried")
expect_equal(length(out$responses()), 3)
resps <- out$responses()
expect_is(resps[[1]]$request$auth, "auth")
expect_equal(resps[[1]]$request$auth$userpwd, "user:passwd")
expect_equal(resps[[1]]$request$auth$httpauth, 1)
})
context("AsyncVaried - failure behavior w/ bad URLs/etc.")
test_that("AsyncVaried - failure behavior", {
reqlist <- list(
HttpRequest$new(url = "http://stuffthings.gvb")$get(),
HttpRequest$new(url = base_url)$head(),
HttpRequest$new(url = base_url, opts = list(timeout_ms = 10))$head()
)
tmp <- AsyncVaried$new(.list = reqlist)
tmp$request()
expect_is(tmp, "AsyncVaried")
expect_equal(length(tmp$responses()), 3)
resps <- tmp$responses()
expect_equal(resps[[1]]$status_code, 0)
expect_equal(resps[[2]]$status_code, 200)
expect_equal(resps[[3]]$status_code, 0)
expect_false(resps[[1]]$success())
expect_true(resps[[2]]$success())
expect_false(resps[[3]]$success())
expect_match(resps[[1]]$parse("UTF-8"), "resolve host")
})
# disk and stream behave the same was as w/o either of them
context("AsyncVaried - failure behavior w/ bad URLs/etc. - disk")
test_that("AsyncVaried - failure behavior", {
f <- tempfile()
g <- tempfile()
reqlist <- list(
HttpRequest$new(url = "http://stuffthings.gvb")$get(disk = f),
HttpRequest$new(url = base_url, opts = list(timeout_ms = 10))$get(disk = g)
)
tmp <- AsyncVaried$new(.list = reqlist)
tmp$request()
expect_is(tmp, "AsyncVaried")
expect_equal(length(tmp$responses()), 2)
resps <- tmp$responses()
expect_equal(resps[[1]]$status_code, 0)
expect_equal(resps[[2]]$status_code, 0)
expect_false(resps[[1]]$success())
expect_false(resps[[2]]$success())
expect_match(resps[[1]]$parse("UTF-8"), "resolve host")
# cleanup
closeAllConnections()
})
# disk and stream behave the same was as w/o either of them
context("AsyncVaried - failure behavior w/ bad URLs/etc. - stream")
test_that("AsyncVaried - failure behavior", {
lst <- c()
fun <- function(x) lst <<- c(lst, x)
reqlist <- list(
HttpRequest$new(url = "http://stuffthings.gvb")$get(stream = fun),
HttpRequest$new(url = base_url, opts = list(timeout_ms = 10))$get(stream = fun)
)
tmp <- AsyncVaried$new(.list = reqlist)
tmp$request()
expect_is(tmp, "AsyncVaried")
expect_equal(length(tmp$responses()), 2)
resps <- tmp$responses()
expect_equal(resps[[1]]$status_code, 0)
expect_equal(resps[[2]]$status_code, 0)
expect_false(resps[[1]]$success())
expect_false(resps[[2]]$success())
expect_match(resps[[1]]$parse("UTF-8"), "resolve host")
})
# verb method works
test_that("AsyncVaried verb method works", {
req1 <- HttpRequest$new(url = hb("/get"))$verb('get')
req2 <- HttpRequest$new(url = hb("/post"))$verb('post')
aa <- AsyncVaried$new(req1, req2)
aa$request()
expect_equal(aa$responses()[[1]]$method, 'get')
expect_equal(aa$responses()[[2]]$method, 'post')
})
# verb method works
test_that("AsyncVaried verb retry", {
req1 <- HttpRequest$new(url = hb("/get"))$retry('get')
req2 <- HttpRequest$new(url = hb("/post"))$retry('post')
aa <- AsyncVaried$new(req1, req2)
aa$request()
expect_equal(aa$responses()[[1]]$method, 'get')
expect_equal(aa$responses()[[2]]$method, 'post')
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.