storage/memory's UpdateMany should fail if versions are not higher

Signed-off-by: Ying Li <ying.li@docker.com>
This commit is contained in:
Ying Li 2016-04-14 19:36:02 -07:00
parent b188f1ba7f
commit 3aeae90290
2 changed files with 25 additions and 1 deletions

View File

@ -66,7 +66,9 @@ func (st *MemStorage) UpdateCurrent(gun string, update MetaUpdate) error {
// UpdateMany updates multiple TUF records
func (st *MemStorage) UpdateMany(gun string, updates []MetaUpdate) error {
for _, u := range updates {
st.UpdateCurrent(gun, u)
if err := st.UpdateCurrent(gun, u); err != nil {
return err
}
}
return nil
}

View File

@ -19,6 +19,28 @@ func TestUpdateCurrent(t *testing.T) {
require.Equal(t, []byte("test"), v.data, "Data was incorrect")
}
func TestUpdateMany(t *testing.T) {
s := NewMemStorage()
require.NoError(t, s.UpdateMany("gun", []MetaUpdate{
{"role1", 1, []byte("test1")},
{"role2", 1, []byte("test2")},
}))
_, d, err := s.GetCurrent("gun", "role1")
require.Nil(t, err, "Expected error to be nil")
require.Equal(t, []byte("test1"), d, "Data was incorrect")
_, d, err = s.GetCurrent("gun", "role2")
require.Nil(t, err, "Expected error to be nil")
require.Equal(t, []byte("test2"), d, "Data was incorrect")
// updating even one with an equal version fails
require.IsType(t, &ErrOldVersion{}, s.UpdateMany("gun", []MetaUpdate{
{"role1", 1, []byte("test1")},
{"role2", 2, []byte("test2")},
}))
}
func TestGetCurrent(t *testing.T) {
s := NewMemStorage()