1package identity
2
3import (
4 "encoding/json"
5 "strings"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10)
11
12func TestDecodeKeyFingerprint(t *testing.T) {
13 checkEncodeDecodeKeyFingerprint(t, strings.Repeat("0", 40))
14 checkEncodeDecodeKeyFingerprint(t, strings.Repeat("E", 40))
15 checkEncodeDecodeKeyFingerprint(t, "C77E1D7542889EC0E45BA88899DA3BE167DA2410")
16}
17
18func checkEncodeDecodeKeyFingerprint(t *testing.T, fingerprint string) {
19 decoded, err := decodeKeyFingerprint(fingerprint)
20 require.NoError(t, err)
21 require.Equal(t, fingerprint, encodeKeyFingerprint(decoded))
22}
23
24func TestKeySerialize(t *testing.T) {
25 armored := `-----BEGIN PGP PUBLIC KEY BLOCK-----
26
27mI0EXrVFzwEEAL7roW5pBs7PYhnW8XdHuMBUrOqx+TR8JPsTLzlFFKHniJ7Cxm24
28rj+nCiVAC3yI5hEWbLYLp6HoSCAEJim+ac+LsoH0Rxz325l+EYz7nAq44rebfNuy
29A5LD9/KVzLAu0FO27pgCiH9RpsFVYveHYtR1jDDvag6MLdlTZaQfqCGnABEBAAG0
30LFJlbsOpIERlc2NhcnRlcyA8cmVuZS5kZXNjYXJ0ZXNAZXhhbXBsZS5jb20+iM4E
31EwEKADgWIQQpwni46BlhwjZt/3bXoSG7jO2rwwUCXrVFzwIbAwULCQgHAgYVCgkI
32CwIEFgIDAQIeAQIXgAAKCRDXoSG7jO2rw5LcBACPp+2cwUcYCiHZVUAnAHokY7R0
33msjA/YryCy+rcW86TcV7KuyZjg3wCHi7DrDuvYIDXr83W2XaCoJktAW/+aENj8QH
346r7Tini3ENmNT8caqiCJGE0iY0QRXZomxAoZc5kvDq596ifoUA08ILncGla7Uq04
35+3Da+JBLWoDQvVP3xbiNBF61Rc8BBADBYKVgB1eHgXOorCeKYLCDSNwklkkdCN5u
36WZygmr/EMpT7YGuAvW70WKHcd0zo+MX/3fWvJeTQDVmReNF0zJv0OSjcAsamcOQ9
37G9rdL3bKWMGJRtTeXmtZ6BkP4YU227VkFTFXvQzt8WD5CXGQJtEZRXQqHKNjNNIY
38JUxF6VfJtQARAQABiLYEGAEKACAWIQQpwni46BlhwjZt/3bXoSG7jO2rwwUCXrVF
39zwIbDAAKCRDXoSG7jO2rw7xEA/9TJD/M6vO160zNr7fCB31rqGUvkHWOKaeSHJmG
40AvFBrNiBG+nGRjc2XbZqSaykO7ApcmLzgh8zzlB3gxZjorbEGRoEUsYD5pmZhfFl
41kZyE/aXEbuTIXXcR9fyuDGvP2eF4RPth8P4ew9ycXl89IUdbapD3JKg/ptkgw8dy
42y8TVdw==
43=01qL
44-----END PGP PUBLIC KEY BLOCK-----`
45
46 before, err := NewKeyFromArmored(armored)
47 assert.NoError(t, err)
48 assert.NoError(t, before.Validate())
49
50 data, err := json.Marshal(before)
51 assert.NoError(t, err)
52
53 var after Key
54 err = json.Unmarshal(data, &after)
55 assert.NoError(t, err)
56 assert.NoError(t, after.Validate())
57
58 assert.NotEmpty(t, after.Fingerprint())
59 assert.Equal(t, before.Fingerprint(), after.Fingerprint())
60}