identity_test.go

  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}