forked from tellerops/teller
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdotenv_test.go
68 lines (54 loc) · 1.53 KB
/
dotenv_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//go:build integration
// +build integration
package integration_test
import (
"os"
"testing"
"github.com/spectralops/teller/pkg/core"
"github.com/spectralops/teller/pkg/providers"
"github.com/stretchr/testify/assert"
)
func TestGetDotEnv(t *testing.T) {
//
// pre-insert data
//
f, err := os.CreateTemp("", "dotenv-*")
assert.NoError(t, err)
f.WriteString("MG_KEY=123\n")
f.Close()
//
// use provider to read data
//
p, err := providers.NewDotenv()
assert.NoError(t, err)
kvp := core.KeyPath{Env: "MG_KEY", Path: f.Name()}
res, err := p.Get(kvp)
assert.NoError(t, err)
assert.Equal(t, "MG_KEY", res.Key)
assert.Equal(t, "123", res.Value)
assert.Equal(t, f.Name(), res.ResolvedPath)
err = p.Put(kvp, "changed-secret")
assert.NoError(t, err)
res, err = p.Get(kvp)
assert.NoError(t, err)
assert.Equal(t, "MG_KEY", res.Key)
assert.Equal(t, "changed-secret", res.Value)
assert.Equal(t, f.Name(), res.ResolvedPath)
err = p.PutMapping(kvp, map[string]string{"K1": "val1", "K2": "val2"})
assert.NoError(t, err)
res, err = p.Get(core.KeyPath{Env: "K1", Path: f.Name()})
assert.NoError(t, err)
assert.Equal(t, "K1", res.Key)
assert.Equal(t, "val1", res.Value)
err = p.Delete(core.KeyPath{Env: "MG_KEY", Path: f.Name()})
assert.NoError(t, err)
entries, err := p.GetMapping(core.KeyPath{Path: f.Name()})
for _, entry := range entries {
assert.NotEqual(t, "MG_KEY", entry.Key)
}
assert.NoError(t, err)
err = p.DeleteMapping(kvp)
assert.NoError(t, err)
_, err = os.Stat(f.Name())
assert.True(t, os.IsNotExist(err))
}