Nothing
# set_api_key() basic tests
test_that("set_api_key sets key for current session", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
expect_message(
result <- set_api_key("test_key_12345", persist = FALSE),
"API key set for current session"
)
expect_true(result)
expect_equal(getOption("nomisdata.api_key"), "test_key_12345")
})
test_that("set_api_key validates empty string", {
expect_error(
set_api_key(""),
"Invalid API key"
)
})
test_that("set_api_key reads from environment when key is NULL", {
orig_key <- getOption("nomisdata.api_key")
orig_env <- Sys.getenv("NOMIS_API_KEY")
withr::defer({
options(nomisdata.api_key = orig_key)
if (nzchar(orig_env)) {
Sys.setenv(NOMIS_API_KEY = orig_env)
} else {
Sys.unsetenv("NOMIS_API_KEY")
}
})
Sys.setenv(NOMIS_API_KEY = "env_key_123")
expect_message(
set_api_key(persist = FALSE),
"API key set"
)
expect_equal(getOption("nomisdata.api_key"), "env_key_123")
})
test_that("set_api_key errors when NULL and no env var in non-interactive mode", {
orig_env <- Sys.getenv("NOMIS_API_KEY")
withr::defer({
if (nzchar(orig_env)) {
Sys.setenv(NOMIS_API_KEY = orig_env)
} else {
Sys.unsetenv("NOMIS_API_KEY")
}
})
Sys.unsetenv("NOMIS_API_KEY")
expect_error(
set_api_key(NULL),
"No API key provided|not interactive"
)
})
test_that("set_api_key returns TRUE", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
result <- suppressMessages(set_api_key("test_key", persist = FALSE))
expect_true(result)
})
test_that("set_api_key with persist = FALSE doesn't modify .Renviron", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
expect_message(
set_api_key("test_key", persist = FALSE),
"current session"
)
})
test_that("set_api_key accepts long keys", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
long_key <- paste(rep("a", 100), collapse = "")
suppressMessages(set_api_key(long_key, persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), long_key)
})
test_that("set_api_key accepts keys with special characters", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
special_key <- "key-123_ABC.test"
suppressMessages(set_api_key(special_key, persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), special_key)
})
test_that("set_api_key overwrites existing key", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
suppressMessages(set_api_key("old_key", persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), "old_key")
suppressMessages(set_api_key("new_key", persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), "new_key")
})
# add_to_renviron() tests
test_that("add_to_renviron doesn't run during R CMD check", {
orig_check <- Sys.getenv("_R_CHECK_PACKAGE_NAME_")
withr::defer(Sys.setenv("_R_CHECK_PACKAGE_NAME_" = orig_check))
Sys.setenv("_R_CHECK_PACKAGE_NAME_" = "nomisdata")
expect_message(
add_to_renviron("test_key"),
"not available during package checks"
)
})
test_that("add_to_renviron returns invisible NULL during check", {
orig_check <- Sys.getenv("_R_CHECK_PACKAGE_NAME_")
withr::defer(Sys.setenv("_R_CHECK_PACKAGE_NAME_" = orig_check))
Sys.setenv("_R_CHECK_PACKAGE_NAME_" = "nomisdata")
result <- suppressMessages(add_to_renviron("test_key"))
expect_null(result)
})
# Integration tests
test_that("set_api_key then get_option retrieves same key", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
test_key <- "integration_test_key_123"
suppressMessages(set_api_key(test_key, persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), test_key)
})
test_that("environment variable takes precedence when key is NULL", {
orig_key <- getOption("nomisdata.api_key")
orig_env <- Sys.getenv("NOMIS_API_KEY")
withr::defer({
options(nomisdata.api_key = orig_key)
if (nzchar(orig_env)) {
Sys.setenv(NOMIS_API_KEY = orig_env)
} else {
Sys.unsetenv("NOMIS_API_KEY")
}
})
Sys.setenv(NOMIS_API_KEY = "env_var_key")
suppressMessages(set_api_key(NULL, persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), "env_var_key")
})
test_that("set_api_key validates nzchar after env var check", {
orig_env <- Sys.getenv("NOMIS_API_KEY")
withr::defer({
if (nzchar(orig_env)) {
Sys.setenv(NOMIS_API_KEY = orig_env)
} else {
Sys.unsetenv("NOMIS_API_KEY")
}
})
Sys.setenv(NOMIS_API_KEY = "")
expect_error(
set_api_key(NULL),
"No API key provided|not interactive|Invalid API key"
)
})
test_that("set_api_key handles different key formats", {
orig_key <- getOption("nomisdata.api_key")
withr::defer(options(nomisdata.api_key = orig_key))
# UUID-like key
uuid_key <- "550e8400-e29b-41d4-a716-446655440000"
suppressMessages(set_api_key(uuid_key, persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), uuid_key)
# Short key
short_key <- "abc123"
suppressMessages(set_api_key(short_key, persist = FALSE))
expect_equal(getOption("nomisdata.api_key"), short_key)
})
test_that("set_api_key with persist = TRUE sends to add_to_renviron", {
skip_on_cran()
orig_key <- getOption("nomisdata.api_key")
orig_check <- Sys.getenv("_R_CHECK_PACKAGE_NAME_")
withr::defer({
options(nomisdata.api_key = orig_key)
Sys.setenv("_R_CHECK_PACKAGE_NAME_" = orig_check)
})
# Simulate R CMD check to prevent actual file modification
Sys.setenv("_R_CHECK_PACKAGE_NAME_" = "nomisdata")
expect_message(
set_api_key("test_key", persist = TRUE),
"not available during package checks"
)
})
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.