code.gitea.io/gitea@v1.22.3/modules/setting/service_test.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package setting 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/modules/structs" 10 11 "github.com/gobwas/glob" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestLoadServices(t *testing.T) { 16 oldService := Service 17 defer func() { 18 Service = oldService 19 }() 20 21 cfg, err := NewConfigProviderFromData(` 22 [service] 23 EMAIL_DOMAIN_WHITELIST = d1, *.w 24 EMAIL_DOMAIN_ALLOWLIST = d2, *.a 25 EMAIL_DOMAIN_BLOCKLIST = d3, *.b 26 `) 27 assert.NoError(t, err) 28 loadServiceFrom(cfg) 29 30 match := func(globs []glob.Glob, s string) bool { 31 for _, g := range globs { 32 if g.Match(s) { 33 return true 34 } 35 } 36 return false 37 } 38 39 assert.True(t, match(Service.EmailDomainAllowList, "d1")) 40 assert.True(t, match(Service.EmailDomainAllowList, "foo.w")) 41 assert.True(t, match(Service.EmailDomainAllowList, "d2")) 42 assert.True(t, match(Service.EmailDomainAllowList, "foo.a")) 43 assert.False(t, match(Service.EmailDomainAllowList, "d3")) 44 45 assert.True(t, match(Service.EmailDomainBlockList, "d3")) 46 assert.True(t, match(Service.EmailDomainBlockList, "foo.b")) 47 assert.False(t, match(Service.EmailDomainBlockList, "d1")) 48 } 49 50 func TestLoadServiceVisibilityModes(t *testing.T) { 51 oldService := Service 52 defer func() { 53 Service = oldService 54 }() 55 56 kases := map[string]func(){ 57 ` 58 [service] 59 DEFAULT_USER_VISIBILITY = public 60 ALLOWED_USER_VISIBILITY_MODES = public,limited,private 61 `: func() { 62 assert.Equal(t, "public", Service.DefaultUserVisibility) 63 assert.Equal(t, structs.VisibleTypePublic, Service.DefaultUserVisibilityMode) 64 assert.Equal(t, []string{"public", "limited", "private"}, Service.AllowedUserVisibilityModes) 65 }, 66 ` 67 [service] 68 DEFAULT_USER_VISIBILITY = public 69 `: func() { 70 assert.Equal(t, "public", Service.DefaultUserVisibility) 71 assert.Equal(t, structs.VisibleTypePublic, Service.DefaultUserVisibilityMode) 72 assert.Equal(t, []string{"public", "limited", "private"}, Service.AllowedUserVisibilityModes) 73 }, 74 ` 75 [service] 76 DEFAULT_USER_VISIBILITY = limited 77 `: func() { 78 assert.Equal(t, "limited", Service.DefaultUserVisibility) 79 assert.Equal(t, structs.VisibleTypeLimited, Service.DefaultUserVisibilityMode) 80 assert.Equal(t, []string{"public", "limited", "private"}, Service.AllowedUserVisibilityModes) 81 }, 82 ` 83 [service] 84 ALLOWED_USER_VISIBILITY_MODES = public,limited,private 85 `: func() { 86 assert.Equal(t, "public", Service.DefaultUserVisibility) 87 assert.Equal(t, structs.VisibleTypePublic, Service.DefaultUserVisibilityMode) 88 assert.Equal(t, []string{"public", "limited", "private"}, Service.AllowedUserVisibilityModes) 89 }, 90 ` 91 [service] 92 DEFAULT_USER_VISIBILITY = public 93 ALLOWED_USER_VISIBILITY_MODES = limited,private 94 `: func() { 95 assert.Equal(t, "limited", Service.DefaultUserVisibility) 96 assert.Equal(t, structs.VisibleTypeLimited, Service.DefaultUserVisibilityMode) 97 assert.Equal(t, []string{"limited", "private"}, Service.AllowedUserVisibilityModes) 98 }, 99 ` 100 [service] 101 DEFAULT_USER_VISIBILITY = my_type 102 ALLOWED_USER_VISIBILITY_MODES = limited,private 103 `: func() { 104 assert.Equal(t, "limited", Service.DefaultUserVisibility) 105 assert.Equal(t, structs.VisibleTypeLimited, Service.DefaultUserVisibilityMode) 106 assert.Equal(t, []string{"limited", "private"}, Service.AllowedUserVisibilityModes) 107 }, 108 ` 109 [service] 110 DEFAULT_USER_VISIBILITY = public 111 ALLOWED_USER_VISIBILITY_MODES = public, limit, privated 112 `: func() { 113 assert.Equal(t, "public", Service.DefaultUserVisibility) 114 assert.Equal(t, structs.VisibleTypePublic, Service.DefaultUserVisibilityMode) 115 assert.Equal(t, []string{"public"}, Service.AllowedUserVisibilityModes) 116 }, 117 } 118 119 for kase, fun := range kases { 120 t.Run(kase, func(t *testing.T) { 121 cfg, err := NewConfigProviderFromData(kase) 122 assert.NoError(t, err) 123 loadServiceFrom(cfg) 124 fun() 125 // reset 126 Service.AllowedUserVisibilityModesSlice = []bool{true, true, true} 127 Service.AllowedUserVisibilityModes = []string{} 128 Service.DefaultUserVisibility = "" 129 Service.DefaultUserVisibilityMode = structs.VisibleTypePublic 130 }) 131 } 132 }