context("Tests reading of a credentials file")
# http://docs.aws.amazon.com/cli/latest/reference/configure/
# https://blogs.aws.amazon.com/security/post/Tx3D6U6WSFGOK2H/A-New-and-Standardized-Way-to-Manage-Credentials-in-the-AWS-SDKs
test_that("default_credentials_file() works", {
skip_on_cran()
expect_is(default_credentials_file(), "character", label = "default_credentials_file() returns path")
})
test_that("read_credentials() works", {
skip_on_cran()
expect_is(read_credentials(file = "credentials"), "aws_credentials", label = "Read credentials correctly")
alice <- read_credentials(file = "credentials")[["Alice"]]
bob <- read_credentials(file = "credentials")[["Bob"]]
expect_equal(bob[["AWS_SECRET_ACCESS_KEY"]], "Bob_secret_access_key", label = "final line value read correctly")
expect_false(identical(alice, bob), label = "Read distinct profiles correctly")
expect_false("[" %in% names(alice))
expect_false("[" %in% names(bob))
})
test_that("read_credentials() works even absent EOL character", {
skip_on_cran()
cred <- read_credentials(file = "credentials-no-eol-char")
expect_is(cred, "aws_credentials", label = "Read credentials successfully")
expect_equal(cred[["Bob"]][["AWS_SECRET_ACCESS_KEY"]], "Bob_secret_access_key", label = "final line value read correctly")
})
test_that("read_credentials() fails when file is missing", {
skip_on_cran()
expect_error(read_credentials(file = "foo"), label = "Read credentials fails on missing file")
})
context("Tests use_credentials()")
test_that("use_credentials() sets environment variables correctly", {
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
use_credentials(profile = "default", file = "credentials")
expect_equal(Sys.getenv("AWS_ACCESS_KEY_ID"), "ACCESS_KEY")
expect_equal(Sys.getenv("AWS_SECRET_ACCESS_KEY"), "SECRET_KEY")
expect_equal(Sys.getenv("AWS_SESSION_TOKEN"), "TOKEN")
expect_equal(Sys.getenv("AWS_DEFAULT_REGION"), "")
# restore environment variables
do.call("Sys.setenv", as.list(e))
})
context("parse_credentials()")
test_that("parse_credentials() handles some pathological cases", {
expect_equal(
parse_credentials("[has ]spaces]\naws=foo\nthing=bar"),
structure(list("has " = list(AWS = "foo", THING = "bar")), class = 'aws_credentials')
)
expect_equal(
parse_credentials("[has spaces]\naws=foo\nthing=bar"),
structure(list("has spaces" = list(AWS = "foo", THING = "bar")), class = 'aws_credentials')
)
expect_equal(
parse_credentials("[spaces]\naws=foo\nthing=bar\n# baz = quux"),
structure(list("spaces" = list(AWS = "foo", THING = "bar")), class = 'aws_credentials')
)
expect_equal(
parse_credentials("[spaces]\naws=foo\nthing=bar\n# baz = quux\ndo = dad"),
structure(list("spaces" = list(AWS = "foo", THING = "bar", DO = "dad")), class = 'aws_credentials')
)
expect_equal(
parse_credentials("[spaces]\naws=foo\ns3 =\n thing=bar\n[nspaces]\naws= foo\nthing = bar\n\n"),
structure(list("spaces" = list(AWS = "foo", S3 = "thing=bar"),
"nspaces" = list(AWS="foo", THING="bar")), class = 'aws_credentials')
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.