v2.15.0 cf76057

detector_test.go RawHistoryFolder

1package backup
2
3import (
4	"testing"
5
6	"github.com/bnema/gordon/internal/domain"
7	"github.com/stretchr/testify/assert"
8	"github.com/stretchr/testify/require"
9)
10
11func TestDetectDatabaseFromAttachment_ExtractsPostgresVersion(t *testing.T) {
12	db, ok := detectDatabaseFromAttachment("app.example.com", domain.Attachment{
13		Name:        "postgres",
14		Image:       "postgres:17.4-alpine",
15		ContainerID: "abc123",
16		Ports:       []int{55432},
17	})
18
19	require.True(t, ok)
20	assert.Equal(t, domain.DBTypePostgreSQL, db.Type)
21	assert.Equal(t, "17", db.Version)
22	assert.Equal(t, 55432, db.Port)
23}
24
25func TestDetectDatabaseFromAttachment_DefaultPort(t *testing.T) {
26	db, ok := detectDatabaseFromAttachment("app.example.com", domain.Attachment{
27		Name:        "postgres",
28		Image:       "postgres:16",
29		ContainerID: "xyz789",
30		Ports:       []int{},
31	})
32
33	require.True(t, ok)
34	assert.Equal(t, 5432, db.Port)
35	assert.Equal(t, "16", db.Version)
36}
37
38func TestDetectDatabaseFromAttachment_PrefersPostgresPort(t *testing.T) {
39	db, ok := detectDatabaseFromAttachment("app.example.com", domain.Attachment{
40		Name:        "postgres",
41		Image:       "postgres:16",
42		ContainerID: "xyz789",
43		Ports:       []int{15432, 5432, 25432},
44	})
45
46	require.True(t, ok)
47	assert.Equal(t, 5432, db.Port)
48}
49
50func TestDetectDatabaseFromAttachment_UsesFirstPositivePortWhen5432Missing(t *testing.T) {
51	db, ok := detectDatabaseFromAttachment("app.example.com", domain.Attachment{
52		Name:        "postgres",
53		Image:       "postgres:16",
54		ContainerID: "xyz789",
55		Ports:       []int{0, -1, 15432, 25432},
56	})
57
58	require.True(t, ok)
59	assert.Equal(t, 15432, db.Port)
60}
61
62func TestPostgresVersionFromImage(t *testing.T) {
63	assert.Equal(t, "18", postgresVersionFromImage("postgres:18"))
64	assert.Equal(t, "17", postgresVersionFromImage("postgres:17.4-alpine"))
65	assert.Equal(t, "", postgresVersionFromImage("postgres:latest"))
66	assert.Equal(t, "", postgresVersionFromImage("postgres:alpine"))
67	assert.Equal(t, "", postgresVersionFromImage("postgres"))
68}
69
70func TestDetectDatabaseFromAttachment_NonPostgres(t *testing.T) {
71	_, ok := detectDatabaseFromAttachment("app.example.com", domain.Attachment{
72		Name:        "mysql",
73		Image:       "mysql:8.0",
74		ContainerID: "def456",
75		Ports:       []int{3306},
76	})
77	assert.False(t, ok)
78}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close