fnox 1.25.1

A flexible secret management tool supporting multiple providers and encryption methods
Documentation
#!/usr/bin/env bats

setup() {
	load 'test_helper/common_setup'
	_common_setup
}

teardown() {
	_common_teardown
}

# Helper to create config with plain provider
setup_plain_provider() {
	cat >fnox.toml <<EOF
root = true

[providers.plain]
type = "plain"

[secrets]
TEST_SECRET = { provider = "plain", value = "test" }
EOF
}

# Helper to create config with multiple providers
setup_multiple_providers() {
	cat >fnox.toml <<EOF
root = true

[providers.plain1]
type = "plain"

[providers.plain2]
type = "plain"

[secrets]
TEST_SECRET = { provider = "plain1", value = "test" }
EOF
}

@test "fnox provider test requires provider name or --all" {
	setup_plain_provider

	assert_fnox_failure provider test
	assert_output --partial "specify a provider name or use --all"
}

@test "fnox provider test single provider succeeds" {
	setup_plain_provider

	assert_fnox_success provider test plain
	assert_output --partial "plain"
	assert_output --partial "connection successful"
}

@test "fnox provider test --all tests all providers" {
	setup_multiple_providers

	assert_fnox_success provider test --all
	assert_output --partial "Testing 2 providers"
	assert_output --partial "plain1"
	assert_output --partial "plain2"
	assert_output --partial "All 2 providers passed"
}

@test "fnox provider test -a is alias for --all" {
	setup_multiple_providers

	assert_fnox_success provider test -a
	assert_output --partial "Testing 2 providers"
	assert_output --partial "All 2 providers passed"
}

@test "fnox provider test --all with no providers" {
	cat >fnox.toml <<EOF
root = true

[secrets]
EOF

	assert_fnox_success provider test --all
	assert_output --partial "No providers configured"
}

@test "fnox provider test --all shows count in summary" {
	setup_plain_provider

	assert_fnox_success provider test --all
	assert_output --partial "Testing 1 provider..."
	assert_output --partial "All 1 provider passed"
}

@test "fnox provider test nonexistent provider fails" {
	setup_plain_provider

	assert_fnox_failure provider test nonexistent
	assert_output --partial "not found"
}

@test "fnox provider test visible alias t works" {
	setup_plain_provider

	assert_fnox_success provider t plain
	assert_output --partial "connection successful"
}