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

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