116 lines
3.5 KiB
Go
116 lines
3.5 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// Copyright 2025 The Forgejo Authors. All rights reserved
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package setting
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"code.gitea.io/gitea/modules/json"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMakeAbsoluteAssetURL(t *testing.T) {
|
|
assert.Equal(t, "https://localhost:2345", MakeAbsoluteAssetURL("https://localhost:1234", "https://localhost:2345"))
|
|
assert.Equal(t, "https://localhost:2345", MakeAbsoluteAssetURL("https://localhost:1234/", "https://localhost:2345"))
|
|
assert.Equal(t, "https://localhost:2345", MakeAbsoluteAssetURL("https://localhost:1234/", "https://localhost:2345/"))
|
|
assert.Equal(t, "https://localhost:1234/foo", MakeAbsoluteAssetURL("https://localhost:1234", "/foo"))
|
|
assert.Equal(t, "https://localhost:1234/foo", MakeAbsoluteAssetURL("https://localhost:1234/", "/foo"))
|
|
assert.Equal(t, "https://localhost:1234/foo", MakeAbsoluteAssetURL("https://localhost:1234/", "/foo/"))
|
|
assert.Equal(t, "https://localhost:1234/foo", MakeAbsoluteAssetURL("https://localhost:1234/foo", "/foo"))
|
|
assert.Equal(t, "https://localhost:1234/foo", MakeAbsoluteAssetURL("https://localhost:1234/foo/", "/foo"))
|
|
assert.Equal(t, "https://localhost:1234/foo", MakeAbsoluteAssetURL("https://localhost:1234/foo/", "/foo/"))
|
|
assert.Equal(t, "https://localhost:1234/bar", MakeAbsoluteAssetURL("https://localhost:1234/foo", "/bar"))
|
|
assert.Equal(t, "https://localhost:1234/bar", MakeAbsoluteAssetURL("https://localhost:1234/foo/", "/bar"))
|
|
assert.Equal(t, "https://localhost:1234/bar", MakeAbsoluteAssetURL("https://localhost:1234/foo/", "/bar/"))
|
|
}
|
|
|
|
func TestMakeManifestData(t *testing.T) {
|
|
jsonBytes := MakeManifestData(`Example App '\"`, "https://example.com", "https://example.com/foo/bar")
|
|
assert.True(t, json.Valid(jsonBytes))
|
|
}
|
|
|
|
func TestLoadServiceDomainListsForFederation(t *testing.T) {
|
|
oldAppURL := AppURL
|
|
oldFederation := Federation
|
|
oldService := Service
|
|
|
|
defer func() {
|
|
AppURL = oldAppURL
|
|
Federation = oldFederation
|
|
Service = oldService
|
|
}()
|
|
|
|
cfg, err := NewConfigProviderFromData(`
|
|
[federation]
|
|
ENABLED = true
|
|
[service]
|
|
EMAIL_DOMAIN_ALLOWLIST = *.allow.random
|
|
EMAIL_DOMAIN_BLOCKLIST = *.block.random
|
|
`)
|
|
|
|
require.NoError(t, err)
|
|
loadServerFrom(cfg)
|
|
loadFederationFrom(cfg)
|
|
loadServiceFrom(cfg)
|
|
|
|
assert.True(t, match(Service.EmailDomainAllowList, "d1.allow.random"))
|
|
assert.True(t, match(Service.EmailDomainAllowList, "localhost"))
|
|
}
|
|
|
|
func TestLoadServiceDomainListsNoFederation(t *testing.T) {
|
|
oldAppURL := AppURL
|
|
oldFederation := Federation
|
|
oldService := Service
|
|
|
|
defer func() {
|
|
AppURL = oldAppURL
|
|
Federation = oldFederation
|
|
Service = oldService
|
|
}()
|
|
|
|
cfg, err := NewConfigProviderFromData(`
|
|
[federation]
|
|
ENABLED = false
|
|
[service]
|
|
EMAIL_DOMAIN_ALLOWLIST = *.allow.random
|
|
EMAIL_DOMAIN_BLOCKLIST = *.block.random
|
|
`)
|
|
|
|
require.NoError(t, err)
|
|
loadServerFrom(cfg)
|
|
loadFederationFrom(cfg)
|
|
loadServiceFrom(cfg)
|
|
|
|
assert.True(t, match(Service.EmailDomainAllowList, "d1.allow.random"))
|
|
}
|
|
|
|
func TestLoadServiceDomainListsFederationEmptyAllowList(t *testing.T) {
|
|
oldAppURL := AppURL
|
|
oldFederation := Federation
|
|
oldService := Service
|
|
|
|
defer func() {
|
|
AppURL = oldAppURL
|
|
Federation = oldFederation
|
|
Service = oldService
|
|
}()
|
|
|
|
cfg, err := NewConfigProviderFromData(`
|
|
[federation]
|
|
ENABLED = true
|
|
[service]
|
|
EMAIL_DOMAIN_BLOCKLIST = *.block.random
|
|
`)
|
|
|
|
require.NoError(t, err)
|
|
loadServerFrom(cfg)
|
|
loadFederationFrom(cfg)
|
|
loadServiceFrom(cfg)
|
|
|
|
assert.Empty(t, Service.EmailDomainAllowList)
|
|
}
|