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
77
78
|
package identity
import (
"encoding/json"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/MichaelMure/git-bug/entity"
"github.com/MichaelMure/git-bug/repository"
"github.com/MichaelMure/git-bug/util/lamport"
)
func makeIdentityTestRepo(t *testing.T) repository.ClockedRepo {
repo := repository.NewMockRepo()
clock1, err := repo.GetOrCreateClock("foo")
require.NoError(t, err)
err = clock1.Witness(42)
require.NoError(t, err)
clock2, err := repo.GetOrCreateClock("bar")
require.NoError(t, err)
err = clock2.Witness(34)
require.NoError(t, err)
return repo
}
func TestVersionJSON(t *testing.T) {
repo := makeIdentityTestRepo(t)
keys := []*Key{
generatePublicKey(),
generatePublicKey(),
}
before, err := newVersion(repo, "name", "email", "login", "avatarUrl", keys)
require.NoError(t, err)
before.SetMetadata("key1", "value1")
before.SetMetadata("key2", "value2")
expected := &version{
id: entity.UnsetId,
name: "name",
email: "email",
login: "login",
avatarURL: "avatarUrl",
unixTime: time.Now().Unix(),
times: map[string]lamport.Time{
"foo": 42,
"bar": 34,
},
keys: keys,
nonce: before.nonce,
metadata: map[string]string{
"key1": "value1",
"key2": "value2",
},
}
require.Equal(t, expected, before)
data, err := json.Marshal(before)
assert.NoError(t, err)
var after version
err = json.Unmarshal(data, &after)
assert.NoError(t, err)
// make sure we now have an Id
expected.Id()
assert.Equal(t, expected, &after)
}
|