context("RequestIgnorer")
test_that("RequestIgnorer basic stuff", {
expect_is(RequestIgnorer, "R6ClassGenerator")
aa <- RequestIgnorer$new()
expect_is(aa, "R6")
expect_is(aa, "RequestIgnorer")
# vars
expect_equal(aa$LOCALHOST_ALIASES, c('localhost', '127.0.0.1', '0.0.0.0'))
expect_is(aa$ignored_hosts, "EnvHash")
# methods
expect_is(aa$ignore_localhost, "function")
expect_is(aa$ignore_localhost_value, "function")
expect_is(aa$ignore_request, "function")
expect_is(aa$ignore_hosts, "function")
expect_is(aa$should_be_ignored, "function")
})
test_that("RequestIgnorer usage", {
x <- RequestIgnorer$new()
x$ignore_hosts(hosts = "google.com")
expect_equal(x$ignored_hosts$bucket, "google.com")
x$ignore_localhost()
expect_equal(x$ignored_hosts$bucket, c("google.com", x$LOCALHOST_ALIASES))
x <- RequestIgnorer$new()
x$ignore_localhost_value('127.0.0.1')
expect_equal(x$ignored_hosts$bucket, '127.0.0.1')
x <- RequestIgnorer$new()
expect_false(VCRHooks$hooks$ignore_request(list(uri = "google.com")))
x$ignore_hosts(hosts = "google.com")
expect_true(VCRHooks$hooks$ignore_request(list(uri = "google.com")))
expect_false(VCRHooks$hooks$ignore_request(list(uri = "foo.com")))
})
test_that("RequestIgnorer usage: w/ real requests", {
skip_on_cran()
# ignore by host
data(crul_request)
crul_request$url$handle <- curl::new_handle()
z <- RequestHandlerCrul$new(crul_request)
expect_error(z$handle())
x <- RequestIgnorer$new()
x$ignore_hosts(hosts = "api.crossref.org")
z$handle()
# ignore localhost
req <- list(
url = list(url = "http://127.0.0.1"),
headers = NULL,
method = "get",
options = list(httpget = TRUE, useragent = "crul/0.5.4")
)
req$url$handle <- curl::new_handle()
z <- RequestHandlerCrul$new(req)
expect_error(z$handle(), "vcr does not know how to handle")
x <- RequestIgnorer$new()
x$ignore_localhost()
if (Sys.info()[['sysname']] != "Windows") {
expect_error(z$handle(), "Failed to connect")
}
# cleanup
rm(crul_request)
# ignore by callback - FIXME: we're not yet supporting a user defined fxn
# req <- list(url = list(url = "http://127.0.0.1"),
# method = "get", options = list(httpget = TRUE, useragent = "crul/0.5.4"))
# req$url$handle <- curl::new_handle()
# z <- RequestHandlerCrul$new(req)
# expect_error(z$handle(), "vcr does not know how to handle")
# x <- RequestIgnorer$new()
# x$ignore_localhost()
# expect_error(z$handle(), "Failed to connect")
})
test_that("RequestIgnorer usage: w/ vcr_configure() usage", {
skip_on_cran()
on.exit({
files <- c(
"test_ignore_host.yml",
"test_ignore_host_ignored.yml",
"test_ignore_localhost_ignored.yml",
"test_ignore_localhost.yml")
unlink(file.path(vcr_configuration()$dir, files))
})
library(crul)
vcr_configure_reset()
# IGNORE BY HOST
tmpdir <- tempdir()
vcr_configure(dir = tmpdir)
# vcr_configuration()
cas_not_ignored <- use_cassette("test_ignore_host", {
HttpClient$new(hb())$get()
HttpClient$new("https://scottchamberlain.info")$get()
})
vcr_configure_reset()
vcr_configure(dir = tmpdir, ignore_hosts = "google.com")
# vcr_configuration()
cas_ignored <- use_cassette("test_ignore_host_ignored", {
HttpClient$new("https://google.com")$get()
HttpClient$new("https://scottchamberlain.info")$get()
})
read_cas <- function(x) suppressWarnings(yaml::yaml.load_file(x))$http_interactions
expect_equal(length(read_cas(cas_not_ignored$file())), 2)
expect_equal(length(read_cas(cas_ignored$file())), 1)
# IGNORE LOCALHOST
# Start python simple server on cli: python3 -m http.server
skip_if_localhost_8000_gone()
tmpdir <- tempdir()
vcr_configure(dir = tmpdir)
cas_local_not_ignored <- use_cassette("test_ignore_localhost", {
HttpClient$new("https://scottchamberlain.info")$get()
HttpClient$new("http://127.0.0.1:8000")$get()
})
vcr_configure(dir = tmpdir, ignore_localhost = TRUE)
# vcr_configuration()
cas_local_ignored <- use_cassette("test_ignore_localhost_ignored", {
HttpClient$new("https://scottchamberlain.info")$get()
HttpClient$new("http://127.0.0.1:8000")$get()
})
expect_equal(length(read_cas(cas_local_not_ignored$file())), 2)
expect_equal(length(read_cas(cas_local_ignored$file())), 1)
})
# reset
vcr_configure(dir = tmpdir)
test_that("RequestIgnorer fails well", {
expect_error(RequestIgnorer$new(a = 5), "unused argument")
z <- RequestIgnorer$new()
expect_error(z$ignore_hosts(), "missing")
expect_error(z$ignore_localhost_value(), "missing")
expect_error(z$should_be_ignored(), "missing")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.