GODT-1482: Comment or mitigate panics, unlock cache when needed.

This commit is contained in:
Jakub
2021-12-21 11:34:21 +01:00
committed by Jakub Cuth
parent e9c05c5a6b
commit df601ecbbd
15 changed files with 312 additions and 51 deletions

View File

@ -27,7 +27,6 @@ import (
pkgMsg "github.com/ProtonMail/proton-bridge/pkg/message"
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
"github.com/golang/mock/gomock"
a "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
bolt "go.etcd.io/bbolt"
)
@ -72,6 +71,7 @@ func TestGetMessageFromDB(t *testing.T) {
}
func TestCreateOrUpdateMessageMetadata(t *testing.T) {
r := require.New(t)
m, clear := initMocks(t)
defer clear()
@ -79,33 +79,37 @@ func TestCreateOrUpdateMessageMetadata(t *testing.T) {
insertMessage(t, m, "msg1", "Test message 1", addrID1, false, []string{pmapi.AllMailLabel})
metadata, err := m.store.getMessageFromDB("msg1")
require.Nil(t, err)
r.NoError(err)
msg := &Message{msg: metadata, store: m.store, storeMailbox: nil}
// Check non-meta and calculated data are cleared/empty.
a.Equal(t, "", metadata.Body)
a.Equal(t, []*pmapi.Attachment(nil), metadata.Attachments)
a.Equal(t, "", metadata.MIMEType)
a.Equal(t, make(mail.Header), metadata.Header)
r.Equal("", metadata.Body)
r.Equal([]*pmapi.Attachment(nil), metadata.Attachments)
r.Equal("", metadata.MIMEType)
r.Equal(make(mail.Header), metadata.Header)
wantHeader, wantSize := putBodystructureAndSizeToDB(m, "msg1")
// Check cached data.
require.Nil(t, err)
a.Equal(t, wantHeader, msg.GetMIMEHeader())
haveHeader, err := msg.GetMIMEHeader()
r.NoError(err)
r.Equal(wantHeader, haveHeader)
haveSize, err := msg.GetRFC822Size()
require.Nil(t, err)
a.Equal(t, wantSize, haveSize)
r.NoError(err)
r.Equal(wantSize, haveSize)
// Check cached data are not overridden by reinsert.
insertMessage(t, m, "msg1", "Test message 1", addrID1, false, []string{pmapi.AllMailLabel})
require.Nil(t, err)
a.Equal(t, wantHeader, msg.GetMIMEHeader())
haveHeader, err = msg.GetMIMEHeader()
r.NoError(err)
r.Equal(wantHeader, haveHeader)
haveSize, err = msg.GetRFC822Size()
require.Nil(t, err)
a.Equal(t, wantSize, haveSize)
r.NoError(err)
r.Equal(wantSize, haveSize)
}
func TestDeleteMessage(t *testing.T) {