tests/testthat/test-secret-vec.R

library(patrick)

test_that("new_secret() works", {
  x <- new_secret()
  expect_s3_class(x, "vault_secret")
  expect_length(x, 0L)
})

test_that("vec_ptype_{abbr,full} generate the correct strings", {
  expect_equal(vec_ptype_abbr(new_secret()), "scrt")
  expect_equal(vec_ptype_full(new_secret()), "secret")
})

test_that("is_secret() works", {
  expect_true(is_secret(new_secret()))
  expect_false(is_secret("plaintext"))
  expect_false(is_secret(1L))
  expect_false(is_secret(1))
  expect_false(is_secret(TRUE))
  expect_false(is_secret(NULL))
})

with_parameters_test_that(
  "as_secret() works for characters",
  {
    expect_s3_class(as_secret(val), "vault_secret")
  },
  cases(
    single = list(val = "abc"),
    multiple = list(val = letters),
    short = list(val = "a"),
    long = list(val = strrep("a", 1000000L)),
    spaces = list(val = "    "),
    ws = list(val = " \t\n"),
    na = list(val = NA_character_)
  )
)

with_parameters_test_that(
  "as_secret() fails for non-characters",
  {
    expect_error(as_secret(val))
  },
  cases(
    integer = list(val = 1L),
    double = list(val = 1),
    logical = list(val = TRUE)
  )
)

test_that("vec_ptype2.vault_secret works for two secrets", {
  expect_equal(vec_ptype2(new_secret(), new_secret()), new_secret())
})

with_parameters_test_that(
  paste0(
    "vec_ptype2.vault_secret.XXX and vec_ptype2.XXX.vault_secret ",
    "fails where XXX != vault_secret"
  ),
  {
    expect_error(vec_ptype2(x, y))
    expect_error(vec_ptype2(y, x))
  },
  cases(
    list(x = new_secret(), y = character()),
    list(x = new_secret(), y = logical()),
    list(x = new_secret(), y = integer()),
    list(x = new_secret(), y = double())
  )
)

verify_output("test-secret-vec.txt", {
  new_secret()
  secret("mysecret")
  secret(letters)
  format(new_secret())
  format(secret("mysecret"))
  format(secret(letters))
})
shunsambongi/vault documentation built on March 19, 2020, 4:58 p.m.