diff --git a/discovery/store_test.go b/discovery/store_test.go index 938c9eade5..8f35d653f7 100644 --- a/discovery/store_test.go +++ b/discovery/store_test.go @@ -19,6 +19,7 @@ package discovery import ( + "github.com/nuts-foundation/go-did/did" "github.com/nuts-foundation/go-did/vc" "github.com/nuts-foundation/nuts-node/storage" "github.com/stretchr/testify/assert" @@ -26,6 +27,7 @@ import ( "gorm.io/gorm" "sync" "testing" + "time" ) func Test_sqlStore_exists(t *testing.T) { @@ -355,6 +357,56 @@ func Test_sqlStore_search(t *testing.T) { }) } +func Test_sqlStore_getStaleDIDRegistrations(t *testing.T) { + storageEngine := storage.NewTestStorageEngine(t) + require.NoError(t, storageEngine.Start()) + t.Cleanup(func() { + _ = storageEngine.Shutdown() + }) + + now := time.Now() + t.Run("empty list", func(t *testing.T) { + c := setupStore(t, storageEngine.GetSQLDatabase()) + serviceIDs, dids, err := c.getStaleDIDRegistrations(now) + require.NoError(t, err) + assert.Empty(t, serviceIDs) + assert.Empty(t, dids) + }) + t.Run("1 entry, not stale", func(t *testing.T) { + c := setupStore(t, storageEngine.GetSQLDatabase()) + require.NoError(t, c.updateDIDRegistrationTime(testServiceID, aliceDID, &now)) + serviceIDs, dids, err := c.getStaleDIDRegistrations(time.Now().Add(-1 * time.Hour)) + require.NoError(t, err) + assert.Empty(t, serviceIDs) + assert.Empty(t, dids) + }) + t.Run("1 entry, stale", func(t *testing.T) { + c := setupStore(t, storageEngine.GetSQLDatabase()) + require.NoError(t, c.updateDIDRegistrationTime(testServiceID, aliceDID, &now)) + serviceIDs, dids, err := c.getStaleDIDRegistrations(time.Now().Add(time.Hour)) + require.NoError(t, err) + assert.Equal(t, []string{testServiceID}, serviceIDs) + assert.Equal(t, []did.DID{aliceDID}, dids) + }) + t.Run("does not return removed entry", func(t *testing.T) { + c := setupStore(t, storageEngine.GetSQLDatabase()) + require.NoError(t, c.updateDIDRegistrationTime(testServiceID, aliceDID, &now)) + + // Assert it's there + serviceIDs, dids, err := c.getStaleDIDRegistrations(time.Now().Add(time.Hour)) + require.NoError(t, err) + assert.Equal(t, []string{testServiceID}, serviceIDs) + assert.Equal(t, []did.DID{aliceDID}, dids) + + // Remove it + require.NoError(t, c.updateDIDRegistrationTime(testServiceID, aliceDID, nil)) + serviceIDs, dids, err = c.getStaleDIDRegistrations(time.Now().Add(time.Hour)) + require.NoError(t, err) + assert.Empty(t, serviceIDs) + assert.Empty(t, dids) + }) +} + func setupStore(t *testing.T, db *gorm.DB) *sqlStore { resetStore(t, db) defs := testDefinitions() diff --git a/storage/engine_test.go b/storage/engine_test.go index aa27b500a1..ab91e89e08 100644 --- a/storage/engine_test.go +++ b/storage/engine_test.go @@ -143,6 +143,6 @@ func Test_engine_sqlDatabase(t *testing.T) { require.NoError(t, row.Err()) var count int assert.NoError(t, row.Scan(&count)) - assert.Equal(t, 2, count) + assert.Equal(t, 3, count) }) }