tests/testthat/setup.R

library(httptest)
library(here)

# First evaluate the API KEY if available
api_key <- Sys.getenv("NASSQS_TOKEN") 
api_file <- here::here("tests/testthat/api-key.txt")
if(nchar(Sys.getenv("NASSQS_TOKEN") ) != 36 & file.exists(api_file)) {
  Sys.setenv(NASSQS_TOKEN = readLines(api_file))
}


# Parameters
params <- list(
  agg_level_desc = "STATE",
  commodity_desc = "CORN",
  domaincat_desc = "NOT SPECIFIED",
  state_alpha = "VA",
  statisticcat_desc = "AREA HARVESTED",
  year = "2012"
)


### Generate error response data objects if needed
#testparams <- params

## 400 error
# testparams$year <- 2102
# query <- list(key = api_key)
# query <- append(query, flatten(testparams))
# r <- httr::GET("https://quickstats.nass.usda.gov/api/api_GET", query = query)
#saveRDS(r, file = test_path("testdata", "qsresponse_400.rds"))
# r <- httr::GET("http://httpbin.org/status/400")
# saveRDS(r, file = test_path("testdata", "response_400.rds"))

# # 413 error
# query <- list(key = api_key)
# query <- append(query, flatten(list(year__GET = 2000)))
# r <- httr::GET("https://quickstats.nass.usda.gov/api/api_GET", query = query)   
# saveRDS(r, file = test_path("testdata", "qsresponse_413.rds"))
#r <- httr::GET("http://httpbin.org/status/413")
#saveRDS(r, file = test_path("testdata", "response_413.rds"))

# 429 error
# r <- httr::GET("http://httpbin.org/status/429")
# saveRDS(r, file = test_path("testdata", "response_429.rds"))


with_mock_api <- function(expr) {
  # Set a fake token just in this context
  old_token <- Sys.getenv("NASSQS_TOKEN")
  Sys.setenv(NASSQS_TOKEN = "API_KEY")
  on.exit(Sys.setenv(NASSQS_TOKEN = old_token))
  
  httptest::with_mock_api(expr)
}

with_authentication <- function(expr) {
  if (nchar(Sys.getenv("NASSQS_TOKEN")) == 36) {
    # Only evaluate if a token is set
    expr
  }
}
potterzot/rnassqs documentation built on Sept. 10, 2023, 4:09 p.m.