Nothing
context("Tests locate_credentials()")
if (file.exists(".aws/credentials")) {
test_that("locate_credentials() returns envvar values when environment variables and credentials file present", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION", "AWS_PROFILE"))
# set environment variables
Sys.setenv("AWS_ACCESS_KEY_ID" = "foo-key")
Sys.setenv("AWS_SECRET_ACCESS_KEY" = "foo-secret")
Sys.setenv("AWS_SESSION_TOKEN" = "foo-token")
Sys.setenv("AWS_DEFAULT_REGION" = "foo-region")
Sys.unsetenv("AWS_PROFILE")
# tests
cred <- locate_credentials()
expect_equal(cred[["key"]], "foo-key")
expect_equal(cred[["secret"]], "foo-secret")
expect_equal(cred[["session_token"]], "foo-token")
expect_equal(cred[["region"]], "foo-region")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() returns non-default values if requested when environment variables and credentials file present", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# set environment variables
Sys.setenv("AWS_ACCESS_KEY_ID" = "foo-key")
Sys.setenv("AWS_SECRET_ACCESS_KEY" = "foo-secret")
Sys.setenv("AWS_SESSION_TOKEN" = "foo-token")
Sys.setenv("AWS_DEFAULT_REGION" = "foo-region")
# tests
cred <- locate_credentials(key = "foo1", secret = "foo2", session_token = "foo3", region = "foo4")
expect_equal(cred[["key"]], "foo1", label = "locate_credentials(key = 'foo1')")
expect_equal(cred[["secret"]], "foo2", label = "locate_credentials(secret = 'foo2')")
expect_equal(cred[["session_token"]], "foo3", label = "locate_credentials(session_token = 'foo3')")
expect_equal(cred[["region"]], "foo4", label = "locate_credentials(region = 'foo4')")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() returns credentials file values when environment variables missing and credentials file present", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# unset environment variables
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
Sys.unsetenv("AWS_SESSION_TOKEN")
Sys.unsetenv("AWS_DEFAULT_REGION")
# tests
cred <- locate_credentials()
expect_equal(cred[["key"]], "ACCESS_KEY")
expect_equal(cred[["secret"]], "SECRET_KEY")
expect_equal(cred[["session_token"]], "TOKEN")
expect_equal(cred[["region"]], "us-east-1")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() returns non-default values if requested, when environment variables missing and credentials file absent", {
skip_on_cran()
# move credentials file
tmp <- tempfile(tmpdir = ".aws")
file.rename(".aws/credentials", tmp)
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# unset environment variables
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
Sys.unsetenv("AWS_SESSION_TOKEN")
Sys.unsetenv("AWS_DEFAULT_REGION")
# tests
cred <- locate_credentials(key = "foo1", secret = "foo2", session_token = "foo3", region = "foo4")
expect_equal(cred[["key"]], "foo1", label = "locate_credentials(key = 'foo1')")
expect_equal(cred[["secret"]], "foo2", label = "locate_credentials(secret = 'foo2')")
expect_equal(cred[["session_token"]], "foo3", label = "locate_credentials(session_token = 'foo3')")
expect_equal(cred[["region"]], "foo4", label = "locate_credentials(region = 'foo4')")
# restore credentials file
file.rename(tmp, ".aws/credentials")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() returns NULLs when environment variables missing and credentials file absent", {
skip_on_cran()
# move credentials file
tmp <- tempfile(tmpdir = ".aws")
file.rename(".aws/credentials", tmp)
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# unset environment variables
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
Sys.unsetenv("AWS_SESSION_TOKEN")
Sys.unsetenv("AWS_DEFAULT_REGION")
# tests
cred <- locate_credentials()
expect_null(cred[["key"]])
expect_null(cred[["secret"]])
expect_null(cred[["session_token"]])
expect_equal(cred[["region"]], "us-east-1")
# restore credentials file
file.rename(tmp, ".aws/credentials")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() uses options default for region", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# unset environment variables
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
Sys.unsetenv("AWS_SESSION_TOKEN")
Sys.unsetenv("AWS_DEFAULT_REGION")
cloudyr_region <- getOption("cloudyr.aws.default_region")
options(cloudyr.aws.default_region = "eu-west-1")
# tests
cred <- locate_credentials()
expect_equal(cred[["key"]], "ACCESS_KEY")
expect_equal(cred[["secret"]], "SECRET_KEY")
expect_equal(cred[["session_token"]], "TOKEN")
expect_equal(cred[["region"]], "eu-west-1")
# restore environment variables
do.call("Sys.setenv", as.list(e))
options(cloudyr.aws.default_region = cloudyr_region)
})
test_that("locate_credentials() allows empty region with allow_empty_set", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# unset environment variables
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
Sys.unsetenv("AWS_SESSION_TOKEN")
Sys.unsetenv("AWS_DEFAULT_REGION")
cloudyr_region <- getOption("cloudyr.aws.allow_empty_region")
options(cloudyr.aws.allow_empty_region = TRUE)
# tests
cred <- locate_credentials(region="")
expect_equal(cred[["key"]], "ACCESS_KEY")
expect_equal(cred[["secret"]], "SECRET_KEY")
expect_equal(cred[["session_token"]], "TOKEN")
expect_equal(cred[["region"]], "")
# restore environment variables
do.call("Sys.setenv", as.list(e))
options(cloudyr.aws.allow_empty_region = cloudyr_region)
})
test_that("locate_credentials() works with allow_empty_set", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION"))
# unset environment variables
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
Sys.unsetenv("AWS_SESSION_TOKEN")
Sys.unsetenv("AWS_DEFAULT_REGION")
cloudyr_region <- getOption("cloudyr.aws.allow_empty_region")
options(cloudyr.aws.allow_empty_region = TRUE)
# tests
cred <- locate_credentials(region=NULL)
expect_equal(cred[["key"]], "ACCESS_KEY")
expect_equal(cred[["secret"]], "SECRET_KEY")
expect_equal(cred[["session_token"]], "TOKEN")
expect_equal(cred[["region"]], "us-east-1")
# restore environment variables
do.call("Sys.setenv", as.list(e))
options(cloudyr.aws.allow_empty_region = cloudyr_region)
})
test_that("locate_credentials() prioritizes profile argument when conflicting env-vars are set", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY",
"AWS_SESSION_TOKEN",
"AWS_DEFAULT_REGION"
))
# set environment variables
Sys.setenv("AWS_ACCESS_KEY_ID" = "foo-key")
Sys.setenv("AWS_SECRET_ACCESS_KEY" = "foo-secret")
Sys.setenv("AWS_SESSION_TOKEN" = "foo-token")
Sys.setenv("AWS_DEFAULT_REGION" = "foo-region")
# tests
cred <- locate_credentials(profile = 'Alice')
expect_equal(cred[["key"]], "Alice_access_key_ID")
expect_equal(cred[["secret"]], "Alice_secret_access_key")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() prioritizes env var keys if there is a conflicting env profile var", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY",
"AWS_SESSION_TOKEN",
"AWS_PROFILE",
"AWS_DEFAULT_REGION"
))
# set environment variables
Sys.setenv("AWS_ACCESS_KEY_ID" = "foo-key")
Sys.setenv("AWS_SECRET_ACCESS_KEY" = "foo-secret")
Sys.setenv("AWS_PROFILE" = "Alice")
Sys.setenv("AWS_SESSION_TOKEN" = "foo-token")
Sys.setenv("AWS_DEFAULT_REGION" = "foo-region")
# tests
cred <- locate_credentials()
expect_equal(cred[["key"]], "foo-key")
expect_equal(cred[["secret"]], "foo-secret")
Sys.unsetenv("AWS_ACCESS_KEY_ID")
Sys.unsetenv("AWS_SECRET_ACCESS_KEY")
cred <- locate_credentials()
expect_equal(cred[["key"]], "Alice_access_key_ID")
expect_equal(cred[["secret"]], "Alice_secret_access_key")
do.call("Sys.setenv", as.list(e))
})
test_that("locate_credentials() errors on unknown profile", {
expect_error(locate_credentials(profile = "buzz"),
"Could not find profile matching" )
})
}
test_that("locate_credentials() is noisy with verbose = TRUE", {
skip_on_cran()
# save environment variables
e <- Sys.getenv(c("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_DEFAULT_REGION", "AWS_PROFILE"))
# set environment variables
Sys.setenv("AWS_ACCESS_KEY_ID" = "foo-key")
Sys.setenv("AWS_SECRET_ACCESS_KEY" = "foo-secret")
Sys.setenv("AWS_SESSION_TOKEN" = "foo-token")
Sys.setenv("AWS_DEFAULT_REGION" = "foo-region")
Sys.unsetenv("AWS_PROFILE")
# tests
expect_message(locate_credentials(verbose = TRUE), "Locating credentials")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
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.