mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2026-02-04 00:08:33 +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)
|
||||
mockClient := new(mockAPIClient)
|
||||
mockIDProvider := new(mockIDProvider)
|
||||
mockGluonIDProvider := new(mockIDProvider)
|
||||
mockReporter := new(mockReporter)
|
||||
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
|
||||
mockLabelProvider.On("GetUserMailboxByName", mock.Anything, "gluon-id-1", []string{"Folders"}).
|
||||
@ -783,14 +783,15 @@ func TestInternalLabelConflictResolver_ConflictingNonAPILabel_ZeroCount(t *testi
|
||||
connector.SetAddrIDTest("addr-1")
|
||||
mockCountProvider.On("GetUserMailboxCountByInternalID",
|
||||
mock.Anything,
|
||||
"addr-1",
|
||||
"gluon-id-1",
|
||||
imap.InternalMailboxID(123)).
|
||||
Return(0, nil)
|
||||
|
||||
connector.SetMailboxCountProviderTest(mockCountProvider)
|
||||
connector.SetGluonIDProviderTest(mockGluonIDProvider)
|
||||
connectors := []*imapservice.Connector{connector}
|
||||
|
||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockGluonIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||
resolver := manager.NewInternalLabelConflictResolver(connectors)
|
||||
|
||||
// API labels don't contain the conflicting label ID
|
||||
@ -834,10 +835,11 @@ func TestInternalLabelConflictResolver_ConflictingNonAPILabel_PositiveCount(t *t
|
||||
connector.SetAddrIDTest("addr-1")
|
||||
mockCountProvider.On("GetUserMailboxCountByInternalID",
|
||||
mock.Anything,
|
||||
"addr-1",
|
||||
"gluon-id-1",
|
||||
imap.InternalMailboxID(123)).
|
||||
Return(10, nil)
|
||||
|
||||
connector.SetGluonIDProviderTest(mockIDProvider)
|
||||
connector.SetMailboxCountProviderTest(mockCountProvider)
|
||||
connectors := []*imapservice.Connector{connector}
|
||||
|
||||
@ -874,6 +876,7 @@ func TestInternalLabelConflictResolver_ConflictingAPILabelSameName(t *testing.T)
|
||||
|
||||
connector := &imapservice.Connector{}
|
||||
connector.SetAddrIDTest("addr-1")
|
||||
connector.SetGluonIDProviderTest(mockIDProvider)
|
||||
connector.SetMailboxCountProviderTest(mockCountProvider)
|
||||
connectors := []*imapservice.Connector{connector}
|
||||
|
||||
@ -939,6 +942,7 @@ func TestNewInternalLabelConflictResolver_KillSwitchEnabled(t *testing.T) {
|
||||
|
||||
connector := &imapservice.Connector{}
|
||||
connector.SetAddrIDTest("addr-1")
|
||||
connector.SetGluonIDProviderTest(mockIDProvider)
|
||||
connectors := []*imapservice.Connector{connector}
|
||||
|
||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderTrue{})
|
||||
|
||||
@ -73,6 +73,7 @@ type Connector struct {
|
||||
syncState *SyncState
|
||||
|
||||
mailboxCountProvider mailboxCountProvider
|
||||
gluonIDProvider gluonIDProvider
|
||||
}
|
||||
|
||||
var errNoSenderAddressMatch = errors.New("no matching sender found in address list")
|
||||
@ -89,6 +90,7 @@ func NewConnector(
|
||||
showAllMail bool,
|
||||
syncState *SyncState,
|
||||
mailboxCountProvider mailboxCountProvider,
|
||||
gluonIDProvider gluonIDProvider,
|
||||
) *Connector {
|
||||
userID := identityState.UserID()
|
||||
|
||||
@ -124,6 +126,7 @@ func NewConnector(
|
||||
syncState: syncState,
|
||||
|
||||
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) {
|
||||
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.
|
||||
|
||||
@ -541,6 +541,7 @@ func (s *Service) buildConnectors() (map[string]*Connector, error) {
|
||||
s.showAllMail,
|
||||
s.syncStateProvider,
|
||||
s.serverManager,
|
||||
s.gluonIDProvider,
|
||||
)
|
||||
|
||||
return connectors, nil
|
||||
@ -559,6 +560,7 @@ func (s *Service) buildConnectors() (map[string]*Connector, error) {
|
||||
s.showAllMail,
|
||||
s.syncStateProvider,
|
||||
s.serverManager,
|
||||
s.gluonIDProvider,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -158,6 +158,7 @@ func addNewAddressSplitMode(ctx context.Context, s *Service, addrID string) erro
|
||||
s.showAllMail,
|
||||
s.syncStateProvider,
|
||||
s.serverManager,
|
||||
s.gluonIDProvider,
|
||||
)
|
||||
|
||||
if err := s.serverManager.AddIMAPUser(ctx, connector, connector.addrID, s.gluonIDProvider, s.syncStateProvider); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user