operation_pack_test.go

 1package dag
 2
 3import (
 4	"testing"
 5
 6	"github.com/stretchr/testify/require"
 7
 8	"github.com/MichaelMure/git-bug/identity"
 9)
10
11func TestOperationPackReadWrite(t *testing.T) {
12	repo, id1, _, resolver, def := makeTestContext()
13
14	opp := &operationPack{
15		Author: id1,
16		Operations: []Operation{
17			newOp1(id1, "foo"),
18			newOp2(id1, "bar"),
19		},
20		CreateTime: 123,
21		EditTime:   456,
22	}
23
24	commitHash, err := opp.Write(def, repo)
25	require.NoError(t, err)
26
27	commit, err := repo.ReadCommit(commitHash)
28	require.NoError(t, err)
29
30	opp2, err := readOperationPack(def, repo, resolver, commit)
31	require.NoError(t, err)
32
33	require.Equal(t, opp, opp2)
34
35	// make sure we get the same Id with the same data
36	opp3 := &operationPack{
37		Author: id1,
38		Operations: []Operation{
39			newOp1(id1, "foo"),
40			newOp2(id1, "bar"),
41		},
42		CreateTime: 123,
43		EditTime:   456,
44	}
45	require.Equal(t, opp.Id(), opp3.Id())
46}
47
48func TestOperationPackSignedReadWrite(t *testing.T) {
49	repo, id1, _, resolver, def := makeTestContext()
50
51	err := id1.(*identity.Identity).Mutate(repo, func(orig *identity.Mutator) {
52		orig.Keys = append(orig.Keys, identity.GenerateKey())
53	})
54	require.NoError(t, err)
55
56	opp := &operationPack{
57		Author: id1,
58		Operations: []Operation{
59			newOp1(id1, "foo"),
60			newOp2(id1, "bar"),
61		},
62		CreateTime: 123,
63		EditTime:   456,
64	}
65
66	commitHash, err := opp.Write(def, repo)
67	require.NoError(t, err)
68
69	commit, err := repo.ReadCommit(commitHash)
70	require.NoError(t, err)
71
72	opp2, err := readOperationPack(def, repo, resolver, commit)
73	require.NoError(t, err)
74
75	require.Equal(t, opp, opp2)
76
77	// make sure we get the same Id with the same data
78	opp3 := &operationPack{
79		Author: id1,
80		Operations: []Operation{
81			newOp1(id1, "foo"),
82			newOp2(id1, "bar"),
83		},
84		CreateTime: 123,
85		EditTime:   456,
86	}
87	require.Equal(t, opp.Id(), opp3.Id())
88}