File: account_test.go

package info (click to toggle)
golang-github-protonmail-gluon 0.17.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 16,020 kB
  • sloc: sh: 55; makefile: 5
file content (57 lines) | stat: -rw-r--r-- 1,475 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package tests

import (
	"errors"
	"os"
	"path/filepath"
	"testing"

	"github.com/ProtonMail/gluon/db"
	"github.com/stretchr/testify/require"
)

func TestAccountRemovalMovesDBToDeferredDeleteFolder(t *testing.T) {
	dataDir := t.TempDir()
	dbDir := t.TempDir()

	dbDeleteDirPath := db.GetDeferredDeleteDBPath(dbDir)

	// Deferred delete folder does not exist.
	empty, err := isEmptyFolder(dbDeleteDirPath)
	require.NoError(t, err)
	require.True(t, empty)

	runServer(t, defaultServerOptions(t, withDataDir(dataDir), withDatabaseDir(dbDir)), func(session *testSession) {
		userID := session.removeAccount(t, "user")

		// Remove account's DB was moved to this folder.
		empty, err := isEmptyFolder(dbDeleteDirPath)
		require.NoError(t, err)
		require.False(t, empty)

		// DB dir should not have user id files anymore.
		matchingFiles, err := filepath.Glob(filepath.Join(dbDir, userID+"*"))
		require.NoError(t, err)
		require.Empty(t, matchingFiles)
	})

	// Database will be deleted on server startup.
	runServer(t, defaultServerOptions(t, withDataDir(dataDir), withDatabaseDir(dbDir)), func(session *testSession) {
		empty, err := isEmptyFolder(dbDeleteDirPath)
		require.NoError(t, err)
		require.True(t, empty)
	})
}

func isEmptyFolder(path string) (bool, error) {
	matchingFiles, err := filepath.Glob(filepath.Join(path, "*"))
	if err != nil {
		if errors.Is(err, os.ErrNotExist) {
			return true, nil
		}

		return false, err
	}

	return len(matchingFiles) == 0, nil
}