github.com/status-im/status-go@v1.1.0/protocol/ens/persistence_test.go (about) 1 package ens 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/status-im/status-go/appdatabase" 9 "github.com/status-im/status-go/protocol/sqlite" 10 "github.com/status-im/status-go/t/helpers" 11 ) 12 13 func TestGetENSToBeVerified(t *testing.T) { 14 pk := "1" 15 name := "test.eth" 16 updatedName := "test2.eth" 17 18 db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{}) 19 require.NoError(t, err) 20 err = sqlite.Migrate(db) 21 require.NoError(t, err) 22 23 persistence := NewPersistence(db) 24 require.NotNil(t, persistence) 25 26 record := VerificationRecord{Name: name, PublicKey: pk, Clock: 2} 27 28 // We add a record, it should be nil 29 response, err := persistence.AddRecord(record) 30 require.NoError(t, err) 31 require.Nil(t, response) 32 33 // We add a record again, it should return the same record 34 response, err = persistence.AddRecord(record) 35 require.NoError(t, err) 36 require.NotNil(t, response) 37 38 require.False(t, response.Verified) 39 require.Equal(t, record.Name, response.Name) 40 require.Equal(t, record.PublicKey, response.PublicKey) 41 42 // We add a record again, with a different clock value 43 record.Clock++ 44 response, err = persistence.AddRecord(record) 45 require.NoError(t, err) 46 require.NotNil(t, response) 47 48 require.False(t, response.Verified) 49 require.Equal(t, record.Name, response.Name) 50 require.Equal(t, record.PublicKey, response.PublicKey) 51 52 // We add a record again, with a different name, but lower clock value 53 record.Clock-- 54 record.Name = updatedName 55 response, err = persistence.AddRecord(record) 56 require.NoError(t, err) 57 require.NotNil(t, response) 58 59 require.False(t, response.Verified) 60 require.Equal(t, name, response.Name) 61 require.Equal(t, record.PublicKey, response.PublicKey) 62 63 // We add a record again, with a different name and higher clock value 64 record.Clock += 2 65 record.Name = updatedName 66 response, err = persistence.AddRecord(record) 67 require.NoError(t, err) 68 require.Nil(t, response) 69 70 // update the record 71 72 record.Verified = false 73 record.VerificationRetries = 10 74 record.NextRetry = 20 75 record.VerifiedAt = 30 76 77 err = persistence.UpdateRecords([]*VerificationRecord{&record}) 78 require.NoError(t, err) 79 80 toBeVerified, err := persistence.GetENSToBeVerified(20) 81 require.NoError(t, err) 82 require.Len(t, toBeVerified, 1) 83 require.False(t, toBeVerified[0].Verified) 84 require.Equal(t, uint64(10), toBeVerified[0].VerificationRetries) 85 require.Equal(t, uint64(20), toBeVerified[0].NextRetry) 86 require.Equal(t, uint64(30), toBeVerified[0].VerifiedAt) 87 require.Equal(t, updatedName, toBeVerified[0].Name) 88 require.Equal(t, pk, toBeVerified[0].PublicKey) 89 }