|
|
|
@ -17,23 +17,15 @@ func TestIntegrationSigningKeyStore(t *testing.T) { |
|
|
|
|
t.Skip("skipping integration test") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
setup := func() (context.Context, *Store) { |
|
|
|
|
return context.Background(), NewSigningKeyStore(db.InitTestDB(t)) |
|
|
|
|
} |
|
|
|
|
ctx, store := context.Background(), NewSigningKeyStore(db.InitTestDB(t)) |
|
|
|
|
|
|
|
|
|
t.Run("Should successfully add new singing key", func(_ *testing.T) { |
|
|
|
|
ctx, store := setup() |
|
|
|
|
key, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", AddedAt: time.Now().UTC(), PrivateKey: []byte{}}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, "1", key.KeyID) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should return old key if already exists", func(_ *testing.T) { |
|
|
|
|
ctx, store := setup() |
|
|
|
|
key, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().UTC()}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, "1", key.KeyID) |
|
|
|
|
|
|
|
|
|
// try to add the same key again with a different AddedAt
|
|
|
|
|
key2, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().Add(10 * time.Minute).UTC()}, false) |
|
|
|
|
require.ErrorIs(t, err, signingkeys.ErrSigningKeyAlreadyExists) |
|
|
|
@ -41,38 +33,32 @@ func TestIntegrationSigningKeyStore(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should update old key when force is true", func(t *testing.T) { |
|
|
|
|
ctx, store := setup() |
|
|
|
|
key, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().UTC()}, false) |
|
|
|
|
key, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "2", PrivateKey: []byte{}, AddedAt: time.Now().UTC()}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, "1", key.KeyID) |
|
|
|
|
assert.Equal(t, "2", key.KeyID) |
|
|
|
|
|
|
|
|
|
// try to add the same key again with a different AddedAt and force is true
|
|
|
|
|
key2, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().Add(10 * time.Minute).UTC()}, true) |
|
|
|
|
key2, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "2", PrivateKey: []byte{}, AddedAt: time.Now().Add(10 * time.Minute).UTC()}, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, "1", key2.KeyID) |
|
|
|
|
assert.Equal(t, "2", key2.KeyID) |
|
|
|
|
assert.NotEqual(t, key.AddedAt, key2.AddedAt) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should update old key when expired", func(t *testing.T) { |
|
|
|
|
ctx, store := setup() |
|
|
|
|
key, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().UTC(), ExpiresAt: &time.Time{}}, false) |
|
|
|
|
key, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "3", PrivateKey: []byte{}, AddedAt: time.Now().UTC(), ExpiresAt: &time.Time{}}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, "1", key.KeyID) |
|
|
|
|
assert.Equal(t, "3", key.KeyID) |
|
|
|
|
|
|
|
|
|
// try to add the same key again with a different AddedAt and force is false
|
|
|
|
|
key2, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().Add(10 * time.Minute).UTC()}, false) |
|
|
|
|
key2, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "3", PrivateKey: []byte{}, AddedAt: time.Now().Add(10 * time.Minute).UTC()}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, "1", key2.KeyID) |
|
|
|
|
assert.Equal(t, "3", key2.KeyID) |
|
|
|
|
assert.NotEqual(t, key.AddedAt, key2.AddedAt) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("List should return all keys that are not expired", func(t *testing.T) { |
|
|
|
|
ctx, store := setup() |
|
|
|
|
_, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "1", PrivateKey: []byte{}, AddedAt: time.Now().UTC()}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
_, err = store.Add(ctx, &signingkeys.SigningKey{KeyID: "2", PrivateKey: []byte{}, AddedAt: time.Now().UTC(), ExpiresAt: &time.Time{}}, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
_, err = store.Add(ctx, &signingkeys.SigningKey{KeyID: "3", PrivateKey: []byte{}, AddedAt: time.Now().UTC()}, false) |
|
|
|
|
// expire key 3
|
|
|
|
|
_, err := store.Add(ctx, &signingkeys.SigningKey{KeyID: "3", PrivateKey: []byte{}, AddedAt: time.Now().UTC(), ExpiresAt: &time.Time{}}, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
keys, err := store.List(ctx) |
|
|
|
|