tests/testthat/test-kobo-client.R

BASE_URL <- "https://kobo.correlaid.org"

#' Testing $get_* methods

vcr::use_cassette("kobo-client-403", {
  test_that("Requests with faulty token throw error", {
    # Case: Faulty token is via envvar, get request fails
    withr::with_envvar(
      new = c("KBTBR_TOKEN" = "foo"),
      code = {
        kc <- KoboClient$new(base_url = BASE_URL)
        expect_error(kc$get("api/v2/assets/"), regexp = "403")
      }
    )
  })
})

test_that("Kobo Client can fetch assets", {
  vcr::use_cassette("kobo-client-get-assets-simple-get", {
    koboclient <- KoboClient$new(base_url = BASE_URL, kobo_token = Sys.getenv("KBTBR_TOKEN"))
    res <- koboclient$get("api/v2/assets/", query = list(format = "json")) # trailing slash again!
  })

  assets <- res$
    parse() %>%
    jsonlite::fromJSON()
  expect_setequal(names(assets), c("count", "next", "previous", "results"))
  expect_true(all(c("url", "owner", "kind", "name", "asset_type") %in% colnames(assets$results)))
  expect_equal(nrow(assets$results), 8)
  expect_equal(assets$count, 8)
})


vcr::use_cassette("kobo-client-get-404", {
  test_that("non existing route throws 404 error", {
    koboclient <- KoboClient$new(base_url = BASE_URL, kobo_token = Sys.getenv("KBTBR_TOKEN"))
    expect_error(koboclient$get("api/v2/doesnotexist/")$raise_for_status(), regexp = "404")
  })
})
CorrelAid/kbtbr documentation built on Dec. 9, 2022, 8:13 a.m.