Nothing
test_that("replay_request replays the original request", {
# Create a mock server
app <- fiery::Fire$new()
app$on("request", function(server, request, ...) {
response <- request$respond()
response$status <- 200L
response$body <- request$headers$user_agent
response$type <- "text/plain"
TRUE
})
# Create session state from an original request
session_state <- list(
state = "random_state_123",
time = Sys.time(),
method = "GET",
url = "http://example.com/api/data?param=value",
headers = list(
host = "example.com",
`user-agent` = "test-agent"
),
body = raw(0),
from = "http://example.com/previous"
)
# Create current request (callback from OAuth provider)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback?code=auth_code&state=random_state_123"
))
response <- current_request$respond()
# Call replay_request
result <- replay_request(current_request, response, session_state, app)
# Should return FALSE (don't continue processing)
expect_false(result)
# Response should have the replayed content
expect_equal(response$status, 200L)
expect_equal(response$body, "test-agent")
})
test_that("replay_request handles POST requests with body", {
# Create a mock server that echoes the body
app <- fiery::Fire$new()
app$on("request", function(server, request, ...) {
response <- request$respond()
response$status <- 201L
response$body <- paste("Received:", rawToChar(request$body_raw))
response$type <- "text/plain"
TRUE
})
# Create session state from a POST request
post_body <- charToRaw('{"key":"value"}')
session_state <- list(
state = "state_456",
time = Sys.time(),
method = "POST",
url = "http://example.com/api/create",
headers = list(
host = "example.com",
`content-type` = "application/json"
),
body = post_body,
from = "http://example.com/form"
)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback?code=auth_code"
))
response <- current_request$respond()
result <- replay_request(current_request, response, session_state, app)
expect_false(result)
expect_equal(response$status, 201L)
expect_match(response$body, "Received.*key.*value")
})
test_that("replay_request handles query parameters", {
app <- fiery::Fire$new()
app$on("request", function(server, request, ...) {
response <- request$respond()
response$status <- 200L
# Echo back the query parameters
response$body <- jsonlite::toJSON(request$query)
TRUE
})
session_state <- list(
state = "state_query",
time = Sys.time(),
method = "GET",
url = "http://example.com/search?q=test&page=2",
headers = list(host = "example.com"),
body = raw(0),
from = "http://example.com/"
)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback"
))
response <- current_request$respond()
result <- replay_request(current_request, response, session_state, app)
expect_false(result)
expect_equal(jsonlite::fromJSON(response$body)$q, "test")
})
test_that("redirect_back redirects to original location", {
session_state <- list(
state = "state_redirect",
time = Sys.time(),
method = "GET",
url = "http://example.com/protected",
headers = list(host = "example.com"),
body = raw(0),
from = "http://example.com/landing-page"
)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback"
))
response <- current_request$respond()
# Mock server (not used by redirect_back but required by signature)
app <- fiery::Fire$new()
result <- redirect_back(current_request, response, session_state, app)
# Should return FALSE
expect_false(result)
# Should set 307 redirect status
expect_equal(response$status, 307L)
# Should redirect to the 'from' location
expect_equal(response$get_header("location"), "http://example.com/landing-page")
})
test_that("custom on_auth function can be created", {
# Example custom on_auth function
custom_success_page <- function(request, response, session_state, server) {
response$status <- 200L
response$body <- "Successfully logged in!"
response$type <- "text/html"
FALSE
}
session_state <- list(
state = "state",
time = Sys.time(),
method = "GET",
url = "http://example.com/protected",
headers = list(host = "example.com"),
body = raw(0),
from = "http://example.com/"
)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback"
))
response <- current_request$respond()
app <- fiery::Fire$new()
result <- custom_success_page(current_request, response, session_state, app)
expect_false(result)
expect_equal(response$status, 200L)
expect_equal(response$body, "Successfully logged in!")
})
test_that("replay_request handles empty headers", {
app <- fiery::Fire$new()
app$on("request", function(server, request, ...) {
response <- request$respond()
response$status <- 200L
response$body <- "OK"
TRUE
})
session_state <- list(
state = "state",
time = Sys.time(),
method = "GET",
url = "http://example.com/api",
headers = list(), # Empty headers
body = raw(0),
from = "http://example.com/"
)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback"
))
response <- current_request$respond()
result <- replay_request(current_request, response, session_state, app)
expect_false(result)
expect_equal(response$status, 200L)
})
test_that("replay_request handles empty body", {
app <- fiery::Fire$new()
app$on("request", function(server, request, ...) {
response <- request$respond()
response$status <- 200L
response$body <- "OK"
TRUE
})
session_state <- list(
state = "state",
time = Sys.time(),
method = "GET",
url = "http://example.com/api",
headers = list(host = "example.com"),
body = raw(0), # Empty body
from = "http://example.com/"
)
current_request <- reqres::Request$new(fiery::fake_request(
"http://example.com/auth/callback"
))
response <- current_request$respond()
result <- replay_request(current_request, response, session_state, app)
expect_false(result)
expect_equal(response$status, 200L)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.