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.

auth_test.go 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Copyright 2019 The Gitea Authors. All rights reserved.
  3. // Use of this source code is governed by a MIT-style
  4. // license that can be found in the LICENSE file.
  5. package auth
  6. import (
  7. "net/http"
  8. "testing"
  9. "code.gitea.io/gitea/modules/setting"
  10. )
  11. func Test_isGitRawOrLFSPath(t *testing.T) {
  12. tests := []struct {
  13. path string
  14. want bool
  15. }{
  16. {
  17. "/owner/repo/git-upload-pack",
  18. true,
  19. },
  20. {
  21. "/owner/repo/git-receive-pack",
  22. true,
  23. },
  24. {
  25. "/owner/repo/info/refs",
  26. true,
  27. },
  28. {
  29. "/owner/repo/HEAD",
  30. true,
  31. },
  32. {
  33. "/owner/repo/objects/info/alternates",
  34. true,
  35. },
  36. {
  37. "/owner/repo/objects/info/http-alternates",
  38. true,
  39. },
  40. {
  41. "/owner/repo/objects/info/packs",
  42. true,
  43. },
  44. {
  45. "/owner/repo/objects/info/blahahsdhsdkla",
  46. true,
  47. },
  48. {
  49. "/owner/repo/objects/01/23456789abcdef0123456789abcdef01234567",
  50. true,
  51. },
  52. {
  53. "/owner/repo/objects/pack/pack-123456789012345678921234567893124567894.pack",
  54. true,
  55. },
  56. {
  57. "/owner/repo/objects/pack/pack-0123456789abcdef0123456789abcdef0123456.idx",
  58. true,
  59. },
  60. {
  61. "/owner/repo/raw/branch/foo/fanaso",
  62. true,
  63. },
  64. {
  65. "/owner/repo/stars",
  66. false,
  67. },
  68. {
  69. "/notowner",
  70. false,
  71. },
  72. {
  73. "/owner/repo",
  74. false,
  75. },
  76. {
  77. "/owner/repo/commit/123456789012345678921234567893124567894",
  78. false,
  79. },
  80. {
  81. "/owner/repo/releases/download/tag/repo.tar.gz",
  82. true,
  83. },
  84. }
  85. lfsTests := []string{
  86. "/owner/repo/info/lfs/",
  87. "/owner/repo/info/lfs/objects/batch",
  88. "/owner/repo/info/lfs/objects/oid/filename",
  89. "/owner/repo/info/lfs/objects/oid",
  90. "/owner/repo/info/lfs/objects",
  91. "/owner/repo/info/lfs/verify",
  92. "/owner/repo/info/lfs/locks",
  93. "/owner/repo/info/lfs/locks/verify",
  94. "/owner/repo/info/lfs/locks/123/unlock",
  95. }
  96. origLFSStartServer := setting.LFS.StartServer
  97. for _, tt := range tests {
  98. t.Run(tt.path, func(t *testing.T) {
  99. req, _ := http.NewRequest("POST", "http://localhost"+tt.path, nil)
  100. setting.LFS.StartServer = false
  101. if got := isGitRawReleaseOrLFSPath(req); got != tt.want {
  102. t.Errorf("isGitOrLFSPath() = %v, want %v", got, tt.want)
  103. }
  104. setting.LFS.StartServer = true
  105. if got := isGitRawReleaseOrLFSPath(req); got != tt.want {
  106. t.Errorf("isGitOrLFSPath() = %v, want %v", got, tt.want)
  107. }
  108. })
  109. }
  110. for _, tt := range lfsTests {
  111. t.Run(tt, func(t *testing.T) {
  112. req, _ := http.NewRequest("POST", tt, nil)
  113. setting.LFS.StartServer = false
  114. if got := isGitRawReleaseOrLFSPath(req); got != setting.LFS.StartServer {
  115. t.Errorf("isGitOrLFSPath(%q) = %v, want %v, %v", tt, got, setting.LFS.StartServer, gitRawReleasePathRe.MatchString(tt))
  116. }
  117. setting.LFS.StartServer = true
  118. if got := isGitRawReleaseOrLFSPath(req); got != setting.LFS.StartServer {
  119. t.Errorf("isGitOrLFSPath(%q) = %v, want %v", tt, got, setting.LFS.StartServer)
  120. }
  121. })
  122. }
  123. setting.LFS.StartServer = origLFSStartServer
  124. }