mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
chore: changes to reconcile release/jubilee with dev
This commit is contained in:
9
go.sum
9
go.sum
@ -36,15 +36,6 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
|
|||||||
github.com/ProtonMail/bcrypt v0.0.0-20210511135022-227b4adcab57/go.mod h1:HecWFHognK8GfRDGnFQbW/LiV7A3MX3gZVs45vk5h8I=
|
github.com/ProtonMail/bcrypt v0.0.0-20210511135022-227b4adcab57/go.mod h1:HecWFHognK8GfRDGnFQbW/LiV7A3MX3gZVs45vk5h8I=
|
||||||
github.com/ProtonMail/bcrypt v0.0.0-20211005172633-e235017c1baf h1:yc9daCCYUefEs69zUkSzubzjBbL+cmOXgnmt9Fyd9ug=
|
github.com/ProtonMail/bcrypt v0.0.0-20211005172633-e235017c1baf h1:yc9daCCYUefEs69zUkSzubzjBbL+cmOXgnmt9Fyd9ug=
|
||||||
github.com/ProtonMail/bcrypt v0.0.0-20211005172633-e235017c1baf/go.mod h1:o0ESU9p83twszAU8LBeJKFAAMX14tISa0yk4Oo5TOqo=
|
github.com/ProtonMail/bcrypt v0.0.0-20211005172633-e235017c1baf/go.mod h1:o0ESU9p83twszAU8LBeJKFAAMX14tISa0yk4Oo5TOqo=
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250513141309-843796a505bc h1:2oppv7H5ZeFnRDohTbLZW5A8I1ylhoX2QEi3RtKxrLE=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250513141309-843796a505bc/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250514104052-2f93fdfc4850 h1:OFMVeakcDS9nHW5kQ/CuBXri84iPBqPgZFHz5Xs/8jo=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250514104052-2f93fdfc4850/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250515084749-4afe6a076ac4 h1:L1JeVS2op3VIcPKctS493+qOBFGhr488mMkYVSLr9eY=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250515084749-4afe6a076ac4/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250516132429-a4b2de331311 h1:8oEkpmF8PD7GyCQjmTto+4yhz4vE1tTT2djL2BgJcBI=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250516132429-a4b2de331311/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250527153202-a7383713882a/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250528125353-9b611f58b753 h1:Zym7WHKLOu1RAUc9b8vkhwEaEU2Gi6MkaurCm7zpK6E=
|
github.com/ProtonMail/gluon v0.17.1-0.20250528125353-9b611f58b753 h1:Zym7WHKLOu1RAUc9b8vkhwEaEU2Gi6MkaurCm7zpK6E=
|
||||||
github.com/ProtonMail/gluon v0.17.1-0.20250528125353-9b611f58b753/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
github.com/ProtonMail/gluon v0.17.1-0.20250528125353-9b611f58b753/go.mod h1:0/c03TzZPNiSgY5UDJK1iRDkjlDPwWugxTT6et2qDu8=
|
||||||
github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
|
github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
|
||||||
|
|||||||
@ -54,7 +54,7 @@ type LabelConflictManager struct {
|
|||||||
gluonIDProvider gluonIDProvider
|
gluonIDProvider gluonIDProvider
|
||||||
client apiClient
|
client apiClient
|
||||||
reporter sentryReporter
|
reporter sentryReporter
|
||||||
getFeatureFlagValueFn unleash.GetFlagValueFn
|
featureFlagProvider unleash.FeatureFlagValueProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLabelConflictManager(
|
func NewLabelConflictManager(
|
||||||
@ -62,13 +62,13 @@ func NewLabelConflictManager(
|
|||||||
gluonIDProvider gluonIDProvider,
|
gluonIDProvider gluonIDProvider,
|
||||||
client apiClient,
|
client apiClient,
|
||||||
reporter sentryReporter,
|
reporter sentryReporter,
|
||||||
getFeatureFlagValueFn unleash.GetFlagValueFn) *LabelConflictManager {
|
featureFlagProvider unleash.FeatureFlagValueProvider) *LabelConflictManager {
|
||||||
return &LabelConflictManager{
|
return &LabelConflictManager{
|
||||||
gluonLabelNameProvider: gluonLabelNameProvider,
|
gluonLabelNameProvider: gluonLabelNameProvider,
|
||||||
gluonIDProvider: gluonIDProvider,
|
gluonIDProvider: gluonIDProvider,
|
||||||
client: client,
|
client: client,
|
||||||
reporter: reporter,
|
reporter: reporter,
|
||||||
getFeatureFlagValueFn: getFeatureFlagValueFn,
|
featureFlagProvider: featureFlagProvider,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ func (r *nullLabelConflictResolverImpl) ResolveConflict(_ context.Context, _ pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *LabelConflictManager) NewConflictResolver(connectors []*Connector) LabelConflictResolver {
|
func (m *LabelConflictManager) NewConflictResolver(connectors []*Connector) LabelConflictResolver {
|
||||||
if m.getFeatureFlagValueFn(unleash.LabelConflictResolverDisabled) {
|
if m.featureFlagProvider.GetFlagValue(unleash.LabelConflictResolverDisabled) {
|
||||||
return &nullLabelConflictResolverImpl{}
|
return &nullLabelConflictResolverImpl{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,10 +33,17 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getFeatureFlagValueMock(_ string) bool {
|
type ffProviderFalse struct{}
|
||||||
|
type ffProviderTrue struct{}
|
||||||
|
|
||||||
|
func (f ffProviderFalse) GetFlagValue(_ string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f ffProviderTrue) GetFlagValue(_ string) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
type mockLabelNameProvider struct {
|
type mockLabelNameProvider struct {
|
||||||
mock.Mock
|
mock.Mock
|
||||||
}
|
}
|
||||||
@ -113,7 +120,7 @@ func TestResolveConflict_UnexpectedLabelConflict(t *testing.T) {
|
|||||||
|
|
||||||
connector := &imapservice.Connector{}
|
connector := &imapservice.Connector{}
|
||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
resolver := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock).
|
resolver := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{}).
|
||||||
NewConflictResolver([]*imapservice.Connector{connector})
|
NewConflictResolver([]*imapservice.Connector{connector})
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -144,7 +151,7 @@ func TestResolveDiscrepancy_LabelDoesNotExist(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -177,7 +184,7 @@ func TestResolveConflict_MailboxFetchError(t *testing.T) {
|
|||||||
|
|
||||||
connector := &imapservice.Connector{}
|
connector := &imapservice.Connector{}
|
||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
resolver := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock).
|
resolver := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{}).
|
||||||
NewConflictResolver([]*imapservice.Connector{connector})
|
NewConflictResolver([]*imapservice.Connector{connector})
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -215,7 +222,7 @@ func TestResolveDiscrepancy_ConflictingLabelDeletedRemotely(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -258,7 +265,7 @@ func TestResolveDiscrepancy_LabelAlreadyCorrect(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -287,7 +294,7 @@ func TestResolveConflict_DeepNestedPath(t *testing.T) {
|
|||||||
|
|
||||||
connector := &imapservice.Connector{}
|
connector := &imapservice.Connector{}
|
||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
resolver := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock).
|
resolver := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{}).
|
||||||
NewConflictResolver([]*imapservice.Connector{connector})
|
NewConflictResolver([]*imapservice.Connector{connector})
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -352,7 +359,7 @@ func TestResolveLabelDiscrepancy_LabelSwap(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
visited := make(map[string]bool)
|
visited := make(map[string]bool)
|
||||||
@ -445,7 +452,7 @@ func TestResolveLabelDiscrepancy_LabelSwapExtended(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[0], make(map[string]bool))
|
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[0], make(map[string]bool))
|
||||||
@ -530,7 +537,7 @@ func TestResolveLabelDiscrepancy_LabelSwapCyclic(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[0], make(map[string]bool))
|
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[0], make(map[string]bool))
|
||||||
@ -604,7 +611,7 @@ func TestResolveLabelDiscrepancy_LabelSwapCyclicWithDeletedLabel(t *testing.T) {
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagValueMock)
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderFalse{})
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[2], make(map[string]bool))
|
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[2], make(map[string]bool))
|
||||||
@ -667,11 +674,7 @@ func TestResolveLabelDiscrepancy_LabelSwapCyclicWithDeletedLabel_KillSwitchEnabl
|
|||||||
connector.SetAddrIDTest("addr-1")
|
connector.SetAddrIDTest("addr-1")
|
||||||
connectors := []*imapservice.Connector{connector}
|
connectors := []*imapservice.Connector{connector}
|
||||||
|
|
||||||
getFeatureFlagFn := func(_ string) bool {
|
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, ffProviderTrue{})
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
manager := imapservice.NewLabelConflictManager(mockLabelProvider, mockIDProvider, mockClient, mockReporter, getFeatureFlagFn)
|
|
||||||
resolver := manager.NewConflictResolver(connectors)
|
resolver := manager.NewConflictResolver(connectors)
|
||||||
|
|
||||||
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[2], make(map[string]bool))
|
fn, err := resolver.ResolveConflict(context.Background(), apiLabels[2], make(map[string]bool))
|
||||||
|
|||||||
@ -114,7 +114,7 @@ func NewService(
|
|||||||
maxSyncMemory uint64,
|
maxSyncMemory uint64,
|
||||||
showAllMail bool,
|
showAllMail bool,
|
||||||
observabilitySender observability.Sender,
|
observabilitySender observability.Sender,
|
||||||
getFeatureFlagValueFn unleash.GetFlagValueFn,
|
featureFlagProvider unleash.FeatureFlagValueProvider,
|
||||||
) *Service {
|
) *Service {
|
||||||
subscriberName := fmt.Sprintf("imap-%v", identityState.User.ID)
|
subscriberName := fmt.Sprintf("imap-%v", identityState.User.ID)
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ func NewService(
|
|||||||
})
|
})
|
||||||
rwIdentity := newRWIdentity(identityState, bridgePassProvider, keyPassProvider)
|
rwIdentity := newRWIdentity(identityState, bridgePassProvider, keyPassProvider)
|
||||||
|
|
||||||
labelConflictManager := NewLabelConflictManager(serverManager, gluonIDProvider, client, reporter, getFeatureFlagValueFn)
|
labelConflictManager := NewLabelConflictManager(serverManager, gluonIDProvider, client, reporter, featureFlagProvider)
|
||||||
syncUpdateApplier := NewSyncUpdateApplier(labelConflictManager)
|
syncUpdateApplier := NewSyncUpdateApplier(labelConflictManager)
|
||||||
syncMessageBuilder := NewSyncMessageBuilder(rwIdentity)
|
syncMessageBuilder := NewSyncMessageBuilder(rwIdentity)
|
||||||
syncReporter := newSyncReporter(identityState.User.ID, eventPublisher, time.Second)
|
syncReporter := newSyncReporter(identityState.User.ID, eventPublisher, time.Second)
|
||||||
|
|||||||
@ -37,11 +37,11 @@ var pollJitter = 2 * time.Minute //nolint:gochecknoglobals
|
|||||||
const filename = "unleash_flags"
|
const filename = "unleash_flags"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
EventLoopNotificationDisabled = "InboxBridgeEventLoopNotificationDisabled"
|
EventLoopNotificationDisabled = "InboxBridgeEventLoopNotificationDisabled"
|
||||||
IMAPAuthenticateCommandDisabled = "InboxBridgeImapAuthenticateCommandDisabled"
|
IMAPAuthenticateCommandDisabled = "InboxBridgeImapAuthenticateCommandDisabled"
|
||||||
UserRemovalGluonDataCleanupDisabled = "InboxBridgeUserRemovalGluonDataCleanupDisabled"
|
UserRemovalGluonDataCleanupDisabled = "InboxBridgeUserRemovalGluonDataCleanupDisabled"
|
||||||
UpdateUseNewVersionFileStructureDisabled = "InboxBridgeUpdateWithOsFilterDisabled"
|
UpdateUseNewVersionFileStructureDisabled = "InboxBridgeUpdateWithOsFilterDisabled"
|
||||||
LabelConflictResolverDisabled = "InboxBridgeLabelConflictResolverDisabled"
|
LabelConflictResolverDisabled = "InboxBridgeLabelConflictResolverDisabled"
|
||||||
SMTPSubmissionRequestSentryReportDisabled = "InboxBridgeSmtpSubmissionRequestSentryReportDisabled"
|
SMTPSubmissionRequestSentryReportDisabled = "InboxBridgeSmtpSubmissionRequestSentryReportDisabled"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -284,7 +284,7 @@ func newImpl(
|
|||||||
user.maxSyncMemory,
|
user.maxSyncMemory,
|
||||||
showAllMail,
|
showAllMail,
|
||||||
observabilityService,
|
observabilityService,
|
||||||
getFlagValueFn,
|
featureFlagValueProvider,
|
||||||
)
|
)
|
||||||
|
|
||||||
user.notificationService = notifications.NewService(user.id, user.eventService, user, notificationStore, featureFlagValueProvider, observabilityService)
|
user.notificationService = notifications.NewService(user.id, user.eventService, user, notificationStore, featureFlagValueProvider, observabilityService)
|
||||||
|
|||||||
Reference in New Issue
Block a user