You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

service_test.go 4.0KB

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