Nothing
# -------------------------------------------------------------------------
# basic behaviour (unit tests with mocking)
# -------------------------------------------------------------------------
test_that("armadillo_login returns invisible connection object", {
skip_if_not_installed("MolgenisArmadillo")
mock_conn <- list(access_token = "fake_token_123")
with_mocked_bindings(
armadillo.get_credentials = function(server) {
expect_equal(server, "https://armadillo.example.org")
mock_conn
},
{
result <- armadillo_login("https://armadillo.example.org")
},
.package = "DSMolgenisArmadillo"
)
# should return the connection invisibly
expect_equal(result, mock_conn)
})
test_that("armadillo_login calls armadillo.get_credentials with correct server", {
skip_if_not_installed("MolgenisArmadillo")
called_server <- NULL
with_mocked_bindings(
armadillo.get_credentials = function(server) {
called_server <<- server
list(access_token = "abc")
},
{
armadillo_login("https://my-armadillo.org")
},
.package = "DSMolgenisArmadillo"
)
expect_equal(called_server, "https://my-armadillo.org")
})
# -------------------------------------------------------------------------
# Side-effect tests: namespace global assignments
# -------------------------------------------------------------------------
test_that("armadillo_login assigns armadillo_url in MolgenisArmadillo namespace", {
skip_if_not_installed("MolgenisArmadillo")
pkgenv <- get_pkgenv()
original_url <- if (exists("armadillo_url", envir = pkgenv)) {
get("armadillo_url", envir = pkgenv)
} else {
NULL
}
on.exit(
{
# restore original state to avoid test pollution
if (is.null(original_url)) {
if (exists("armadillo_url", envir = pkgenv)) {
rm("armadillo_url", envir = pkgenv)
}
} else {
assign("armadillo_url", original_url, envir = pkgenv)
}
},
add = TRUE
)
with_mocked_bindings(
armadillo.get_credentials = function(server) {
list(access_token = "token_xyz")
},
{
armadillo_login("https://armadillo.test")
},
.package = "DSMolgenisArmadillo"
)
expect_true(exists("armadillo_url", envir = pkgenv))
expect_equal(get("armadillo_url", envir = pkgenv), "https://armadillo.test")
})
test_that("armadillo_login assigns auth_token from connection access_token", {
skip_if_not_installed("MolgenisArmadillo")
pkgenv <- get_pkgenv()
original_token <- if (exists("auth_token", envir = pkgenv)) {
get("auth_token", envir = pkgenv)
} else {
NULL
}
on.exit(
{
# restore original state
if (is.null(original_token)) {
if (exists("auth_token", envir = pkgenv)) {
rm("auth_token", envir = pkgenv)
}
} else {
assign("auth_token", original_token, envir = pkgenv)
}
},
add = TRUE
)
with_mocked_bindings(
armadillo.get_credentials = function(server) {
list(access_token = "secure_token_456")
},
{
armadillo_login("https://armadillo.secure")
},
.package = "DSMolgenisArmadillo"
)
expect_true(exists("auth_token", envir = pkgenv))
expect_equal(get("auth_token", envir = pkgenv), "secure_token_456")
})
# -------------------------------------------------------------------------
# Edge cases
# -------------------------------------------------------------------------
test_that("armadillo_login handles missing access_token gracefully", {
skip_if_not_installed("MolgenisArmadillo")
pkgenv <- get_pkgenv()
with_mocked_bindings(
armadillo.get_credentials = function(server) {
list() # no access_token
},
{
expect_error(
armadillo_login("https://armadillo.no-token"),
regexp = NA
)
},
.package = "DSMolgenisArmadillo"
)
})
test_that("armadillo_login propagates credential retrieval errors", {
skip_if_not_installed("MolgenisArmadillo")
with_mocked_bindings(
armadillo.get_credentials = function(server) {
stop("Authentication failed")
},
{
expect_error(
armadillo_login("https://armadillo.fail"),
"Authentication failed"
)
},
.package = "DSMolgenisArmadillo"
)
})
# -------------------------------------------------------------------------
# Integration-style test (optional, only if real server configured)
# -------------------------------------------------------------------------
test_that("armadillo_login works with real Armadillo server (optional)", {
server <- Sys.getenv("ARMADILLO_SERVER")
skip_if(server == "", "No ARMADILLO_SERVER env var set")
expect_no_error({
conn <- armadillo_login(server)
})
expect_true(is.list(conn) || is.environment(conn))
})
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.