cloud_terrastodon_azure 0.35.1

Helpers for interacting with Azure for the Cloud Terrastodon project
use crate::az_account_list;
use cloud_terrastodon_azure_types::AzureTenantId;
use eyre::bail;

pub async fn get_default_tenant_id() -> eyre::Result<AzureTenantId> {
    let accounts = az_account_list().await?;
    let num_accounts = accounts.len();
    let Some(default_account) = accounts.into_iter().find(|account| account.is_default) else {
        bail!(
            "Failed to find default account among {} accounts.",
            num_accounts
        );
    };
    Ok(default_account.tenant_id)
}

pub async fn get_test_tenant_id() -> eyre::Result<AzureTenantId> {
    use crate::AzureTenantAliasExt;
    use cloud_terrastodon_azure_types::AzureTenantAlias;

    AzureTenantAlias::try_new("test")?.resolve().await
}

#[cfg(test)]
mod test {
    use crate::get_test_tenant_id;

    #[tokio::test]
    pub async fn it_works() -> eyre::Result<()> {
        let tenant = get_test_tenant_id().await?;
        assert!(!tenant.to_string().is_empty());
        Ok(())
    }
}