# 1. Create service account
# 2. Add key and download json
# 3. json <- jsonlite::read_json(path)
# 4. secret_write_rds(json, "tests/testthat/test-oauth-flow-jwt-google.rds", "HTTR2_KEY")
test_that("can generate token and use it automatically", {
secrets <- secret_read_rds(test_path("test-oauth-flow-jwt-google.rds"), "HTTR2_KEY")
client <- oauth_client(
id = secrets$client_id,
key = secrets$private_key,
token_url = secrets$token_uri,
auth = "body"
)
claim <- list(
iss = secrets$client_email,
scope = "https://www.googleapis.com/auth/userinfo.email",
aud = "https://oauth2.googleapis.com/token"
)
# Can generate token
token <- oauth_flow_bearer_jwt(client, claim)
expect_s3_class(token, "httr2_token")
# Can use it in request
resp <- request("https://openidconnect.googleapis.com/v1/userinfo") %>%
req_oauth_bearer_jwt(client, claim) %>%
req_perform() %>%
resp_body_json()
expect_type(resp, "list")
expect_equal(resp$email_verified, TRUE)
})
test_that("validates inputs", {
client1 <- oauth_client("test", "http://example.com")
expect_snapshot(oauth_flow_bearer_jwt(client1), error = TRUE)
client2 <- oauth_client("test", "http://example.com", key = "abc", auth_params = list(claim = "123"))
expect_snapshot(oauth_flow_bearer_jwt(client2, claim = NULL), error = TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.