code.gitea.io/gitea@v1.22.3/services/doctor/dbconsistency_test.go (about) 1 // Copyright 2024 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package doctor 5 6 import ( 7 "slices" 8 "testing" 9 10 "code.gitea.io/gitea/models/auth" 11 "code.gitea.io/gitea/models/db" 12 "code.gitea.io/gitea/models/unittest" 13 "code.gitea.io/gitea/models/user" 14 "code.gitea.io/gitea/modules/log" 15 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestConsistencyCheck(t *testing.T) { 20 checks := prepareDBConsistencyChecks() 21 idx := slices.IndexFunc(checks, func(check consistencyCheck) bool { 22 return check.Name == "Orphaned OAuth2Application without existing User" 23 }) 24 if !assert.NotEqual(t, -1, idx) { 25 return 26 } 27 28 _ = db.TruncateBeans(db.DefaultContext, &auth.OAuth2Application{}, &user.User{}) 29 _ = db.TruncateBeans(db.DefaultContext, &auth.OAuth2Application{}, &auth.OAuth2Application{}) 30 31 err := db.Insert(db.DefaultContext, &user.User{ID: 1}) 32 assert.NoError(t, err) 33 err = db.Insert(db.DefaultContext, &auth.OAuth2Application{Name: "test-oauth2-app-1", ClientID: "client-id-1"}) 34 assert.NoError(t, err) 35 err = db.Insert(db.DefaultContext, &auth.OAuth2Application{Name: "test-oauth2-app-2", ClientID: "client-id-2", UID: 1}) 36 assert.NoError(t, err) 37 err = db.Insert(db.DefaultContext, &auth.OAuth2Application{Name: "test-oauth2-app-3", ClientID: "client-id-3", UID: 99999999}) 38 assert.NoError(t, err) 39 40 unittest.AssertExistsAndLoadBean(t, &auth.OAuth2Application{ClientID: "client-id-1"}) 41 unittest.AssertExistsAndLoadBean(t, &auth.OAuth2Application{ClientID: "client-id-2"}) 42 unittest.AssertExistsAndLoadBean(t, &auth.OAuth2Application{ClientID: "client-id-3"}) 43 44 oauth2AppCheck := checks[idx] 45 err = oauth2AppCheck.Run(db.DefaultContext, log.GetManager().GetLogger(log.DEFAULT), true) 46 assert.NoError(t, err) 47 48 unittest.AssertExistsAndLoadBean(t, &auth.OAuth2Application{ClientID: "client-id-1"}) 49 unittest.AssertExistsAndLoadBean(t, &auth.OAuth2Application{ClientID: "client-id-2"}) 50 unittest.AssertNotExistsBean(t, &auth.OAuth2Application{ClientID: "client-id-3"}) 51 }