113 lines
3.3 KiB
Go
113 lines
3.3 KiB
Go
package common
|
|
|
|
import (
|
|
"crypto/ecdsa"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/status-im/status-go/appdatabase"
|
|
"github.com/status-im/status-go/eth-node/crypto"
|
|
"github.com/status-im/status-go/protocol/sqlite"
|
|
"github.com/status-im/status-go/t/helpers"
|
|
)
|
|
|
|
func TestSaveRawMessage(t *testing.T) {
|
|
db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{})
|
|
require.NoError(t, err)
|
|
require.NoError(t, sqlite.Migrate(db))
|
|
p := NewRawMessagesPersistence(db)
|
|
|
|
pk, err := crypto.GenerateKey()
|
|
require.NoError(t, err)
|
|
|
|
err = p.SaveRawMessage(&RawMessage{
|
|
ID: "1",
|
|
ResendType: ResendTypeRawMessage,
|
|
LocalChatID: "",
|
|
CommunityID: []byte("c1"),
|
|
CommunityKeyExMsgType: KeyExMsgRekey,
|
|
Sender: pk,
|
|
ResendMethod: ResendMethodSendPrivate,
|
|
Recipients: []*ecdsa.PublicKey{pk.Public().(*ecdsa.PublicKey)},
|
|
})
|
|
require.NoError(t, err)
|
|
m, err := p.RawMessageByID("1")
|
|
require.NoError(t, err)
|
|
require.Equal(t, "1", m.ID)
|
|
require.Equal(t, ResendTypeRawMessage, m.ResendType)
|
|
require.Equal(t, KeyExMsgRekey, m.CommunityKeyExMsgType)
|
|
require.Equal(t, "c1", string(m.CommunityID))
|
|
require.Equal(t, pk, m.Sender)
|
|
require.Equal(t, ResendMethodSendPrivate, m.ResendMethod)
|
|
require.Equal(t, 1, len(m.Recipients))
|
|
}
|
|
|
|
func TestUpdateRawMessageSent(t *testing.T) {
|
|
db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{})
|
|
require.NoError(t, err)
|
|
require.NoError(t, sqlite.Migrate(db))
|
|
p := NewRawMessagesPersistence(db)
|
|
|
|
pk, err := crypto.GenerateKey()
|
|
require.NoError(t, err)
|
|
|
|
rawMessageID := "1"
|
|
err = p.SaveRawMessage(buildRawMessage(rawMessageID, pk))
|
|
require.NoError(t, err)
|
|
|
|
rawMessage, err := p.RawMessageByID(rawMessageID)
|
|
require.NoError(t, err)
|
|
require.True(t, rawMessage.Sent)
|
|
require.Greater(t, rawMessage.LastSent, uint64(0))
|
|
|
|
err = p.UpdateRawMessageSent(rawMessageID, false)
|
|
require.NoError(t, err)
|
|
|
|
m, err := p.RawMessageByID(rawMessageID)
|
|
require.NoError(t, err)
|
|
require.False(t, m.Sent)
|
|
}
|
|
|
|
func TestUpdateRawMessageLastSent(t *testing.T) {
|
|
db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{})
|
|
require.NoError(t, err)
|
|
require.NoError(t, sqlite.Migrate(db))
|
|
p := NewRawMessagesPersistence(db)
|
|
|
|
pk, err := crypto.GenerateKey()
|
|
require.NoError(t, err)
|
|
|
|
rawMessageID := "1"
|
|
err = p.SaveRawMessage(buildRawMessage(rawMessageID, pk))
|
|
require.NoError(t, err)
|
|
|
|
rawMessage, err := p.RawMessageByID(rawMessageID)
|
|
require.NoError(t, err)
|
|
require.True(t, rawMessage.Sent)
|
|
require.Greater(t, rawMessage.LastSent, uint64(0))
|
|
|
|
err = p.UpdateRawMessageLastSent(rawMessageID, 0)
|
|
require.NoError(t, err)
|
|
|
|
m, err := p.RawMessageByID(rawMessageID)
|
|
require.NoError(t, err)
|
|
require.Equal(t, m.LastSent, uint64(0))
|
|
}
|
|
|
|
func buildRawMessage(rawMessageID string, pk *ecdsa.PrivateKey) *RawMessage {
|
|
return &RawMessage{
|
|
ID: rawMessageID,
|
|
ResendType: ResendTypeRawMessage,
|
|
LocalChatID: "",
|
|
CommunityID: []byte("c1"),
|
|
CommunityKeyExMsgType: KeyExMsgRekey,
|
|
Sender: pk,
|
|
ResendMethod: ResendMethodSendPrivate,
|
|
Recipients: []*ecdsa.PublicKey{pk.Public().(*ecdsa.PublicKey)},
|
|
Sent: true,
|
|
LastSent: uint64(time.Now().UnixNano() / int64(time.Millisecond)),
|
|
}
|
|
}
|