-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkeycloak_test.go
More file actions
76 lines (67 loc) · 2.23 KB
/
keycloak_test.go
File metadata and controls
76 lines (67 loc) · 2.23 KB
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
69
70
71
72
73
74
75
76
package keycloak
import (
"io/ioutil"
"testing"
"filippo.io/age"
"github.com/nsf/jsondiff"
"github.com/stretchr/testify/assert"
)
func TestBasic(t *testing.T) {
_, err := GetStoreForFile("testdata/creds1.json")
assert.Nil(t, err)
_, err = GetStoreForFile("testdata/creds2.json")
assert.Nil(t, err)
_, err = GetStoreForFile("testdata/creds1.yaml")
assert.Nil(t, err)
_, err = GetStoreForFile("testdata/creds1.yml")
assert.Nil(t, err)
_, err = GetStoreForFile("testdata/creds2.yml")
assert.Nil(t, err)
_, err = GetStoreForFile("doesntexist.json")
assert.NotNil(t, err)
_, err = GetStoreForFile("bad.format")
assert.NotNil(t, err)
}
func TestMultiTreeFile(t *testing.T) {
ageIdentity, err := age.GenerateX25519Identity()
assert.Nil(t, err)
ageRecipient := ageIdentity.Recipient()
// encrypt subtrees independently
store, err := GetStoreForFile("testdata/creds2.json")
assert.Nil(t, err)
err = store.EncryptSubtree(ageRecipient.String(), "secrets", "dev")
assert.Nil(t, err)
err = store.EncryptSubtree(ageRecipient.String(), "secrets", "stage")
assert.Nil(t, err)
err = store.EncryptSubtree(ageRecipient.String(), "secrets", "prod")
assert.Nil(t, err)
fd, err := ioutil.TempFile("", "TestMultiTreeFile1-")
assert.Nil(t, err)
defer fd.Close()
err = store.ToFile(fd.Name())
assert.Nil(t, err)
bites, err := ioutil.ReadFile(fd.Name())
assert.Nil(t, err)
store2, err := GetStoreFromBytes(bites, JSON)
assert.Nil(t, err)
// decrypt subtrees independently
err = store2.DecryptSubtree(ageIdentity.String(), "secrets", "prod")
assert.Nil(t, err)
err = store2.DecryptSubtree(ageIdentity.String(), "secrets", "dev")
assert.Nil(t, err)
err = store2.DecryptSubtree(ageIdentity.String(), "secrets", "stage")
assert.Nil(t, err)
fd2, err := ioutil.TempFile("", "TestMultiTreeFile2-")
assert.Nil(t, err)
defer fd2.Close()
err = store2.ToFile(fd2.Name())
assert.Nil(t, err)
// json diff the original file with the decrypted file
originalBites, err := ioutil.ReadFile("testdata/creds2.json")
assert.Nil(t, err)
roundtripBites, err := ioutil.ReadFile(fd2.Name())
assert.Nil(t, err)
opts := jsondiff.DefaultConsoleOptions()
diff, _ := jsondiff.Compare(originalBites, roundtripBites, &opts)
assert.Equal(t, jsondiff.FullMatch, diff)
}