X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8afc85aabb9563da4de17b0b5f7d4fe574e9ad8d..58a026e09bda4c1e2374347615c325007c64fac4:/sdk/R/tests/testthat/test-HttpRequest.R?ds=sidebyside diff --git a/sdk/R/tests/testthat/test-HttpRequest.R b/sdk/R/tests/testthat/test-HttpRequest.R index 5ad8aa0311..f12463c805 100644 --- a/sdk/R/tests/testthat/test-HttpRequest.R +++ b/sdk/R/tests/testthat/test-HttpRequest.R @@ -5,12 +5,12 @@ context("Http Request") -test_that("execyte raises exception if http verb is not valid", { +test_that("execute raises exception if http verb is not valid", { http <- HttpRequest$new() expect_that(http$exec("FAKE VERB", "url"), throws_error("Http verb is not valid.")) -}) +}) test_that("createQuery generates and encodes query portion of http", { @@ -22,10 +22,87 @@ test_that("createQuery generates and encodes query portion of http", { expect_that(http$createQuery(queryParams), equals(paste0("/?filters=%5B%5B%22color%22%2C%22%3D%22%2C%22red", "%22%5D%5D&limit=20&offset=50"))) -}) +}) test_that("createQuery generates and empty string when queryParams is an empty list", { http <- HttpRequest$new() expect_that(http$createQuery(list()), equals("")) -}) +}) + +test_that("exec calls httr functions correctly", { + httrNamespace <- getNamespace("httr") + + # Monkeypatch httr functions and assert that they are called later + add_headersCalled <- FALSE + unlockBinding("add_headers", httrNamespace) + newAddHeaders <- function(h) + { + add_headersCalled <<- TRUE + list() + } + httrNamespace$add_headers <- newAddHeaders + lockBinding("add_headers", httrNamespace) + + expectedConfig <- list() + retryCalled <- FALSE + unlockBinding("RETRY", httrNamespace) + newRETRY <- function(verb, url, body, config, times) + { + retryCalled <<- TRUE + expectedConfig <<- config + } + httrNamespace$RETRY <- newRETRY + lockBinding("RETRY", httrNamespace) + + Sys.setenv("ARVADOS_API_HOST_INSECURE" = TRUE) + http <- HttpRequest$new() + http$exec("GET", "url") + + expect_that(add_headersCalled, is_true()) + expect_that(retryCalled, is_true()) + expect_that(expectedConfig$options, equals(list(ssl_verifypeer = 0L))) +}) + +test_that("getConnection calls curl functions correctly", { + curlNamespace <- getNamespace("curl") + + # Monkeypatch curl functions and assert that they are called later + curlCalled <- FALSE + unlockBinding("curl", curlNamespace) + newCurl <- function(url, open, handle) curlCalled <<- TRUE + curlNamespace$curl <- newCurl + lockBinding("curl", curlNamespace) + + new_handleCalled <- FALSE + unlockBinding("new_handle", curlNamespace) + newHandleFun <- function() + { + new_handleCalled <<- TRUE + list() + } + curlNamespace$new_handle <- newHandleFun + lockBinding("new_handle", curlNamespace) + + handle_setheadersCalled <- FALSE + unlockBinding("handle_setheaders", curlNamespace) + newHandleSetHeaders <- function(h, .list) handle_setheadersCalled <<- TRUE + curlNamespace$handle_setheaders <- newHandleSetHeaders + lockBinding("handle_setheaders", curlNamespace) + + handle_setoptCalled <- FALSE + unlockBinding("handle_setopt", curlNamespace) + newHandleSetOpt <- function(h, ssl_verifypeer) handle_setoptCalled <<- TRUE + curlNamespace$handle_setopt <- newHandleSetOpt + lockBinding("handle_setopt", curlNamespace) + + + Sys.setenv("ARVADOS_API_HOST_INSECURE" = TRUE) + http <- HttpRequest$new() + http$getConnection("location", list(), "r") + + expect_that(new_handleCalled, is_true()) + expect_that(handle_setheadersCalled, is_true()) + expect_that(handle_setoptCalled, is_true()) + expect_that(curlCalled, is_true()) +})