mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-11 05:06:51 +00:00
Other: Wipe vault properly on factory reset
Deleting the file isn't enough because it's still held in memory and is written back to disk on the next write (SetLastVersion during bridge teardown).
This commit is contained in:
@ -185,6 +185,12 @@ func (vault *Vault) SetMigrated() error {
|
||||
})
|
||||
}
|
||||
|
||||
func (vault *Vault) Reset(gluonDir string) error {
|
||||
return vault.mod(func(data *Data) {
|
||||
*data = newDefaultData(gluonDir)
|
||||
})
|
||||
}
|
||||
|
||||
func (vault *Vault) Close() error {
|
||||
vault.refLock.Lock()
|
||||
defer vault.refLock.Unlock()
|
||||
|
||||
@ -77,6 +77,25 @@ func TestVault_Corrupt_JunkData(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestVault_Reset(t *testing.T) {
|
||||
s := newVault(t)
|
||||
|
||||
// Write some data.
|
||||
require.NoError(t, s.SetIMAPPort(1234))
|
||||
require.NoError(t, s.SetSMTPPort(5678))
|
||||
|
||||
// The data was written.
|
||||
require.Equal(t, 1234, s.GetIMAPPort())
|
||||
require.Equal(t, 5678, s.GetSMTPPort())
|
||||
|
||||
// Reset.
|
||||
require.NoError(t, s.Reset(s.GetGluonDir()))
|
||||
|
||||
// The data is gone.
|
||||
require.Equal(t, 1143, s.GetIMAPPort())
|
||||
require.Equal(t, 1025, s.GetSMTPPort())
|
||||
}
|
||||
|
||||
func newVault(t *testing.T) *vault.Vault {
|
||||
t.Helper()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user