test_helpers.rs 1.97 KiB
use r2d2_sqlite::SqliteConnectionManager;
use secrecy::Secret;
use std::{
    net::{IpAddr, Ipv4Addr},
    time::Duration,
};
use uuid::Uuid;
use crate::{
    async_db_connection::AsyncConnection, command_line_interface::CliOptions, error::Result,
    global_static::get_cached_schema, v5::migrations_api,
pub async fn get_memory_connection() -> Result<AsyncConnection> {
    let manager = SqliteConnectionManager::memory();
    let pool = r2d2::Pool::builder()
        .max_size(1)
        .connection_timeout(Duration::from_secs(5))
        .build(manager)?;
    let conn = pool.get()?;
    conn.execute_batch(
        PRAGMA foreign_keys = ON;
    )?;
    let mut conn = AsyncConnection::new(Uuid::new_v4().simple().to_string().into(), conn);
    migrations_api::update_schema(&mut conn).await?;
    get_cached_schema().init(&mut conn).await?;
    Ok(conn)
pub fn default_cli() -> CliOptions {
    CliOptions {
        port: 3030,
        owners: "ANY".to_string(),
        use_kubernetes: false,
        kubernetes_plugin_limit_per_owner: 5,
        kubernetes_ignore_limits: false,
        plugins_callback_address: None,
        pod_allowed_origins: vec!["*".to_string()],
        plugins_public_domain: None,
        plugins_docker_network: None,
        insecure_plugin_script: Vec::new(),
        tls_pub_crt: "".to_string(),
        tls_priv_key: "".to_string(),
        non_tls: true,
        insecure_non_tls: Some(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0))),
        shared_server: false,
        email_smtp_relay: None,
        email_smtp_port: 465,
        email_smtp_user: None,
        email_smtp_password: None,
        email_smtp_sender_address: None,
        owner_key_for_pod: Default::default(),
        db_key_for_pod: Secret::new(String::default()),
        shared_plugins: Vec::new(),
        opened_connections: None,
        owner_key_for_example_data: None,
        db_key_for_example_data: None,
        plugin_auth_key: Secret::new(String::default()),