mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-17 23:56:56 +00:00
GODT-2213: Don't unnecessarily enable/disable autostart
This commit is contained in:
committed by
Romain Le Jeune
parent
3499fbd758
commit
e4b81063cb
@ -144,3 +144,17 @@ func (mr *MockAutostarterMockRecorder) Enable() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Enable", reflect.TypeOf((*MockAutostarter)(nil).Enable))
|
||||
}
|
||||
|
||||
// IsEnabled mocks base method.
|
||||
func (m *MockAutostarter) IsEnabled() bool {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IsEnabled")
|
||||
ret0, _ := ret[0].(bool)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// IsEnabled indicates an expected call of IsEnabled.
|
||||
func (mr *MockAutostarterMockRecorder) IsEnabled() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsEnabled", reflect.TypeOf((*MockAutostarter)(nil).IsEnabled))
|
||||
}
|
||||
|
||||
@ -207,15 +207,24 @@ func (bridge *Bridge) GetAutostart() bool {
|
||||
}
|
||||
|
||||
func (bridge *Bridge) SetAutostart(autostart bool) error {
|
||||
if err := bridge.vault.SetAutostart(autostart); err != nil {
|
||||
return err
|
||||
if autostart != bridge.vault.GetAutostart() {
|
||||
if err := bridge.vault.SetAutostart(autostart); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
if autostart {
|
||||
// do nothing if already enabled
|
||||
if bridge.autostarter.IsEnabled() {
|
||||
return nil
|
||||
}
|
||||
err = bridge.autostarter.Enable()
|
||||
} else {
|
||||
// do nothing if already disabled
|
||||
if !bridge.autostarter.IsEnabled() {
|
||||
return nil
|
||||
}
|
||||
err = bridge.autostarter.Disable()
|
||||
}
|
||||
|
||||
|
||||
@ -134,10 +134,19 @@ func TestBridge_Settings_Proxy(t *testing.T) {
|
||||
func TestBridge_Settings_Autostart(t *testing.T) {
|
||||
withEnv(t, func(ctx context.Context, s *server.Server, netCtl *proton.NetCtl, locator bridge.Locator, storeKey []byte) {
|
||||
withBridge(ctx, t, s.GetHostURL(), netCtl, locator, storeKey, func(bridge *bridge.Bridge, mocks *bridge.Mocks) {
|
||||
// By default, autostart is disabled.
|
||||
// By default, autostart is enabled.
|
||||
require.True(t, bridge.GetAutostart())
|
||||
|
||||
// Disable autostart.
|
||||
mocks.Autostarter.EXPECT().IsEnabled().Return(true)
|
||||
mocks.Autostarter.EXPECT().Disable().Return(nil)
|
||||
require.NoError(t, bridge.SetAutostart(false))
|
||||
|
||||
// Get the new setting.
|
||||
require.False(t, bridge.GetAutostart())
|
||||
|
||||
// Enable autostart.
|
||||
// Re Enable autostart.
|
||||
mocks.Autostarter.EXPECT().IsEnabled().Return(false)
|
||||
mocks.Autostarter.EXPECT().Enable().Return(nil)
|
||||
require.NoError(t, bridge.SetAutostart(true))
|
||||
|
||||
|
||||
@ -51,6 +51,7 @@ type TLSReporter interface {
|
||||
type Autostarter interface {
|
||||
Enable() error
|
||||
Disable() error
|
||||
IsEnabled() bool
|
||||
}
|
||||
|
||||
type Updater interface {
|
||||
|
||||
Reference in New Issue
Block a user