mirror of
https://github.com/sbrow/envr.git
synced 2026-10-25 08:41:55 -04:00
88 lines
2.5 KiB
Odin
88 lines
2.5 KiB
Odin
#+test
|
|
package main
|
|
|
|
import "core:testing"
|
|
import "core:bufio"
|
|
import "core:os"
|
|
import "core:path/filepath"
|
|
import "core:strings"
|
|
|
|
@(test)
|
|
test_find_unbacked_finds_missing :: proc(t: ^testing.T) {
|
|
local := []string{"/a/.env", "/b/.env", "/c/.env"}
|
|
db := []EnvFile{{path = "/a/.env"}, {path = "/b/.env"}}
|
|
|
|
result := find_unbacked(local, db[:])
|
|
testing.expect_value(t, len(result), 1)
|
|
if len(result) > 0 {
|
|
testing.expect_value(t, result[0], "/c/.env")
|
|
}
|
|
}
|
|
|
|
@(test)
|
|
test_find_unbacked_all_backed :: proc(t: ^testing.T) {
|
|
local := []string{"/a/.env", "/b/.env"}
|
|
db := []EnvFile{{path = "/a/.env"}, {path = "/b/.env"}}
|
|
|
|
result := find_unbacked(local, db[:])
|
|
testing.expect_value(t, len(result), 0)
|
|
}
|
|
|
|
@(test)
|
|
test_find_unbacked_no_local :: proc(t: ^testing.T) {
|
|
local: []string
|
|
db := []EnvFile{{path = "/a/.env"}}
|
|
|
|
result := find_unbacked(local, db[:])
|
|
testing.expect_value(t, len(result), 0)
|
|
}
|
|
|
|
@(test)
|
|
test_find_unbacked_none_backed :: proc(t: ^testing.T) {
|
|
local := []string{"/a/.env", "/b/.env"}
|
|
db: []EnvFile
|
|
|
|
result := find_unbacked(local, db[:])
|
|
testing.expect_value(t, len(result), 2)
|
|
}
|
|
|
|
@(test)
|
|
test_cmd_check_remote_path :: proc(t: ^testing.T) {
|
|
base := test_temp_dir(t, "envr-test-check-remote-*")
|
|
defer os.remove_all(base)
|
|
cfg_path, _ := filepath.join({base, "config.json"}, context.temp_allocator)
|
|
cfg := new_config([]string{"fixtures/keys/insecure-test-key"}, cfg_path)
|
|
testing.expect(t, save_config(cfg, force = true), "config should save")
|
|
delete_config(&cfg)
|
|
|
|
db, db_ok := db_open(cfg_path)
|
|
testing.expect(t, db_ok, "db should open")
|
|
if !db_ok do return
|
|
file := make_test_env_file("spencer@example.com:/etc/umami.env", "abc123", "SECRET=value")
|
|
testing.expect(t, db_insert(&db, file), "remote record should insert")
|
|
db_close(&db)
|
|
|
|
out_b: strings.Builder
|
|
strings.builder_init(&out_b)
|
|
defer strings.builder_destroy(&out_b)
|
|
err_b: strings.Builder
|
|
strings.builder_init(&err_b)
|
|
defer strings.builder_destroy(&err_b)
|
|
|
|
cmd, ok := parse_args(
|
|
[]string{"envr", "check", "spencer@example.com:/etc/umami.env", "--config-file", cfg_path},
|
|
strings.to_stream(&out_b),
|
|
strings.to_stream(&err_b),
|
|
)
|
|
testing.expect(t, ok, "command should parse")
|
|
if !ok do return
|
|
defer delete_command(&cmd)
|
|
|
|
cmd_check(&cmd)
|
|
bufio.writer_flush(cmd.out_buf)
|
|
output := strings.to_string(out_b)
|
|
error_output := strings.to_string(err_b)
|
|
testing.expect(t, strings.contains(output, "Remote file is backed up"), "tracked remote should report backed up")
|
|
testing.expect(t, len(error_output) == 0, "remote path should not be treated as a local path")
|
|
}
|