github.com/status-im/status-go@v1.1.0/protocol/pushnotificationserver/persistence_test.go (about) 1 package pushnotificationserver 2 3 import ( 4 "testing" 5 6 "github.com/golang/protobuf/proto" 7 "github.com/stretchr/testify/suite" 8 9 "github.com/status-im/status-go/appdatabase" 10 "github.com/status-im/status-go/eth-node/crypto" 11 "github.com/status-im/status-go/protocol/common" 12 "github.com/status-im/status-go/protocol/protobuf" 13 "github.com/status-im/status-go/protocol/sqlite" 14 "github.com/status-im/status-go/t/helpers" 15 ) 16 17 func TestSQLitePersistenceSuite(t *testing.T) { 18 suite.Run(t, new(SQLitePersistenceSuite)) 19 } 20 21 type SQLitePersistenceSuite struct { 22 suite.Suite 23 persistence Persistence 24 } 25 26 func (s *SQLitePersistenceSuite) SetupTest() { 27 db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{}) 28 s.Require().NoError(err) 29 err = sqlite.Migrate(db) 30 s.Require().NoError(err) 31 32 s.persistence = NewSQLitePersistence(db) 33 } 34 35 func (s *SQLitePersistenceSuite) TestSaveAndRetrieve() { 36 key, err := crypto.GenerateKey() 37 s.Require().NoError(err) 38 installationID := "54242d02-bb92-11ea-b3de-0242ac130004" 39 40 registration := &protobuf.PushNotificationRegistration{ 41 InstallationId: installationID, 42 Version: 5, 43 } 44 45 s.Require().NoError(s.persistence.SavePushNotificationRegistration(common.HashPublicKey(&key.PublicKey), registration)) 46 47 retrievedRegistration, err := s.persistence.GetPushNotificationRegistrationByPublicKeyAndInstallationID(common.HashPublicKey(&key.PublicKey), installationID) 48 s.Require().NoError(err) 49 50 s.Require().True(proto.Equal(registration, retrievedRegistration)) 51 } 52 53 func (s *SQLitePersistenceSuite) TestSaveAndRetrieveIdentity() { 54 retrievedKey, err := s.persistence.GetIdentity() 55 s.Require().NoError(err) 56 s.Require().Nil(retrievedKey) 57 58 key, err := crypto.GenerateKey() 59 s.Require().NoError(err) 60 s.Require().NoError(s.persistence.SaveIdentity(key)) 61 62 retrievedKey, err = s.persistence.GetIdentity() 63 s.Require().NoError(err) 64 65 s.Require().Equal(key, retrievedKey) 66 } 67 68 func (s *SQLitePersistenceSuite) TestSaveDifferentIdenities() { 69 key1, err := crypto.GenerateKey() 70 s.Require().NoError(err) 71 key2, err := crypto.GenerateKey() 72 s.Require().NoError(err) 73 74 // First one should be successul, second should fail 75 s.Require().NoError(s.persistence.SaveIdentity(key1)) 76 s.Require().Error(s.persistence.SaveIdentity(key2)) 77 } 78 79 func (s *SQLitePersistenceSuite) TestExists() { 80 messageID1 := []byte("1") 81 messageID2 := []byte("2") 82 83 result, err := s.persistence.PushNotificationExists(messageID1) 84 s.Require().NoError(err) 85 s.Require().False(result) 86 87 result, err = s.persistence.PushNotificationExists(messageID1) 88 s.Require().NoError(err) 89 90 s.Require() 91 s.Require().True(result) 92 93 result, err = s.persistence.PushNotificationExists(messageID2) 94 s.Require().NoError(err) 95 s.Require().False(result) 96 }