warg-cli 0.10.0

The warg registry command line interface.
Documentation
//! Tests for the in-memory storage backend.

use super::{support::*, *};
use anyhow::Result;
use warg_client::api;

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_starts_with_initial_checkpoint() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_initial_checkpoint(&config).await
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_publishes_a_component() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_component_publishing(&config).await?;

    // There should be two log entries in the registry
    let client = api::Client::new(config.home_url.as_ref().unwrap(), None)?;
    let ts_checkpoint = client.latest_checkpoint(None).await?;
    assert_eq!(
        ts_checkpoint.as_ref().checkpoint.log_length,
        2,
        "expected two log entries (initial + component)"
    );

    test_fetch_package_names(&config).await?;

    Ok(())
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_yanks_a_package() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_package_yanking(&config).await?;

    // There should be three entries in the registry
    let client = api::Client::new(config.home_url.as_ref().unwrap(), None)?;
    let ts_checkpoint = client.latest_checkpoint(None).await?;
    assert_eq!(
        ts_checkpoint.as_ref().checkpoint.log_length,
        3,
        "expected three log entries (initial + release + yank)"
    );

    Ok(())
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_publishes_a_wit_package() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_wit_publishing(&config).await?;

    // There should be two log entries in the registry
    let client = api::Client::new(config.home_url.as_ref().unwrap(), None)?;
    let ts_checkpoint = client.latest_checkpoint(None).await?;
    assert_eq!(
        ts_checkpoint.as_ref().checkpoint.log_length,
        2,
        "expected two log entries (initial + wit)"
    );

    Ok(())
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_rejects_non_wasm_content() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_wasm_content_policy(&config).await
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_rejects_unauthorized_signing_key() -> Result<()> {
    let (_server, config) = spawn_server(
        &root().await?,
        None,
        None,
        Some(vec![(
            "test".to_string(),
            test_signing_key().public_key().fingerprint(),
        )]),
    )
    .await?;

    test_unauthorized_signing_key(&config).await
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_rejects_unknown_signing_key() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_unknown_signing_key(&config).await
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_rejects_invalid_signature() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_invalid_signature(&config).await
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_formats_custom_content_urls() -> Result<()> {
    let (_server, config) = spawn_server(
        &root().await?,
        Some("https://example.com".parse().unwrap()),
        None,
        None,
    )
    .await?;
    test_custom_content_url(&config).await
}

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn it_get_ledger() -> Result<()> {
    let (_server, config) = spawn_server(&root().await?, None, None, None).await?;
    test_get_ledger(&config).await
}