lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 53a0451917caf76866b0084aa748077ceb2ad0b4
parent 6b7187b694df3c8a90b28ac0e214386dceff053b
Author: Sean Enck <sean@ttypty.com>
Date:   Sat, 15 Oct 2022 18:25:37 -0400

moving tests into scripts area

Diffstat:
MMakefile | 5++++-
Mgo.mod | 2+-
Mgo.sum | 4++--
Ascripts/check.go | 112+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rtests/expected.log -> scripts/tests.expected.log | 0
Dtests/Makefile | 7-------
Dtests/run.go | 114-------------------------------------------------------------------------------
7 files changed, 119 insertions(+), 125 deletions(-)

diff --git a/Makefile b/Makefile @@ -5,6 +5,7 @@ TESTDIR := $(sort $(dir $(wildcard internal/**/*_test.go))) DOC := $(BUILD)doc.text MAN := $(BUILD)lb.man DOCTEXT := scripts/doc.sections +ACTUAL := $(BUILD)actual.log .PHONY: $(TESTDIR) @@ -20,7 +21,8 @@ $(TESTDIR): cd $@ && go test check: $(TARGET) $(TESTDIR) - cd tests && make BUILD=../$(BUILD) + LB_BUILD=$(TARGET) TEST_DATA=$(BUILD) go run scripts/check.go 2>&1 | sed "s#$(PWD)/$(DATA)##g" | sed 's/^[0-9][0-9][0-9][0-9][0-9][0-9]$$/XXXXXX/g' > $(ACTUAL) + diff -u $(ACTUAL) scripts/tests.expected.log clean: rm -rf $(BUILD) @@ -35,3 +37,4 @@ $(MAN): $(TARGET) $(DOC) install: install -Dm644 $(MAN) $(DESTDIR)share/man/man1/lb.1 install -Dm755 $(TARGET) $(DESTDIR)bin/lb + diff --git a/go.mod b/go.mod @@ -13,5 +13,5 @@ require ( github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/boombuler/barcode v1.0.1 // indirect golang.org/x/crypto v0.0.0-20221012134737-56aed061732a // indirect - golang.org/x/sys v0.0.0-20221010170243-090e33056c14 // indirect + golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 // indirect ) diff --git a/go.sum b/go.sum @@ -26,6 +26,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200513112337-417ce2331b5c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14 h1:k5II8e6QD8mITdi+okbbmR/cIyEbeXLBhy5Ha4nevyc= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 h1:OK7RB6t2WQX54srQQYSXMW8dF5C6/8+oA/s5QBmmto4= +golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/scripts/check.go b/scripts/check.go @@ -0,0 +1,112 @@ +// package main runs the tests +package main + +import ( + "bytes" + "fmt" + "os" + "os/exec" + "path/filepath" + "time" +) + +const ( + testKey = "plaintextkey" +) + +func die(message string, err error) { + fmt.Fprintf(os.Stderr, "%s (%v)", message, err) + os.Exit(1) +} + +func runCommand(args []string, data []string) { + p := exec.Command(os.Getenv("LB_BUILD"), args...) + var buf bytes.Buffer + for _, d := range data { + if _, err := buf.WriteString(fmt.Sprintf("%s\n", d)); err != nil { + die("failed to write stdin", err) + } + } + p.Stdout = os.Stdout + p.Stderr = os.Stderr + p.Stdin = &buf + if err := p.Run(); err != nil { + fmt.Println(err) + } +} + +func ls() { + runCommand([]string{"ls"}, nil) +} + +func rm(k string) { + runCommand([]string{"rm", k}, []string{"y"}) +} + +func show(k string) { + runCommand([]string{"show", k}, nil) +} + +func insert(k string, d []string) { + runCommand([]string{"insert", k}, d) +} + +func totpList() { + runCommand([]string{"totp", "-list"}, nil) +} + +func main() { + store := filepath.Join(os.Getenv("TEST_DATA"), fmt.Sprintf("%s.kdbx", time.Now().Format("20060102150405"))) + os.Setenv("LOCKBOX_STORE", store) + os.Setenv("LOCKBOX_KEY", testKey) + os.Setenv("LOCKBOX_TOTP", "totp") + os.Setenv("LOCKBOX_INTERACTIVE", "no") + os.Setenv("LOCKBOX_READONLY", "no") + os.Setenv("LOCKBOX_KEYMODE", "plaintext") + insert("keys/k/one2", []string{"test2"}) + for _, k := range []string{"keys/k/one", "key/a/one", "keys/k/one", "keys/k/one/", "/keys/k/one", "keys/aa/b//s///e"} { + insert(k, []string{"test"}) + } + insert("keys2/k/three", []string{"test3", "test4"}) + ls() + rm("keys/k/one") + fmt.Println() + ls() + runCommand([]string{"find", "e"}, nil) + show("keys/k/one2") + show("keys2/k/three") + for _, k := range []string{"test/k", "test/k/totp"} { + runCommand([]string{"insert", "-totp", k}, []string{"5ae472abqdekjqykoyxk7hvc2leklq5n"}) + } + totpList() + insert("test/k/totp", []string{"5ae472abqdekjqykoyxk7hvc2leklq5n"}) + totpList() + runCommand([]string{"totp", "test/k"}, nil) + runCommand([]string{"hash", store}, nil) + rm("keys2/k/three") + fmt.Println() + rm("test/k/totp") + fmt.Println() + rm("test/k/one") + fmt.Println() + fmt.Println() + runCommand([]string{"mv", "key/a/one", "keyx/d/e"}, nil) + ls() + rm("keyx/d/e") + fmt.Println() + ls() + insert("keys/k2/one2", []string{"test2"}) + insert("keys/k2/one", []string{"test"}) + insert("keys/k2/t1/one2", []string{"test2"}) + insert("keys/k2/t1/one", []string{"test"}) + insert("keys/k2/t2/one2", []string{"test2"}) + insert("keys/k2/t2/one", []string{"test"}) + fmt.Println() + ls() + rm("keys/k2/t1/*") + fmt.Println() + ls() + rm("keys/k2/*") + fmt.Println() + ls() +} diff --git a/tests/expected.log b/scripts/tests.expected.log diff --git a/tests/Makefile b/tests/Makefile @@ -1,7 +0,0 @@ -DATA := bin -ACTUAL := $(DATA)/actual.log - -all: - mkdir -p $(DATA) - go run run.go 2>&1 | sed "s#$(PWD)/$(DATA)##g" | sed 's/^[0-9][0-9][0-9][0-9][0-9][0-9]$$/XXXXXX/g' > $(ACTUAL) - diff -u $(ACTUAL) expected.log diff --git a/tests/run.go b/tests/run.go @@ -1,114 +0,0 @@ -// package main runs the tests -package main - -import ( - "bytes" - "fmt" - "os" - "os/exec" - "path/filepath" - "time" -) - -const ( - testDir = "bin" - testKey = "plaintextkey" - binary = "../bin/lb" -) - -func die(message string, err error) { - fmt.Fprintf(os.Stderr, "%s (%v)", message, err) - os.Exit(1) -} - -func runCommand(args []string, data []string) { - p := exec.Command(binary, args...) - var buf bytes.Buffer - for _, d := range data { - if _, err := buf.WriteString(fmt.Sprintf("%s\n", d)); err != nil { - die("failed to write stdin", err) - } - } - p.Stdout = os.Stdout - p.Stderr = os.Stderr - p.Stdin = &buf - if err := p.Run(); err != nil { - fmt.Println(err) - } -} - -func ls() { - runCommand([]string{"ls"}, nil) -} - -func rm(k string) { - runCommand([]string{"rm", k}, []string{"y"}) -} - -func show(k string) { - runCommand([]string{"show", k}, nil) -} - -func insert(k string, d []string) { - runCommand([]string{"insert", k}, d) -} - -func totpList() { - runCommand([]string{"totp", "-list"}, nil) -} - -func main() { - store := filepath.Join(testDir, fmt.Sprintf("%s.kdbx", time.Now().Format("20060102150405"))) - os.Setenv("LOCKBOX_STORE", store) - os.Setenv("LOCKBOX_KEY", testKey) - os.Setenv("LOCKBOX_TOTP", "totp") - os.Setenv("LOCKBOX_INTERACTIVE", "no") - os.Setenv("LOCKBOX_READONLY", "no") - os.Setenv("LOCKBOX_KEYMODE", "plaintext") - insert("keys/k/one2", []string{"test2"}) - for _, k := range []string{"keys/k/one", "key/a/one", "keys/k/one", "keys/k/one/", "/keys/k/one", "keys/aa/b//s///e"} { - insert(k, []string{"test"}) - } - insert("keys2/k/three", []string{"test3", "test4"}) - ls() - rm("keys/k/one") - fmt.Println() - ls() - runCommand([]string{"find", "e"}, nil) - show("keys/k/one2") - show("keys2/k/three") - for _, k := range []string{"test/k", "test/k/totp"} { - runCommand([]string{"insert", "-totp", k}, []string{"5ae472abqdekjqykoyxk7hvc2leklq5n"}) - } - totpList() - insert("test/k/totp", []string{"5ae472abqdekjqykoyxk7hvc2leklq5n"}) - totpList() - runCommand([]string{"totp", "test/k"}, nil) - runCommand([]string{"hash", store}, nil) - rm("keys2/k/three") - fmt.Println() - rm("test/k/totp") - fmt.Println() - rm("test/k/one") - fmt.Println() - fmt.Println() - runCommand([]string{"mv", "key/a/one", "keyx/d/e"}, nil) - ls() - rm("keyx/d/e") - fmt.Println() - ls() - insert("keys/k2/one2", []string{"test2"}) - insert("keys/k2/one", []string{"test"}) - insert("keys/k2/t1/one2", []string{"test2"}) - insert("keys/k2/t1/one", []string{"test"}) - insert("keys/k2/t2/one2", []string{"test2"}) - insert("keys/k2/t2/one", []string{"test"}) - fmt.Println() - ls() - rm("keys/k2/t1/*") - fmt.Println() - ls() - rm("keys/k2/*") - fmt.Println() - ls() -}