tests/testthat/test05_outlook.R

tenant <- "consumers"
app <- Sys.getenv("AZ_TEST_NATIVE_APP_ID")

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

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

tok <- get_test_token(tenant, app, c("Mail.Send", "Mail.ReadWrite", "User.Read"))
if(is.null(tok))
    skip("Outlook tests skipped: unable to login to consumers tenant")

inbox <- try(call_graph_endpoint(tok, "me/mailFolders/inbox"), silent=TRUE)
if(inherits(inbox, "try-error"))
    skip("Outlook tests skipped: service not available")

outl <- get_personal_outlook(token=tok)

test_that("Outlook client works",
{
    expect_is(outl, c("ms_outlook", "ms_outlook_object"))

    folders <- outl$list_folders()
    expect_is(folders, "list")
    expect_true(all(sapply(folders, inherits, "ms_outlook_folder")))

    f1 <- folders[[1]]$properties$displayName
    fpager <- outl$list_folders(filter=sprintf("displayName eq '%s'", f1), n=NULL)
    expect_is(fpager, "ms_graph_pager")
    folders1 <- fpager$value
    expect_true(length(folders1) ==1 && inherits(folders1[[1]], "ms_outlook_folder"))

    emails <- outl$list_emails()
    expect_is(emails, "list")
    expect_true(all(sapply(emails, inherits, "ms_outlook_email")))

    subj1 <- emails[[1]]$properties$subject
    empager <- outl$list_emails(filter=sprintf("subject eq '%s'", subj1), n=NULL)
    expect_is(empager, "ms_graph_pager")
    emails1 <- empager$value
    expect_true(length(emails1) == 1 && inherits(emails1[[1]], "ms_outlook_email"))

    f1name <- make_name()
    f1 <- outl$create_folder(f1name)
    expect_is(f1, "ms_outlook_folder")

    expect_error(outl$create_folder(f1name))
    f11 <- outl$get_folder(f1name)
    expect_identical(f1$properties$id, f11$properties$id)
    expect_silent(outl$delete_folder(f1name, confirm=FALSE))

    fnames <- sapply(outl$list_folders(), function(x) x$properties$displayName)
    expect_false(f1name %in% fnames)

    expect_is(outl$get_inbox(), "ms_outlook_folder")
    expect_is(outl$get_drafts(), "ms_outlook_folder")
    expect_is(outl$get_sent_items(), "ms_outlook_folder")
    expect_is(outl$get_deleted_items(), "ms_outlook_folder")

    eml <- outl$create_email("hello from R")
    expect_is(eml, "ms_outlook_email")
    expect_silent(eml$delete(confirm=FALSE))
})

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.