tests/testthat/test03_resource.R

context("Cluster creation")

tenant <- Sys.getenv("AZ_TEST_TENANT_ID")
app <- Sys.getenv("AZ_TEST_APP_ID")
password <- Sys.getenv("AZ_TEST_PASSWORD")
subscription <- Sys.getenv("AZ_TEST_SUBSCRIPTION")

if(tenant == "" || app == "" || password == "" || subscription == "")
    skip("Resource creation tests skipped: ARM credentials not set")

username <- Sys.getenv("AZ_TEST_KUSTO_USERNAME")
if(username == "")
    skip("Resource creation tests skipped: database user not set")

srvloc <- Sys.getenv("AZ_TEST_KUSTO_NEW_LOCATION")
if(srvloc == "")
    skip("Resource creation tests skipped: no location set")


sub <- AzureRMR::az_rm$new(tenant=tenant, app=app, password=password)$get_subscription(subscription)

# random resource group/server names
rgname <- paste(sample(letters, 20, replace=TRUE), collapse="")
srvname <- paste(sample(letters, 10, replace=TRUE), collapse="")


test_that("Cluster creation works",
{
    expect_false(sub$resource_group_exists(rgname))
    rg <- sub$create_resource_group(rgname, location=srvloc)
    expect_true(sub$resource_group_exists(rgname))

    # this should 10-15 minutes
    cat("Cluster creation started at ", strftime(Sys.time(), "%Y-%m-%d %H:%M:%S", usetz=TRUE), "\n")
    srv <- rg$create_kusto_cluster(srvname, wait=TRUE)
    expect_true(is_kusto_cluster(srv))

    srv <- rg$get_kusto_cluster(srvname)
    expect_true(is_kusto_cluster(srv))

    default_tenant <- srv$get_default_tenant()
    expect_type(default_tenant, "character")
    expect_true(AzureAuth::normalize_tenant(tenant) == default_tenant)

    db <- srv$create_database("db")
    expect_true(is_kusto_database(db))

    dbs <- srv$list_databases()
    expect_true(is.list(dbs) && all(sapply(dbs, is_kusto_database)))

    db2 <- srv$get_database("db")
    expect_true(is_kusto_database(db2))
    expect_identical(db$name, db2$name)

    db$add_principals(username, role="Admin", fqn=sprintf("aaduser=%s", username))

    pr <- db$list_principals()
    expect_is(pr, "data.frame")

    # role mismatch -> principal not removed
    db$remove_principals(username, fqn=sprintf("aaduser=%s", username))

    pr2 <- db$list_principals()
    expect_true(nrow(pr) == nrow(pr2))

    db$remove_principals(username, role="Admin", fqn=sprintf("aaduser=%s", username))

    pr3 <- db$list_principals()
    expect_true(nrow(pr) > nrow(pr3))

    srv$delete_database("db", confirm=FALSE)
})


teardown(
{
    sub$delete_resource_group(rgname, confirm=FALSE)
})
Azure/AzureKusto documentation built on Oct. 16, 2023, 7:04 p.m.