test_that("user_pins_board uses a local board with no Connect creds", { withr::local_envvar(CONNECT_SERVER = "", CONNECT_API_KEY = "") board <- user_pins_board(NULL) expect_s3_class(board, "pins_board") expect_false(inherits(board, "pins_board_connect")) }) test_that("user_pins_board scopes the board to the viewer's account", { fake_session <- list( request = list(HTTP_POSIT_CONNECT_USER_SESSION_TOKEN = "viewer-token") ) local_mocked_bindings( connect_board = function(token) mock_board_connect(account = "viewer") ) board <- user_pins_board(fake_session) expect_s3_class(board, "pins_board_connect") expect_equal(board$account, "viewer") }) test_that("user_pins_board uses the app board with app creds, no token", { withr::local_envvar( CONNECT_SERVER = "https://connect.example.com", CONNECT_API_KEY = "app-key" ) local_mocked_bindings( app_pins_board = function() mock_board_connect(account = "publisher") ) board <- user_pins_board(NULL) expect_s3_class(board, "pins_board_connect") expect_equal(board$account, "publisher") }) test_that("connect_board errors when connectapi is unavailable", { skip_if( requireNamespace("connectapi", quietly = TRUE), "connectapi is installed" ) expect_error( connect_board("viewer-token"), class = "connectapi_not_installed" ) }) test_that("is_rack_backend recognizes pins boards and the rack_backend class", { expect_true(is_rack_backend(pins::board_temp())) expect_true(is_rack_backend(mock_board_connect())) expect_true(is_rack_backend(structure(list(), class = "rack_backend"))) expect_true( is_rack_backend(structure(list(), class = c("demo_store", "rack_backend"))) ) expect_false(is_rack_backend(list())) expect_false(is_rack_backend(42)) expect_false(is_rack_backend(structure(list(), class = "not_a_backend"))) }) test_that("get_session_backend accepts a non-pins backend on the contract", { demo <- structure(list(), class = c("demo_store", "rack_backend")) withr::local_options(blockr.session_mgmt_backend = function() demo) expect_identical(get_session_backend(), demo) }) test_that("get_session_backend rejects a value that is not a rack backend", { withr::local_options( blockr.session_mgmt_backend = function() list(nope = TRUE) ) expect_error(get_session_backend(), class = "invalid_session_backend") })