test_that("verify_content_name works with valid names", {
short_name <- "123"
expect_equal(verify_content_name(short_name), short_name)
long_name <- "abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmn"
expect_equal(verify_content_name(long_name), long_name)
uuid <- uuid::UUIDgenerate()
expect_equal(verify_content_name(uuid), uuid)
})
test_that("verify_content_name fails for invalid names", {
expect_error(verify_content_name("a"))
expect_error(verify_content_name(NA))
# 65 characters
expect_error(verify_content_name("abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmno"))
expect_error(verify_content_name(NULL))
expect_error(verify_content_name("abc!@#$"))
expect_error(verify_content_name("123 abc"))
})
test_that("create_random_name works with no length", {
expect_type(create_random_name(), "character")
})
test_that("create_random_name works with length", {
expect_equal(nchar(create_random_name(200)), 200)
expect_equal(nchar(create_random_name(1)), 1)
})
with_mock_api({
test_that("we can retrieve the content list", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
expect_true(validate_R6_class(con, "Connect"))
content_list <- get_content(con)
expect_s3_class(content_list, "data.frame")
expect_equal(nrow(content_list), 3)
})
test_that("we can retrieve a content item", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
expect_true(validate_R6_class(item, "Content"))
expect_equal(
item$get_url(),
"https://connect.example/content/f2f37341-e21d-3d80-c698-a935ad614066/"
)
expect_snapshot(print(item))
})
test_that("browse URLs", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
# Inject into this function something other than utils::browseURL
# so we can assert that it is being called without actually trying to open a browser
suppressMessages(trace("browse_url", where = connectapi::browse_solo, tracer = quote({
browseURL <- function(x) warning(paste("Opening", x))
}), at = 1, print = FALSE))
expect_warning(
browse_solo(item),
"Opening https://connect.example/content/f2f37341-e21d-3d80-c698-a935ad614066/"
)
expect_warning(
browse_dashboard(item),
"Opening https://connect.example/connect/#/apps/f2f37341-e21d-3d80-c698-a935ad614066"
)
suppressMessages(untrace("browse_url", where = connectapi::browse_solo))
})
test_that("we can modify a content item", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
expect_PATCH(
item$update(description = "new description"),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066",
'{"description":"new description"}'
)
})
test_that("we can delete a content item", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
expect_DELETE(item$danger_delete())
})
test_that("we can get the content item's permissions", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
perms <- item$permissions()
expect_type(perms, "list")
expect_equal(perms[[1]]$id, 94)
# Now get perms with id specified
one_perm <- item$permissions(id = 94)
expect_equal(one_perm, perms[[1]])
})
test_that("we can modify the content item's permissions", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
# Add one
expect_POST(
item$permissions_add("a01792e3-2e67-402e-99af-be04a48da074", "user", "viewer"),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions",
'{"principal_guid":"a01792e3-2e67-402e-99af-be04a48da074","principal_type":"user","role":"viewer"}'
)
# Update one
expect_PUT(
item$permissions_update(94, "a01792e3-2e67-402e-99af-be04a48da074", "user", "editor"),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions/94",
'{"principal_guid":"a01792e3-2e67-402e-99af-be04a48da074","principal_type":"user","role":"editor"}'
)
expect_DELETE(
item$permissions_delete("a01792e3-2e67-402e-99af-be04a48da074"),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions"
)
})
test_that("content environment vars", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
item <- content_item(con, "f2f37341-e21d-3d80-c698-a935ad614066")
expect_GET(
item$environment(),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/environment"
)
expect_PATCH(
item$environment_set(VAR_NAME = "new_value"),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/environment",
'[{"name":"VAR_NAME","value":"new_value"}]'
)
expect_PATCH(
item$environment_set(VAR_NAME = NA),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/environment",
'[{"name":"VAR_NAME","value":null}]'
)
expect_PUT(
item$environment_all(VAR_NAME = "new_value"),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/environment",
'[{"name":"VAR_NAME","value":"new_value"}]'
)
expect_PUT(
item$environment_all(),
"https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/environment",
"[]"
)
})
})
without_internet({
test_that("Query params to connect$content()", {
con <- Connect$new(server = "https://connect.example", api_key = "fake")
expect_GET(
con$content(),
"https://connect.example/__api__/v1/content?include=tags%2Cowner"
)
expect_GET(
con$content("a01792e3-2e67-402e-99af-be04a48da074"),
"https://connect.example/__api__/v1/content/a01792e3-2e67-402e-99af-be04a48da074"
)
expect_GET(
con$content(include = NULL),
"https://connect.example/__api__/v1/content"
)
expect_GET(
con$content(owner_guid = "a01792e3-2e67-402e-99af-be04a48da074"),
"https://connect.example/__api__/v1/content?owner_guid=a01792e3-2e67-402e-99af-be04a48da074&include=tags%2Cowner"
)
expect_GET(
con$content(name = "A name for content"),
"https://connect.example/__api__/v1/content?name=A%20name%20for%20content&include=tags%2Cowner"
)
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.