gitea源码

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