commit 119fd8dc2d4d0df427caff3a7a08bd75a270756b
parent dd8125cdf0da2cee8e043346eb82846a24b57a06
Author: Sean Enck <sean@ttypty.com>
Date: Fri, 3 Mar 2023 19:23:14 -0500
insert tests
Diffstat:
1 file changed, 110 insertions(+), 0 deletions(-)
diff --git a/internal/app/insert_test.go b/internal/app/insert_test.go
@@ -0,0 +1,110 @@
+package app_test
+
+import (
+ "bytes"
+ "errors"
+ "testing"
+
+ "github.com/enckse/lockbox/internal/app"
+ "github.com/enckse/lockbox/internal/backend"
+)
+
+func TestInsertArgs(t *testing.T) {
+ obj := app.InsertOptions{}
+ if _, err := app.ParseInsertArgs(obj, []string{}); err == nil || err.Error() != "insert requires an entry" {
+ t.Errorf("invalid error: %v", err)
+ }
+ if _, err := app.ParseInsertArgs(obj, []string{"test", "test", "test"}); err == nil || err.Error() != "too many arguments" {
+ t.Errorf("invalid error: %v", err)
+ }
+ r, err := app.ParseInsertArgs(obj, []string{"test"})
+ if err != nil {
+ t.Errorf("invalid error: %v", err)
+ }
+ if r.Multi || r.Entry != "test" {
+ t.Error("invalid parse")
+ }
+ if _, err := app.ParseInsertArgs(obj, []string{"-t", "b"}); err == nil || err.Error() != "unknown argument" {
+ t.Errorf("invalid error: %v", err)
+ }
+ r, err = app.ParseInsertArgs(obj, []string{"-multi", "test3"})
+ if err != nil {
+ t.Errorf("invalid error: %v", err)
+ }
+ if !r.Multi || r.Entry != "test3" {
+ t.Error("invalid parse")
+ }
+}
+
+func TestInsertDo(t *testing.T) {
+ setup(t)
+ fullSetup(t, true).Insert(backend.NewPath("test", "test2", "test1"), "pass")
+ fullSetup(t, true).Insert(backend.NewPath("test", "test2", "test3"), "pass")
+ args := app.InsertArgs{}
+ var buf bytes.Buffer
+ args.Opts.IsPipe = func() bool {
+ return false
+ }
+ args.Entry = "test/test2"
+ tx := fullSetup(t, true)
+ args.Opts.Confirm = func(string) bool {
+ return true
+ }
+ args.Opts.Input = func(bool, bool) ([]byte, error) {
+ return nil, errors.New("failure")
+ }
+ if err := args.Do(&buf, tx); err == nil || err.Error() != "invalid input (failure)" {
+ t.Errorf("invalid error: %v", err)
+ }
+ args.Opts.Confirm = func(string) bool {
+ return false
+ }
+ args.Opts.IsPipe = func() bool {
+ return true
+ }
+ if err := args.Do(&buf, tx); err == nil || err.Error() != "invalid input (failure)" {
+ t.Errorf("invalid error: %v", err)
+ }
+ args.Opts.Input = func(bool, bool) ([]byte, error) {
+ return []byte("TEST"), nil
+ }
+ args.Opts.Confirm = func(string) bool {
+ return true
+ }
+ args.Entry = "a/b/c"
+ if err := args.Do(&buf, tx); err != nil {
+ t.Errorf("invalid error: %v", err)
+ }
+ if buf.String() != "" {
+ t.Error("invalid insert")
+ }
+ args.Opts.IsPipe = func() bool {
+ return false
+ }
+ buf = bytes.Buffer{}
+ if err := args.Do(&buf, tx); err != nil {
+ t.Errorf("invalid error: %v", err)
+ }
+ if buf.String() == "" {
+ t.Error("invalid insert")
+ }
+ buf = bytes.Buffer{}
+ args.Entry = "test/test2/test1"
+ if err := args.Do(&buf, tx); err != nil {
+ t.Errorf("invalid error: %v", err)
+ }
+ if buf.String() == "" {
+ t.Error("invalid insert")
+ }
+ args.Opts.Confirm = func(string) bool {
+ return false
+ }
+ buf = bytes.Buffer{}
+ args.Entry = "test/test2/test1"
+ if err := args.Do(&buf, tx); err != nil {
+ t.Errorf("invalid error: %v", err)
+ }
+ if buf.String() != "" {
+ t.Error("invalid insert")
+ }
+}