diff options
author | Rasmus Dahlberg <rasmus@rgdd.se> | 2022-10-13 17:47:14 +0200 |
---|---|---|
committer | Rasmus Dahlberg <rasmus@rgdd.se> | 2022-10-13 18:04:52 +0200 |
commit | 9353b9aa47be65c9cd483a251cfd3aabc193c3ec (patch) | |
tree | f88f3eac3513183c1a2f884b5cf6927c8418af37 /internal/options/options_test.go | |
parent | 2933ba510c7ac41e39b54667e3cb5f11fdea929d (diff) |
Add terminal UI
Intentionally backwards-compatible with HARICA's onion-csr tool, see:
https://github.com/HARICA-official/onion-csr
Diffstat (limited to 'internal/options/options_test.go')
-rw-r--r-- | internal/options/options_test.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/internal/options/options_test.go b/internal/options/options_test.go new file mode 100644 index 0000000..fda189c --- /dev/null +++ b/internal/options/options_test.go @@ -0,0 +1,64 @@ +package options + +import ( + "fmt" + "os" + "reflect" + "strings" + "syscall" + "testing" +) + +func TestNew(t *testing.T) { + setup(t) + defer teardown(t) + + none := Options{} + ok := Options{ + HSDir: "/path/to/hsdir", + CANonce: make([]byte, 10), + caNonce: "00000000000000000000", + } + for _, table := range []struct { + desc string + args string + want Options + }{ + {"no options", "", none}, + {"unknown option --extra", "--extra value", none}, + {"unknown extra value", "extra", none}, + {"help option", "-h", none}, + {"missing --hs-dir", fmt.Sprintf("-n %x", ok.CANonce), none}, + {"missing --ca-nonce", fmt.Sprintf("-d %s", ok.HSDir), none}, + {"invalid --ca-nonce", fmt.Sprintf("-d %s -n 0q", ok.HSDir), none}, + {"valid", fmt.Sprintf("-d %s -n %x", ok.HSDir, ok.CANonce), ok}, + {"valid", fmt.Sprintf("--hs-dir %s --ca-nonce %x", ok.HSDir, ok.CANonce), ok}, + } { + opts, err := New("onion-csr", strings.Split(table.args, " ")) + if got, want := err != nil, table.desc != "valid"; got != want { + t.Errorf("%s: got error %v but wanted %v: %v", table.desc, got, want, err) + } + if err != nil { + continue + } + if got, want := opts, table.want; !reflect.DeepEqual(got, want) { + t.Errorf("%s: got options\n%v\nbut wanted\n%v\n", table.desc, got, want) + } + } +} + +func setup(t *testing.T) { + t.Helper() + var err error + if os.Stderr, err = os.CreateTemp("", "onion-csr@rgdd.se"); err != nil { + t.Fatalf("create temp file: %v", err) + } +} + +func teardown(t *testing.T) { + t.Helper() + if err := os.Remove(os.Stderr.Name()); err != nil { + t.Fatalf("remove temp file: %v", err) + } + os.Stderr = os.NewFile(uintptr(syscall.Stderr), "/dev/stderr") +} |