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