test_that("bearer token doesn't accidentally expose secrets", {
  expect_snapshot(
    rtweet_app("abc")
  )
})

test_that("can set and reset auth", {

  auth <- auth_get()
  old <- auth_as(rtweet_app("abc"))
  expect_equal(old, auth)
  auth_as(auth)
})

test_that("can save and reload auth", {
  withr::local_options("rtweet:::config_dir" = tempfile())

  auth1 <- rtweet_app("abc")
  suppressMessages({
    auth_save(auth1, "test")
    auth2 <- find_auth("test")
  })
  expect_equal(auth1, auth2)
})

test_that("find auth errors politely", {
  withr::local_options("rtweet:::config_dir" = tempfile())
  expect_snapshot(error = TRUE, {
    find_auth(1:10)
    find_auth("not-present")
  })
})

test_that("default_cached_auth() handles 0, 1, and n saved", {
  withr::local_options("rtweet:::config_dir" = tempfile())
  auth <- rtweet_app("abc")

  # Error if no default auth set up
  expect_snapshot(default_cached_auth(), error = TRUE)

  # Listing options if available
  suppressMessages(auth_save(auth, "test1"))
  suppressMessages(auth_save(auth, "test2"))
  expect_snapshot(default_cached_auth(), error = TRUE)

  # Uses default if present
  suppressMessages(auth_save(auth, "default"))
  expect_equal(default_cached_auth(), auth)
})

test_that("is_developing works", {
  expect_true(is_developing())
})

test_that("rtweet_user works", {
  skip("requires manual testing")
  skip("API v1.1 no longer works")
  # Avoid saving it but check that it is redirected in the browser.
  withr::local_options("rtweet:::config_dir" = tempfile())
  expect_error(rtweet_user(), NA)
})

test_that("rtweet_bot works", {
  skip("requires manual testing")
  withr::local_options("rtweet:::config_dir" = tempfile())
  expect_error(rtweet_bot(), NA)
})

test_that("rtweet_oauth2 works", {
  # Avoid saving it but check that it is redirected in the browser.
  withr::local_options("rtweet:::config_dir" = tempfile())
  expect_error(b <- rtweet_client(app = "academic_dev"))
  skip("requires manual testing")
  expect_error(b <- rtweet_client(client_id = "",
                                  client_secret = "",
                                  app = "academic_dev"), NA)
  client_as(b)
  expect_error(rtweet_oauth2(), NA)
})
