Skip to content

Commit 7925be3

Browse files
committed
add tests
1 parent 6ca9a67 commit 7925be3

File tree

4 files changed

+63
-7
lines changed

4 files changed

+63
-7
lines changed

models/db/engine.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ func SyncAllTables() error {
134134
func InitEngine(ctx context.Context) error {
135135
xormEngine, err := newXORMEngine()
136136
if err != nil {
137+
if strings.Contains(err.Error(), "SQLite3 support") {
138+
return fmt.Errorf(`sqlite3 requires: -tags sqlite,sqlite_unlock_notify%s%w`, "\n", err)
139+
}
137140
return fmt.Errorf("failed to connect to database: %w", err)
138141
}
139142

models/migrations/base/tests.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"code.gitea.io/gitea/modules/setting"
1919
"code.gitea.io/gitea/modules/testlogger"
2020

21-
"github.com/stretchr/testify/assert"
21+
"github.com/stretchr/testify/require"
2222
"xorm.io/xorm"
2323
)
2424

@@ -33,15 +33,15 @@ func PrepareTestEnv(t *testing.T, skip int, syncModels ...any) (*xorm.Engine, fu
3333
ourSkip := 2
3434
ourSkip += skip
3535
deferFn := testlogger.PrintCurrentTest(t, ourSkip)
36-
assert.NoError(t, unittest.SyncDirs(filepath.Join(filepath.Dir(setting.AppPath), "tests/gitea-repositories-meta"), setting.RepoRootPath))
36+
require.NoError(t, unittest.SyncDirs(filepath.Join(filepath.Dir(setting.AppPath), "tests/gitea-repositories-meta"), setting.RepoRootPath))
3737

3838
if err := deleteDB(); err != nil {
39-
t.Errorf("unable to reset database: %v", err)
39+
t.Fatalf("unable to reset database: %v", err)
4040
return nil, deferFn
4141
}
4242

4343
x, err := newXORMEngine()
44-
assert.NoError(t, err)
44+
require.NoError(t, err)
4545
if x != nil {
4646
oldDefer := deferFn
4747
deferFn = func() {

models/migrations/v1_23/v310.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ import (
1010
"xorm.io/xorm"
1111
)
1212

13-
type WebAuthnCredential struct {
13+
type WebAuthnCredential310 struct {
1414
CredentialFlags string `xorm:"TEXT DEFAULT ''"`
1515
}
1616

17-
func (cred WebAuthnCredential) TableName() string {
17+
func (cred WebAuthnCredential310) TableName() string {
1818
return "webauthn_credential"
1919
}
2020

2121
func AddFlagsOnWebAuthnCredential(x *xorm.Engine) error {
22-
if err := x.Sync(new(WebAuthnCredential)); err != nil {
22+
if err := x.Sync(new(WebAuthnCredential310)); err != nil {
2323
return err
2424
}
2525

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// Copyright 2023 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package v1_23 //nolint
5+
6+
import (
7+
"testing"
8+
9+
"code.gitea.io/gitea/models/migrations/base"
10+
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
type WebAuthnCredentialOld struct {
15+
ID int64 `xorm:"pk autoincr"`
16+
}
17+
18+
func (cred WebAuthnCredentialOld) TableName() string {
19+
return "webauthn_credential"
20+
}
21+
22+
func TestAddFlagsOnWebAuthnCredential(t *testing.T) {
23+
x, deferable := base.PrepareTestEnv(t, 0, new(WebAuthnCredentialOld))
24+
defer deferable()
25+
26+
_, err := x.Exec("INSERT INTO webauthn_credential (id) VALUES (1)")
27+
require.NoError(t, err)
28+
_, err = x.Exec("INSERT INTO webauthn_credential (id) VALUES (2)")
29+
require.NoError(t, err)
30+
31+
require.NoError(t, AddFlagsOnWebAuthnCredential(x))
32+
33+
getFlags := func() (s1, s2 string) {
34+
x.Select("credential_flags").Table("webauthn_credential").Where("id=1").Get(&s1)
35+
x.Select("credential_flags").Table("webauthn_credential").Where("id=2").Get(&s2)
36+
return s1, s2
37+
}
38+
39+
s1, s2 := getFlags()
40+
require.Equal(t, `{"userPresent":false,"userVerified":false,"backupEligible":true,"backupState":false}`, s1)
41+
require.Equal(t, `{"userPresent":false,"userVerified":false,"backupEligible":true,"backupState":false}`, s2)
42+
43+
_, err = x.Table("webauthn_credential").Where("id=1").Update(map[string]any{"credential_flags": `{}`})
44+
require.NoError(t, err)
45+
s1, s2 = getFlags()
46+
require.Equal(t, `{}`, s1)
47+
require.Equal(t, `{"userPresent":false,"userVerified":false,"backupEligible":true,"backupState":false}`, s2)
48+
49+
require.NoError(t, AddFlagsOnWebAuthnCredential(x))
50+
s1, s2 = getFlags()
51+
require.Equal(t, `{}`, s1)
52+
require.Equal(t, `{"userPresent":false,"userVerified":false,"backupEligible":true,"backupState":false}`, s2)
53+
}

0 commit comments

Comments
 (0)