rustauth-cli 0.2.0

Command-line tools for RustAuth.
Documentation
#![allow(clippy::expect_used)]

use assert_cmd::Command;
use predicates::prelude::*;
use rustauth_cli::secret::{assess_secret, generate_secret, SecretSeverity};

#[test]
fn generated_secret_passes_strength_check() {
    let secret = generate_secret(32);
    let assessment = assess_secret(&secret, true);

    assert_eq!(assessment.severity, SecretSeverity::Ok);
}

#[test]
fn weak_secret_is_rejected_for_production() {
    let assessment = assess_secret("secret-a-at-least-32-chars-long!!", true);

    assert_eq!(assessment.severity, SecretSeverity::Error);
}

#[test]
fn secret_env_line_uses_rustauth_secret_key() {
    Command::cargo_bin("rustauth")
        .expect("binary")
        .args(["secret", "--env-line"])
        .assert()
        .success()
        .stdout(predicate::str::starts_with("RUSTAUTH_SECRET="));
}

#[test]
fn secret_check_env_reports_missing_variable_name() {
    Command::cargo_bin("rustauth")
        .expect("binary")
        .args(["secret", "--check-env", "RUSTAUTH_SECRET_MISSING_FOR_TEST"])
        .env_remove("RUSTAUTH_SECRET_MISSING_FOR_TEST")
        .assert()
        .failure()
        .stderr(predicate::str::contains(
            "RUSTAUTH_SECRET_MISSING_FOR_TEST is not set",
        ));
}