gitea源码

oauth2_test.go 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "os"
  6. "testing"
  7. "code.gitea.io/gitea/modules/generate"
  8. "code.gitea.io/gitea/modules/test"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestGetGeneralSigningSecret(t *testing.T) {
  12. // when there is no general signing secret, it should be generated, and keep the same value
  13. generalSigningSecret.Store(nil)
  14. s1 := GetGeneralTokenSigningSecret()
  15. assert.NotNil(t, s1)
  16. s2 := GetGeneralTokenSigningSecret()
  17. assert.Equal(t, s1, s2)
  18. // the config value should always override any pre-generated value
  19. cfg, _ := NewConfigProviderFromData(`
  20. [oauth2]
  21. JWT_SECRET = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
  22. `)
  23. defer test.MockVariableValue(&InstallLock, true)()
  24. loadOAuth2From(cfg)
  25. actual := GetGeneralTokenSigningSecret()
  26. expected, _ := generate.DecodeJwtSecretBase64("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB")
  27. assert.Len(t, actual, 32)
  28. assert.Equal(t, expected, actual)
  29. }
  30. func TestGetGeneralSigningSecretSave(t *testing.T) {
  31. defer test.MockVariableValue(&InstallLock, true)()
  32. old := GetGeneralTokenSigningSecret()
  33. assert.Len(t, old, 32)
  34. tmpFile := t.TempDir() + "/app.ini"
  35. _ = os.WriteFile(tmpFile, nil, 0o644)
  36. cfg, _ := NewConfigProviderFromFile(tmpFile)
  37. loadOAuth2From(cfg)
  38. generated := GetGeneralTokenSigningSecret()
  39. assert.Len(t, generated, 32)
  40. assert.NotEqual(t, old, generated)
  41. generalSigningSecret.Store(nil)
  42. cfg, _ = NewConfigProviderFromFile(tmpFile)
  43. loadOAuth2From(cfg)
  44. again := GetGeneralTokenSigningSecret()
  45. assert.Equal(t, generated, again)
  46. iniContent, err := os.ReadFile(tmpFile)
  47. assert.NoError(t, err)
  48. assert.Contains(t, string(iniContent), "JWT_SECRET = ")
  49. }
  50. func TestOauth2DefaultApplications(t *testing.T) {
  51. cfg, _ := NewConfigProviderFromData(``)
  52. loadOAuth2From(cfg)
  53. assert.Equal(t, []string{"git-credential-oauth", "git-credential-manager", "tea"}, OAuth2.DefaultApplications)
  54. cfg, _ = NewConfigProviderFromData(`[oauth2]
  55. DEFAULT_APPLICATIONS = tea
  56. `)
  57. loadOAuth2From(cfg)
  58. assert.Equal(t, []string{"tea"}, OAuth2.DefaultApplications)
  59. cfg, _ = NewConfigProviderFromData(`[oauth2]
  60. DEFAULT_APPLICATIONS =
  61. `)
  62. loadOAuth2From(cfg)
  63. assert.Nil(t, OAuth2.DefaultApplications)
  64. }