mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2026-02-12 03:48:34 +00:00
fix(BRIDGE-387): use gluon ID for getting the message count instead of the address ID
This commit is contained in:
@ -763,11 +763,11 @@ func TestInternalLabelConflictResolver_ConflictingNonAPILabel_ZeroCount(t *testi
|
|||||||
|
|
||||||
mockLabelProvider := new(mockLabelNameProvider)
|
mockLabelProvider := new(mockLabelNameProvider)
|
||||||
mockClient := new(mockAPIClient)
|
mockClient := new(mockAPIClient)
|
||||||
mockIDProvider := new(mockIDProvider)
|
mockGluonIDProvider := new(mockIDProvider)
|
||||||
mockReporter := new(mockReporter)
|
mockReporter := new(mockReporter)
|
||||||
mockCountProvider := new(mockMailboxCountProvider)
|
mockCountProvider := new(mockMailboxCountProvider)
|
||||||
|
|
||||||
mockIDProvider.On("GetGluonID", "addr-1").Return("gluon-id-1", true)
|
mockGluonIDProvider.On("GetGluonID", "addr-1").Return("gluon-id-1", true)
|
||||||
|
|
||||||
// Mock mailbox fetch to return conflicting mailbox
|
// Mock mailbox fetch to return conflicting mailbox
|
||||||
mockLabelProvider.On("GetUserMailboxByName", mock.Anything, "gluon-id-1", []string{"Folders"}).
|
mockLabelProvider.On("GetUserMailboxByName", mock.Anything, "gluon-id-1", []string{"Folders"}).
|
||||||
@ -783,14 +783,15 @@ func TestInternalLabelConflictResolver_ConflictingNonAPILabel_ZeroCount(t *testi
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
mockCountProvider.On("GetUserMailboxCountByInternalID",
|
mockCountProvider.On("GetUserMailboxCountByInternalID",
|
||||||
mock.Anything,
|
mock.Anything,
|
||||||
"addr-1",
|
"gluon-id-1",
|
||||||
imap.InternalMailboxID(123)).
|
imap.InternalMailboxID(123)).
|
||||||
Return(0, nil)
|
Return(0, nil)
|
||||||
|
|
||||||
connector.SetMailboxCountProviderTest(mockCountProvider)
|
connector.SetMailboxCountProviderTest(mockCountProvider)
|
||||||
|
connector.SetGluonIDProviderTest(mockGluonIDProvider)
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockGluonIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewInternalLabelConflictResolver(connectors)
|
resolver := manager.NewInternalLabelConflictResolver(connectors)
|
||||||
|
|
||||||
// API labels don't contain the conflicting label ID
|
// API labels don't contain the conflicting label ID
|
||||||
@ -834,10 +835,11 @@ func TestInternalLabelConflictResolver_ConflictingNonAPILabel_PositiveCount(t *t
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
mockCountProvider.On("GetUserMailboxCountByInternalID",
|
mockCountProvider.On("GetUserMailboxCountByInternalID",
|
||||||
mock.Anything,
|
mock.Anything,
|
||||||
"addr-1",
|
"gluon-id-1",
|
||||||
imap.InternalMailboxID(123)).
|
imap.InternalMailboxID(123)).
|
||||||
Return(10, nil)
|
Return(10, nil)
|
||||||
|
|
||||||
|
connector.SetGluonIDProviderTest(mockIDProvider)
|
||||||
connector.SetMailboxCountProviderTest(mockCountProvider)
|
connector.SetMailboxCountProviderTest(mockCountProvider)
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
@ -874,6 +876,7 @@ func TestInternalLabelConflictResolver_ConflictingAPILabelSameName(t *testing.T)
|
|||||||
|
|
||||||
connector := &imapservice.Connector{}
|
connector := &imapservice.Connector{}
|
||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
|
connector.SetGluonIDProviderTest(mockIDProvider)
|
||||||
connector.SetMailboxCountProviderTest(mockCountProvider)
|
connector.SetMailboxCountProviderTest(mockCountProvider)
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
@ -939,6 +942,7 @@ func TestNewInternalLabelConflictResolver_KillSwitchEnabled(t *testing.T) {
|
|||||||
|
|
||||||
connector := &imapservice.Connector{}
|
connector := &imapservice.Connector{}
|
||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
|
connector.SetGluonIDProviderTest(mockIDProvider)
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderTrue{})
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderTrue{})
|
||||||
|
|||||||
@ -73,6 +73,7 @@ type Connector struct {
|
|||||||
syncState *SyncState
|
syncState *SyncState
|
||||||
|
|
||||||
mailboxCountProvider mailboxCountProvider
|
mailboxCountProvider mailboxCountProvider
|
||||||
|
gluonIDProvider gluonIDProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
var errNoSenderAddressMatch = errors.New("no matching sender found in address list")
|
var errNoSenderAddressMatch = errors.New("no matching sender found in address list")
|
||||||
@ -89,6 +90,7 @@ func NewConnector(
|
|||||||
showAllMail bool,
|
showAllMail bool,
|
||||||
syncState *SyncState,
|
syncState *SyncState,
|
||||||
mailboxCountProvider mailboxCountProvider,
|
mailboxCountProvider mailboxCountProvider,
|
||||||
|
gluonIDProvider gluonIDProvider,
|
||||||
) *Connector {
|
) *Connector {
|
||||||
userID := identityState.UserID()
|
userID := identityState.UserID()
|
||||||
|
|
||||||
@ -124,6 +126,7 @@ func NewConnector(
|
|||||||
syncState: syncState,
|
syncState: syncState,
|
||||||
|
|
||||||
mailboxCountProvider: mailboxCountProvider,
|
mailboxCountProvider: mailboxCountProvider,
|
||||||
|
gluonIDProvider: gluonIDProvider,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -920,7 +923,16 @@ func (s *Connector) SetAddrIDTest(addrID string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Connector) GetMailboxMessageCount(ctx context.Context, mailboxInternalID imap.InternalMailboxID) (int, error) {
|
func (s *Connector) GetMailboxMessageCount(ctx context.Context, mailboxInternalID imap.InternalMailboxID) (int, error) {
|
||||||
return s.mailboxCountProvider.GetUserMailboxCountByInternalID(ctx, s.addrID, mailboxInternalID)
|
gluonID, ok := s.gluonIDProvider.GetGluonID(s.addrID)
|
||||||
|
if !ok {
|
||||||
|
return 0, errors.New("could not retrieve Gluon ID for connector address ID")
|
||||||
|
}
|
||||||
|
return s.mailboxCountProvider.GetUserMailboxCountByInternalID(ctx, gluonID, mailboxInternalID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetGluonIDProviderTest - sets the relevant gluon ID provider. Should only be used for testing.
|
||||||
|
func (s *Connector) SetGluonIDProviderTest(provider gluonIDProvider) {
|
||||||
|
s.gluonIDProvider = provider
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMailboxCountProviderTest - sets the relevant provider. Should only be used for testing.
|
// SetMailboxCountProviderTest - sets the relevant provider. Should only be used for testing.
|
||||||
|
|||||||
@ -541,6 +541,7 @@ func (s *Service) buildConnectors() (map[string]*Connector, error) {
|
|||||||
s.showAllMail,
|
s.showAllMail,
|
||||||
s.syncStateProvider,
|
s.syncStateProvider,
|
||||||
s.serverManager,
|
s.serverManager,
|
||||||
|
s.gluonIDProvider,
|
||||||
)
|
)
|
||||||
|
|
||||||
return connectors, nil
|
return connectors, nil
|
||||||
@ -559,6 +560,7 @@ func (s *Service) buildConnectors() (map[string]*Connector, error) {
|
|||||||
s.showAllMail,
|
s.showAllMail,
|
||||||
s.syncStateProvider,
|
s.syncStateProvider,
|
||||||
s.serverManager,
|
s.serverManager,
|
||||||
|
s.gluonIDProvider,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -158,6 +158,7 @@ func addNewAddressSplitMode(ctx context.Context, s *Service, addrID string) erro
|
|||||||
s.showAllMail,
|
s.showAllMail,
|
||||||
s.syncStateProvider,
|
s.syncStateProvider,
|
||||||
s.serverManager,
|
s.serverManager,
|
||||||
|
s.gluonIDProvider,
|
||||||
)
|
)
|
||||||
|
|
||||||
if err := s.serverManager.AddIMAPUser(ctx, connector, connector.addrID, s.gluonIDProvider, s.syncStateProvider); err != nil {
|
if err := s.serverManager.AddIMAPUser(ctx, connector, connector.addrID, s.gluonIDProvider, s.syncStateProvider); err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user