switchgear-service 0.1.13

Service layer and API implementations for Switchgear LNURL load balancer
Documentation
use crate::common::db::TestPostgresDatabase;
use crate::common::discovery;
use switchgear_service::components::discovery::db::DbDiscoveryBackendStore;
use switchgear_testing::services::IntegrationTestServices;
use uuid::Uuid;

async fn create_postgres_store() -> Option<(DbDiscoveryBackendStore, TestPostgresDatabase)> {
    let db_name = format!(
        "test_discovery_{}",
        Uuid::new_v4().to_string().replace("-", "")
    );
    let services = IntegrationTestServices::create().unwrap();

    let postgres = match services.postgres() {
        None => return None,
        Some(v) => v,
    };
    let db = TestPostgresDatabase::new(db_name, postgres);

    let store = DbDiscoveryBackendStore::connect(db.connection_url(), 5)
        .await
        .unwrap();

    store.migrate_up().await.unwrap();

    Some((store, db))
}

#[tokio::test]
async fn test_postgres_post_new_backend_returns_address() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_post_new_backend_returns_address(store).await;
}

#[tokio::test]
async fn test_postgres_get_returns_correct_backends() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_get_returns_correct_backends(store).await;
}

#[tokio::test]
async fn test_postgres_delete_removes_and_returns_backends() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_delete_removes_target(store).await;
}

#[tokio::test]
async fn test_postgres_put_new_backend_returns_true() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_put_new_backend_returns_true(store).await;
}

#[tokio::test]
async fn test_postgres_put_existing_backend_updates_and_returns_false() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_put_existing_backend_updates_and_returns_false(store).await;
}

#[tokio::test]
async fn test_postgres_test_patch_backend() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_patch_backend(store).await;
}

#[tokio::test]
async fn test_postgres_test_patch_missing_backend() {
    let (store, _guard) = match create_postgres_store().await {
        None => return,
        Some(v) => v,
    };
    discovery::test_patch_missing_backend(store).await;
}