gitea源码

fix16961_test.go 7.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package doctor
  4. import (
  5. "testing"
  6. repo_model "code.gitea.io/gitea/models/repo"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func Test_fixUnitConfig_16961(t *testing.T) {
  10. tests := []struct {
  11. name string
  12. bs string
  13. wantFixed bool
  14. wantErr bool
  15. }{
  16. {
  17. name: "normal: {}",
  18. bs: "{}",
  19. wantFixed: false,
  20. wantErr: false,
  21. },
  22. {
  23. name: "broken but fixable: &{}",
  24. bs: "&{}",
  25. wantFixed: true,
  26. wantErr: false,
  27. },
  28. {
  29. name: "broken but unfixable: &{asdasd}",
  30. bs: "&{asdasd}",
  31. wantFixed: false,
  32. wantErr: true,
  33. },
  34. }
  35. for _, tt := range tests {
  36. t.Run(tt.name, func(t *testing.T) {
  37. gotFixed, err := fixUnitConfig16961([]byte(tt.bs), &repo_model.UnitConfig{})
  38. if (err != nil) != tt.wantErr {
  39. t.Errorf("fixUnitConfig_16961() error = %v, wantErr %v", err, tt.wantErr)
  40. return
  41. }
  42. if gotFixed != tt.wantFixed {
  43. t.Errorf("fixUnitConfig_16961() = %v, want %v", gotFixed, tt.wantFixed)
  44. }
  45. })
  46. }
  47. }
  48. func Test_fixExternalWikiConfig_16961(t *testing.T) {
  49. tests := []struct {
  50. name string
  51. bs string
  52. expected string
  53. wantFixed bool
  54. wantErr bool
  55. }{
  56. {
  57. name: "normal: {\"ExternalWikiURL\":\"http://someurl\"}",
  58. bs: "{\"ExternalWikiURL\":\"http://someurl\"}",
  59. expected: "http://someurl",
  60. wantFixed: false,
  61. wantErr: false,
  62. },
  63. {
  64. name: "broken: &{http://someurl}",
  65. bs: "&{http://someurl}",
  66. expected: "http://someurl",
  67. wantFixed: true,
  68. wantErr: false,
  69. },
  70. {
  71. name: "broken but unfixable: http://someurl",
  72. bs: "http://someurl",
  73. wantFixed: false,
  74. wantErr: true,
  75. },
  76. }
  77. for _, tt := range tests {
  78. t.Run(tt.name, func(t *testing.T) {
  79. cfg := &repo_model.ExternalWikiConfig{}
  80. gotFixed, err := fixExternalWikiConfig16961([]byte(tt.bs), cfg)
  81. if (err != nil) != tt.wantErr {
  82. t.Errorf("fixExternalWikiConfig_16961() error = %v, wantErr %v", err, tt.wantErr)
  83. return
  84. }
  85. if gotFixed != tt.wantFixed {
  86. t.Errorf("fixExternalWikiConfig_16961() = %v, want %v", gotFixed, tt.wantFixed)
  87. }
  88. if cfg.ExternalWikiURL != tt.expected {
  89. t.Errorf("fixExternalWikiConfig_16961().ExternalWikiURL = %v, want %v", cfg.ExternalWikiURL, tt.expected)
  90. }
  91. })
  92. }
  93. }
  94. func Test_fixExternalTrackerConfig_16961(t *testing.T) {
  95. tests := []struct {
  96. name string
  97. bs string
  98. expected repo_model.ExternalTrackerConfig
  99. wantFixed bool
  100. wantErr bool
  101. }{
  102. {
  103. name: "normal",
  104. bs: `{"ExternalTrackerURL":"a","ExternalTrackerFormat":"b","ExternalTrackerStyle":"c"}`,
  105. expected: repo_model.ExternalTrackerConfig{
  106. ExternalTrackerURL: "a",
  107. ExternalTrackerFormat: "b",
  108. ExternalTrackerStyle: "c",
  109. },
  110. wantFixed: false,
  111. wantErr: false,
  112. },
  113. {
  114. name: "broken",
  115. bs: "&{a b c}",
  116. expected: repo_model.ExternalTrackerConfig{
  117. ExternalTrackerURL: "a",
  118. ExternalTrackerFormat: "b",
  119. ExternalTrackerStyle: "c",
  120. },
  121. wantFixed: true,
  122. wantErr: false,
  123. },
  124. {
  125. name: "broken - too many fields",
  126. bs: "&{a b c d}",
  127. wantFixed: false,
  128. wantErr: true,
  129. },
  130. {
  131. name: "broken - wrong format",
  132. bs: "a b c d}",
  133. wantFixed: false,
  134. wantErr: true,
  135. },
  136. }
  137. for _, tt := range tests {
  138. t.Run(tt.name, func(t *testing.T) {
  139. cfg := &repo_model.ExternalTrackerConfig{}
  140. gotFixed, err := fixExternalTrackerConfig16961([]byte(tt.bs), cfg)
  141. if (err != nil) != tt.wantErr {
  142. t.Errorf("fixExternalTrackerConfig_16961() error = %v, wantErr %v", err, tt.wantErr)
  143. return
  144. }
  145. if gotFixed != tt.wantFixed {
  146. t.Errorf("fixExternalTrackerConfig_16961() = %v, want %v", gotFixed, tt.wantFixed)
  147. }
  148. if cfg.ExternalTrackerFormat != tt.expected.ExternalTrackerFormat {
  149. t.Errorf("fixExternalTrackerConfig_16961().ExternalTrackerFormat = %v, want %v", tt.expected.ExternalTrackerFormat, cfg.ExternalTrackerFormat)
  150. }
  151. if cfg.ExternalTrackerStyle != tt.expected.ExternalTrackerStyle {
  152. t.Errorf("fixExternalTrackerConfig_16961().ExternalTrackerStyle = %v, want %v", tt.expected.ExternalTrackerStyle, cfg.ExternalTrackerStyle)
  153. }
  154. if cfg.ExternalTrackerURL != tt.expected.ExternalTrackerURL {
  155. t.Errorf("fixExternalTrackerConfig_16961().ExternalTrackerURL = %v, want %v", tt.expected.ExternalTrackerURL, cfg.ExternalTrackerURL)
  156. }
  157. })
  158. }
  159. }
  160. func Test_fixPullRequestsConfig_16961(t *testing.T) {
  161. tests := []struct {
  162. name string
  163. bs string
  164. expected repo_model.PullRequestsConfig
  165. wantFixed bool
  166. wantErr bool
  167. }{
  168. {
  169. name: "normal",
  170. bs: `{"IgnoreWhitespaceConflicts":false,"AllowMerge":false,"AllowRebase":false,"AllowRebaseMerge":false,"AllowSquash":false,"AllowManualMerge":false,"AutodetectManualMerge":false,"DefaultDeleteBranchAfterMerge":false,"DefaultMergeStyle":""}`,
  171. },
  172. {
  173. name: "broken - 1.14",
  174. bs: `&{%!s(bool=false) %!s(bool=true) %!s(bool=true) %!s(bool=true) %!s(bool=true) %!s(bool=false) %!s(bool=false)}`,
  175. expected: repo_model.PullRequestsConfig{
  176. IgnoreWhitespaceConflicts: false,
  177. AllowMerge: true,
  178. AllowRebase: true,
  179. AllowRebaseMerge: true,
  180. AllowSquash: true,
  181. AllowManualMerge: false,
  182. AutodetectManualMerge: false,
  183. },
  184. wantFixed: true,
  185. },
  186. {
  187. name: "broken - 1.15",
  188. bs: `&{%!s(bool=false) %!s(bool=true) %!s(bool=true) %!s(bool=true) %!s(bool=true) %!s(bool=false) %!s(bool=false) %!s(bool=false) merge}`,
  189. expected: repo_model.PullRequestsConfig{
  190. AllowMerge: true,
  191. AllowRebase: true,
  192. AllowRebaseMerge: true,
  193. AllowSquash: true,
  194. DefaultMergeStyle: repo_model.MergeStyleMerge,
  195. },
  196. wantFixed: true,
  197. },
  198. }
  199. for _, tt := range tests {
  200. t.Run(tt.name, func(t *testing.T) {
  201. cfg := &repo_model.PullRequestsConfig{}
  202. gotFixed, err := fixPullRequestsConfig16961([]byte(tt.bs), cfg)
  203. if (err != nil) != tt.wantErr {
  204. t.Errorf("fixPullRequestsConfig_16961() error = %v, wantErr %v", err, tt.wantErr)
  205. return
  206. }
  207. if gotFixed != tt.wantFixed {
  208. t.Errorf("fixPullRequestsConfig_16961() = %v, want %v", gotFixed, tt.wantFixed)
  209. }
  210. assert.Equal(t, &tt.expected, cfg)
  211. })
  212. }
  213. }
  214. func Test_fixIssuesConfig_16961(t *testing.T) {
  215. tests := []struct {
  216. name string
  217. bs string
  218. expected repo_model.IssuesConfig
  219. wantFixed bool
  220. wantErr bool
  221. }{
  222. {
  223. name: "normal",
  224. bs: `{"EnableTimetracker":true,"AllowOnlyContributorsToTrackTime":true,"EnableDependencies":true}`,
  225. expected: repo_model.IssuesConfig{
  226. EnableTimetracker: true,
  227. AllowOnlyContributorsToTrackTime: true,
  228. EnableDependencies: true,
  229. },
  230. },
  231. {
  232. name: "broken",
  233. bs: `&{%!s(bool=true) %!s(bool=true) %!s(bool=true)}`,
  234. expected: repo_model.IssuesConfig{
  235. EnableTimetracker: true,
  236. AllowOnlyContributorsToTrackTime: true,
  237. EnableDependencies: true,
  238. },
  239. wantFixed: true,
  240. },
  241. }
  242. for _, tt := range tests {
  243. t.Run(tt.name, func(t *testing.T) {
  244. cfg := &repo_model.IssuesConfig{}
  245. gotFixed, err := fixIssuesConfig16961([]byte(tt.bs), cfg)
  246. if (err != nil) != tt.wantErr {
  247. t.Errorf("fixIssuesConfig_16961() error = %v, wantErr %v", err, tt.wantErr)
  248. return
  249. }
  250. if gotFixed != tt.wantFixed {
  251. t.Errorf("fixIssuesConfig_16961() = %v, want %v", gotFixed, tt.wantFixed)
  252. }
  253. assert.Equal(t, &tt.expected, cfg)
  254. })
  255. }
  256. }