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