1package gpg
2
3import (
4	"testing"
5
6	"github.com/stretchr/testify/assert"
7)
8
9func TestKeyList(t *testing.T) {
10	kl := KeyList{
11		genTestKey("John", "johnny", "Doe", "john.doe@example.org"),
12		genTestKey("Jane", "jane", "Doe", "jane.doe@example.org", "25FF1614B8F87B52FFFF99B962AF4031C82E0019"),
13		genTestKey("Jim", "jimmy", "Doe", "jim.doe@example.org", "25FF1614B8F87B52FFFF99B962AF4031C82E2019", "z", "none"),
14	}
15	kl[2].SubKeys = map[string]struct{}{
16		"0xDEADBEEF": {},
17	}
18
19	assert.Equal(t, []string{
20		"0x62AF4031C82E0019",
21		"0x62AF4031C82E0039",
22		"0x62AF4031C82E2019",
23	}, kl.Recipients())
24	assert.Equal(t, []string{
25		"0x62AF4031C82E0019",
26		"0x62AF4031C82E0039",
27	}, kl.UseableKeys(false).Recipients())
28	assert.Equal(t, []string{
29		"0x62AF4031C82E2019",
30	}, kl.UnusableKeys(false).Recipients())
31
32	// search by email
33	k, err := kl.FindKey("jim.doe@example.org")
34	assert.NoError(t, err)
35	assert.Equal(t, "0x62AF4031C82E2019", k.ID())
36
37	// search by fp
38	k, err = kl.FindKey("25FF1614B8F87B52FFFF99B962AF4031C82E2019")
39	assert.NoError(t, err)
40	assert.Equal(t, "0x62AF4031C82E2019", k.ID())
41
42	// search by id
43	k, err = kl.FindKey("0x62AF4031C82E2019")
44	assert.NoError(t, err)
45	assert.Equal(t, "0x62AF4031C82E2019", k.ID())
46
47	// search for non existing key
48	k, err = kl.FindKey("0x62AF4091C82E2019")
49	assert.Error(t, err)
50	assert.Equal(t, "", k.ID())
51
52	// search by full name
53	k, err = kl.FindKey("John Doe")
54	assert.NoError(t, err)
55	assert.Equal(t, "0x62AF4031C82E0039", k.ID())
56
57	// search by subkey id
58	k, err = kl.FindKey("0xDEADBEEF")
59	assert.NoError(t, err)
60	assert.Equal(t, "0x62AF4031C82E2019", k.ID())
61}
62