key_test.go

 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}