1package identity
2
3import (
4 "testing"
5
6 "github.com/MichaelMure/git-bug/repository"
7 "github.com/stretchr/testify/assert"
8)
9
10func TestIdentityCommit(t *testing.T) {
11 mockRepo := repository.NewMockRepoForTest()
12
13 // single version
14
15 identity := Identity{
16 Versions: []Version{
17 {
18 Name: "René Descartes",
19 Email: "rene.descartes@example.com",
20 },
21 },
22 }
23
24 err := identity.Commit(mockRepo)
25
26 assert.Nil(t, err)
27 assert.NotEmpty(t, identity.id)
28
29 // multiple version
30
31 identity = Identity{
32 Versions: []Version{
33 {
34 Time: 100,
35 Name: "René Descartes",
36 Email: "rene.descartes@example.com",
37 Keys: []Key{
38 {PubKey: "pubkeyA"},
39 },
40 },
41 {
42 Time: 200,
43 Name: "René Descartes",
44 Email: "rene.descartes@example.com",
45 Keys: []Key{
46 {PubKey: "pubkeyB"},
47 },
48 },
49 {
50 Time: 201,
51 Name: "René Descartes",
52 Email: "rene.descartes@example.com",
53 Keys: []Key{
54 {PubKey: "pubkeyC"},
55 },
56 },
57 },
58 }
59
60 err = identity.Commit(mockRepo)
61
62 assert.Nil(t, err)
63 assert.NotEmpty(t, identity.id)
64
65 // add more version
66
67 identity.AddVersion(Version{
68 Time: 201,
69 Name: "René Descartes",
70 Email: "rene.descartes@example.com",
71 Keys: []Key{
72 {PubKey: "pubkeyD"},
73 },
74 })
75
76 identity.AddVersion(Version{
77 Time: 300,
78 Name: "René Descartes",
79 Email: "rene.descartes@example.com",
80 Keys: []Key{
81 {PubKey: "pubkeyE"},
82 },
83 })
84
85 err = identity.Commit(mockRepo)
86
87 assert.Nil(t, err)
88 assert.NotEmpty(t, identity.id)
89}
90
91func TestIdentity_ValidKeysAtTime(t *testing.T) {
92 identity := Identity{
93 Versions: []Version{
94 {
95 Time: 100,
96 Name: "René Descartes",
97 Email: "rene.descartes@example.com",
98 Keys: []Key{
99 {PubKey: "pubkeyA"},
100 },
101 },
102 {
103 Time: 200,
104 Name: "René Descartes",
105 Email: "rene.descartes@example.com",
106 Keys: []Key{
107 {PubKey: "pubkeyB"},
108 },
109 },
110 {
111 Time: 201,
112 Name: "René Descartes",
113 Email: "rene.descartes@example.com",
114 Keys: []Key{
115 {PubKey: "pubkeyC"},
116 },
117 },
118 {
119 Time: 201,
120 Name: "René Descartes",
121 Email: "rene.descartes@example.com",
122 Keys: []Key{
123 {PubKey: "pubkeyD"},
124 },
125 },
126 {
127 Time: 300,
128 Name: "René Descartes",
129 Email: "rene.descartes@example.com",
130 Keys: []Key{
131 {PubKey: "pubkeyE"},
132 },
133 },
134 },
135 }
136
137 assert.Nil(t, identity.ValidKeysAtTime(10))
138 assert.Equal(t, identity.ValidKeysAtTime(100), []Key{{PubKey: "pubkeyA"}})
139 assert.Equal(t, identity.ValidKeysAtTime(140), []Key{{PubKey: "pubkeyA"}})
140 assert.Equal(t, identity.ValidKeysAtTime(200), []Key{{PubKey: "pubkeyB"}})
141 assert.Equal(t, identity.ValidKeysAtTime(201), []Key{{PubKey: "pubkeyD"}})
142 assert.Equal(t, identity.ValidKeysAtTime(202), []Key{{PubKey: "pubkeyD"}})
143 assert.Equal(t, identity.ValidKeysAtTime(300), []Key{{PubKey: "pubkeyE"}})
144 assert.Equal(t, identity.ValidKeysAtTime(3000), []Key{{PubKey: "pubkeyE"}})
145}