tests/testthat/test00_auth.R

app <- Sys.getenv("AZ_TEST_NATIVE_APP_ID")

if(app == "")
    skip("Authentication tests skipped: Microsoft Graph credentials not set")

if(!interactive())
    skip("OneDrive tests skipped: must be in interactive session")


scopes <- c("Files.ReadWrite.All", "User.Read")

test_that("Authenticating works with consumers tenant",
{
    tenant <- "consumers"

    tok <- get_test_token(tenant, app, scopes)
    if(is.null(tok))
        skip("Consumer tenant tests skipped: unable to login to consumers tenant")

    drv <- try(call_graph_endpoint(tok, "me/drive"), silent=TRUE)
    if(inherits(drv, "try-error"))
        skip("Consumer tenant tests skipped: service not available")

    expect_type(drv, "list")
    expect_true("id" %in% names(drv) && is.character(drv$id) && nchar(drv$id) > 0)

    gr <- do_login(tenant, app, scopes, NULL)
    expect_is(gr, "ms_graph")

    drv2 <- gr$call_graph_endpoint("me/drive")

    expect_type(drv2, "list")
    expect_true("id" %in% names(drv2) && is.character(drv2$id) && nchar(drv2$id) > 0)
    expect_identical(drv$properties$id, drv2$properties$id)
})


test_that("Authenticating works with org tenant",
{
    tenant <- Sys.getenv("AZ_TEST_TENANT_ID")
    if(tenant == "")
        skip("Authentication tests skipped: Microsoft Graph credentials not set")

    tok <- get_test_token(tenant, app, scopes)
    if(is.null(tok))
        skip("Org tenant tests skipped: unable to login to consumers tenant")

    drv <- try(call_graph_endpoint(tok, "me/drive"), silent=TRUE)
    if(inherits(drv, "try-error"))
        skip("Org tenant tests skipped: service not available")

    expect_type(drv, "list")
    expect_true("id" %in% names(drv) && is.character(drv$id) && nchar(drv$id) > 0)

    # munging of app/scopes may be required for org tenants
    app <- choose_app(app)
    scopes <- set_default_scopes(scopes, app)

    gr <- do_login(tenant, app, scopes, NULL)
    expect_is(gr, "ms_graph")

    drv2 <- gr$call_graph_endpoint("me/drive")

    expect_type(drv2, "list")
    expect_true("id" %in% names(drv2) && is.character(drv2$id) && nchar(drv2$id) > 0)
    expect_identical(drv$properties$id, drv2$properties$id)
})

Try the Microsoft365R package in your browser

Any scripts or data that you put into this service are public.

Microsoft365R documentation built on May 31, 2023, 6:10 p.m.