2023-05-22 03:05:44 +03:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package setting
import (
"testing"
2023-07-28 19:15:39 +03:00
"code.gitea.io/gitea/modules/structs"
2023-05-22 03:05:44 +03:00
"github.com/gobwas/glob"
"github.com/stretchr/testify/assert"
)
func TestLoadServices ( t * testing . T ) {
oldService := Service
defer func ( ) {
Service = oldService
} ( )
cfg , err := NewConfigProviderFromData ( `
[ service ]
EMAIL_DOMAIN_WHITELIST = d1 , * . w
EMAIL_DOMAIN_ALLOWLIST = d2 , * . a
EMAIL_DOMAIN_BLOCKLIST = d3 , * . b
` )
assert . NoError ( t , err )
loadServiceFrom ( cfg )
match := func ( globs [ ] glob . Glob , s string ) bool {
for _ , g := range globs {
if g . Match ( s ) {
return true
}
}
return false
}
assert . True ( t , match ( Service . EmailDomainAllowList , "d1" ) )
assert . True ( t , match ( Service . EmailDomainAllowList , "foo.w" ) )
assert . True ( t , match ( Service . EmailDomainAllowList , "d2" ) )
assert . True ( t , match ( Service . EmailDomainAllowList , "foo.a" ) )
assert . False ( t , match ( Service . EmailDomainAllowList , "d3" ) )
assert . True ( t , match ( Service . EmailDomainBlockList , "d3" ) )
assert . True ( t , match ( Service . EmailDomainBlockList , "foo.b" ) )
assert . False ( t , match ( Service . EmailDomainBlockList , "d1" ) )
}
2023-07-28 19:15:39 +03:00
func TestLoadServiceVisibilityModes ( t * testing . T ) {
oldService := Service
defer func ( ) {
Service = oldService
} ( )
kases := map [ string ] func ( ) {
`
[ service ]
DEFAULT_USER_VISIBILITY = public
ALLOWED_USER_VISIBILITY_MODES = public , limited , private
` : func ( ) {
assert . Equal ( t , "public" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypePublic , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "public" , "limited" , "private" } , Service . AllowedUserVisibilityModes )
} ,
`
[ service ]
DEFAULT_USER_VISIBILITY = public
` : func ( ) {
assert . Equal ( t , "public" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypePublic , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "public" , "limited" , "private" } , Service . AllowedUserVisibilityModes )
} ,
`
[ service ]
DEFAULT_USER_VISIBILITY = limited
` : func ( ) {
assert . Equal ( t , "limited" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypeLimited , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "public" , "limited" , "private" } , Service . AllowedUserVisibilityModes )
} ,
`
[ service ]
ALLOWED_USER_VISIBILITY_MODES = public , limited , private
` : func ( ) {
assert . Equal ( t , "public" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypePublic , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "public" , "limited" , "private" } , Service . AllowedUserVisibilityModes )
} ,
`
[ service ]
DEFAULT_USER_VISIBILITY = public
ALLOWED_USER_VISIBILITY_MODES = limited , private
` : func ( ) {
assert . Equal ( t , "limited" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypeLimited , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "limited" , "private" } , Service . AllowedUserVisibilityModes )
} ,
`
[ service ]
DEFAULT_USER_VISIBILITY = my_type
ALLOWED_USER_VISIBILITY_MODES = limited , private
` : func ( ) {
assert . Equal ( t , "limited" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypeLimited , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "limited" , "private" } , Service . AllowedUserVisibilityModes )
} ,
`
[ service ]
DEFAULT_USER_VISIBILITY = public
ALLOWED_USER_VISIBILITY_MODES = public , limit , privated
` : func ( ) {
assert . Equal ( t , "public" , Service . DefaultUserVisibility )
assert . Equal ( t , structs . VisibleTypePublic , Service . DefaultUserVisibilityMode )
assert . Equal ( t , [ ] string { "public" } , Service . AllowedUserVisibilityModes )
} ,
}
for kase , fun := range kases {
t . Run ( kase , func ( t * testing . T ) {
cfg , err := NewConfigProviderFromData ( kase )
assert . NoError ( t , err )
loadServiceFrom ( cfg )
fun ( )
// reset
Service . AllowedUserVisibilityModesSlice = [ ] bool { true , true , true }
Service . AllowedUserVisibilityModes = [ ] string { }
Service . DefaultUserVisibility = ""
Service . DefaultUserVisibilityMode = structs . VisibleTypePublic
} )
}
}