1package leaf 2 3import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/gopasspw/gopass/internal/backend" 9 10 "github.com/fatih/color" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13) 14 15func TestTemplates(t *testing.T) { 16 ctx := context.Background() 17 18 tempdir, err := os.MkdirTemp("", "gopass-") 19 require.NoError(t, err) 20 defer func() { 21 _ = os.RemoveAll(tempdir) 22 }() 23 24 color.NoColor = true 25 26 _, _, err = createStore(tempdir, nil, nil) 27 require.NoError(t, err) 28 29 ctx = backend.WithCryptoBackendString(ctx, "plain") 30 ctx = backend.WithStorageBackendString(ctx, "fs") 31 s, err := New( 32 ctx, 33 "", 34 tempdir, 35 ) 36 require.NoError(t, err) 37 38 assert.Equal(t, 0, len(s.ListTemplates(ctx, ""))) 39 assert.NoError(t, s.SetTemplate(ctx, "foo", []byte("foobar"))) 40 assert.Equal(t, 1, len(s.ListTemplates(ctx, ""))) 41 42 tt := s.TemplateTree(ctx) 43 assert.Equal(t, "gopass\n└── foo\n", tt.Format(0)) 44 45 assert.True(t, s.HasTemplate(ctx, "foo")) 46 47 b, err := s.GetTemplate(ctx, "foo") 48 assert.NoError(t, err) 49 assert.Equal(t, "foobar", string(b)) 50 51 _, b, found := s.LookupTemplate(ctx, "foo/bar") 52 assert.True(t, found) 53 assert.Equal(t, "foobar", string(b)) 54 55 assert.NoError(t, s.RemoveTemplate(ctx, "foo")) 56 assert.Equal(t, 0, len(s.ListTemplates(ctx, ""))) 57 58 assert.Error(t, s.RemoveTemplate(ctx, "foo")) 59} 60