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  }