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

action_test.go 9.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. package models
  2. import (
  3. "testing"
  4. "code.gitea.io/gitea/modules/setting"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestAction_GetRepoPath(t *testing.T) {
  8. action := &Action{
  9. RepoUserName: "username",
  10. RepoName: "reponame",
  11. }
  12. assert.Equal(t, "username/reponame", action.GetRepoPath())
  13. }
  14. func TestAction_GetRepoLink(t *testing.T) {
  15. action := &Action{
  16. RepoUserName: "username",
  17. RepoName: "reponame",
  18. }
  19. setting.AppSubURL = "/suburl/"
  20. assert.Equal(t, "/suburl/username/reponame", action.GetRepoLink())
  21. setting.AppSubURL = ""
  22. assert.Equal(t, "/username/reponame", action.GetRepoLink())
  23. }
  24. func TestNewRepoAction(t *testing.T) {
  25. assert.NoError(t, PrepareTestDatabase())
  26. user := &User{ID: 2}
  27. AssertExistsAndLoadBean(t, user)
  28. repo := &Repository{OwnerID: user.ID}
  29. AssertExistsAndLoadBean(t, repo)
  30. repo.Owner = user
  31. actionBean := &Action{
  32. OpType: ActionCreateRepo,
  33. ActUserID: user.ID,
  34. RepoID: repo.ID,
  35. ActUserName: user.Name,
  36. RepoName: repo.Name,
  37. RepoUserName: repo.Owner.Name,
  38. IsPrivate: repo.IsPrivate,
  39. }
  40. AssertNotExistsBean(t, actionBean)
  41. assert.NoError(t, NewRepoAction(user, repo))
  42. AssertExistsAndLoadBean(t, actionBean)
  43. }
  44. func TestRenameRepoAction(t *testing.T) {
  45. assert.NoError(t, PrepareTestDatabase())
  46. user := &User{ID: 2}
  47. AssertExistsAndLoadBean(t, user)
  48. repo := &Repository{OwnerID: user.ID}
  49. AssertExistsAndLoadBean(t, repo)
  50. repo.Owner = user
  51. oldRepoName := repo.Name
  52. const newRepoName = "newRepoName"
  53. repo.Name = newRepoName
  54. actionBean := &Action{
  55. OpType: ActionRenameRepo,
  56. ActUserID: user.ID,
  57. ActUserName: user.Name,
  58. RepoID: repo.ID,
  59. RepoName: repo.Name,
  60. RepoUserName: repo.Owner.Name,
  61. IsPrivate: repo.IsPrivate,
  62. Content: oldRepoName,
  63. }
  64. AssertNotExistsBean(t, actionBean)
  65. assert.NoError(t, RenameRepoAction(user, oldRepoName, repo))
  66. AssertExistsAndLoadBean(t, actionBean)
  67. }
  68. func TestPushCommits_ToAPIPayloadCommits(t *testing.T) {
  69. pushCommits := NewPushCommits()
  70. pushCommits.Commits = []*PushCommit{
  71. {
  72. Sha1: "abcdef1",
  73. CommitterEmail: "user2@example.com",
  74. CommitterName: "User Two",
  75. AuthorEmail: "user4@example.com",
  76. AuthorName: "User Four",
  77. Message: "message1",
  78. },
  79. {
  80. Sha1: "abcdef2",
  81. CommitterEmail: "user2@example.com",
  82. CommitterName: "User Two",
  83. AuthorEmail: "user2@example.com",
  84. AuthorName: "User Two",
  85. Message: "message2",
  86. },
  87. }
  88. pushCommits.Len = len(pushCommits.Commits)
  89. payloadCommits := pushCommits.ToAPIPayloadCommits("/username/reponame")
  90. assert.Len(t, payloadCommits, 2)
  91. assert.Equal(t, "abcdef1", payloadCommits[0].ID)
  92. assert.Equal(t, "message1", payloadCommits[0].Message)
  93. assert.Equal(t, "/username/reponame/commit/abcdef1", payloadCommits[0].URL)
  94. assert.Equal(t, "User Two", payloadCommits[0].Committer.Name)
  95. assert.Equal(t, "user2", payloadCommits[0].Committer.UserName)
  96. assert.Equal(t, "User Four", payloadCommits[0].Author.Name)
  97. assert.Equal(t, "user4", payloadCommits[0].Author.UserName)
  98. assert.Equal(t, "abcdef2", payloadCommits[1].ID)
  99. assert.Equal(t, "message2", payloadCommits[1].Message)
  100. assert.Equal(t, "/username/reponame/commit/abcdef2", payloadCommits[1].URL)
  101. assert.Equal(t, "User Two", payloadCommits[1].Committer.Name)
  102. assert.Equal(t, "user2", payloadCommits[1].Committer.UserName)
  103. assert.Equal(t, "User Two", payloadCommits[1].Author.Name)
  104. assert.Equal(t, "user2", payloadCommits[1].Author.UserName)
  105. }
  106. func TestPushCommits_AvatarLink(t *testing.T) {
  107. pushCommits := NewPushCommits()
  108. pushCommits.Commits = []*PushCommit{
  109. {
  110. Sha1: "abcdef1",
  111. CommitterEmail: "user2@example.com",
  112. CommitterName: "User Two",
  113. AuthorEmail: "user4@example.com",
  114. AuthorName: "User Four",
  115. Message: "message1",
  116. },
  117. {
  118. Sha1: "abcdef2",
  119. CommitterEmail: "user2@example.com",
  120. CommitterName: "User Two",
  121. AuthorEmail: "user2@example.com",
  122. AuthorName: "User Two",
  123. Message: "message2",
  124. },
  125. }
  126. pushCommits.Len = len(pushCommits.Commits)
  127. assert.Equal(t,
  128. "https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f",
  129. pushCommits.AvatarLink("user2@example.com"))
  130. assert.Equal(t,
  131. "https://secure.gravatar.com/avatar/19ade630b94e1e0535b3df7387434154",
  132. pushCommits.AvatarLink("nonexistent@example.com"))
  133. }
  134. func TestUpdateIssuesCommit(t *testing.T) {
  135. assert.NoError(t, PrepareTestDatabase())
  136. pushCommits := []*PushCommit{
  137. {
  138. Sha1: "abcdef1",
  139. CommitterEmail: "user2@example.com",
  140. CommitterName: "User Two",
  141. AuthorEmail: "user4@example.com",
  142. AuthorName: "User Four",
  143. Message: "start working on #1",
  144. },
  145. {
  146. Sha1: "abcdef2",
  147. CommitterEmail: "user2@example.com",
  148. CommitterName: "User Two",
  149. AuthorEmail: "user2@example.com",
  150. AuthorName: "User Two",
  151. Message: "a plain message",
  152. },
  153. {
  154. Sha1: "abcdef2",
  155. CommitterEmail: "user2@example.com",
  156. CommitterName: "User Two",
  157. AuthorEmail: "user2@example.com",
  158. AuthorName: "User Two",
  159. Message: "close #2",
  160. },
  161. }
  162. user := &User{ID: 2}
  163. AssertExistsAndLoadBean(t, user)
  164. repo := &Repository{ID: 1}
  165. AssertExistsAndLoadBean(t, repo)
  166. repo.Owner = user
  167. commentBean := &Comment{
  168. Type: CommentTypeCommitRef,
  169. CommitSHA: "abcdef1",
  170. PosterID: user.ID,
  171. IssueID: 1,
  172. }
  173. issueBean := &Issue{RepoID: repo.ID, Index: 2}
  174. AssertNotExistsBean(t, commentBean)
  175. AssertNotExistsBean(t, &Issue{RepoID: repo.ID, Index: 2}, "is_closed=1")
  176. assert.NoError(t, UpdateIssuesCommit(user, repo, pushCommits))
  177. AssertExistsAndLoadBean(t, commentBean)
  178. AssertExistsAndLoadBean(t, issueBean, "is_closed=1")
  179. }
  180. func TestCommitRepoAction(t *testing.T) {
  181. assert.NoError(t, PrepareTestDatabase())
  182. user := &User{ID: 2}
  183. AssertExistsAndLoadBean(t, user)
  184. repo := &Repository{ID: 2, OwnerID: user.ID}
  185. AssertExistsAndLoadBean(t, repo)
  186. repo.Owner = user
  187. pushCommits := NewPushCommits()
  188. pushCommits.Commits = []*PushCommit{
  189. {
  190. Sha1: "abcdef1",
  191. CommitterEmail: "user2@example.com",
  192. CommitterName: "User Two",
  193. AuthorEmail: "user4@example.com",
  194. AuthorName: "User Four",
  195. Message: "message1",
  196. },
  197. {
  198. Sha1: "abcdef2",
  199. CommitterEmail: "user2@example.com",
  200. CommitterName: "User Two",
  201. AuthorEmail: "user2@example.com",
  202. AuthorName: "User Two",
  203. Message: "message2",
  204. },
  205. }
  206. pushCommits.Len = len(pushCommits.Commits)
  207. actionBean := &Action{
  208. OpType: ActionCommitRepo,
  209. ActUserID: user.ID,
  210. ActUserName: user.Name,
  211. RepoID: repo.ID,
  212. RepoName: repo.Name,
  213. RefName: "refName",
  214. IsPrivate: repo.IsPrivate,
  215. }
  216. AssertNotExistsBean(t, actionBean)
  217. assert.NoError(t, CommitRepoAction(CommitRepoActionOptions{
  218. PusherName: user.Name,
  219. RepoOwnerID: user.ID,
  220. RepoName: repo.Name,
  221. RefFullName: "refName",
  222. OldCommitID: "oldCommitID",
  223. NewCommitID: "newCommitID",
  224. Commits: pushCommits,
  225. }))
  226. AssertExistsAndLoadBean(t, actionBean)
  227. }
  228. func TestTransferRepoAction(t *testing.T) {
  229. assert.NoError(t, PrepareTestDatabase())
  230. user2 := &User{ID: 2}
  231. AssertExistsAndLoadBean(t, user2)
  232. user4 := &User{ID: 4}
  233. AssertExistsAndLoadBean(t, user4)
  234. repo := &Repository{ID: 1, OwnerID: user2.ID}
  235. AssertExistsAndLoadBean(t, repo)
  236. repo.OwnerID = user4.ID
  237. repo.Owner = user4
  238. actionBean := &Action{
  239. OpType: ActionTransferRepo,
  240. ActUserID: user2.ID,
  241. ActUserName: user2.Name,
  242. RepoID: repo.ID,
  243. RepoName: repo.Name,
  244. RepoUserName: repo.Owner.Name,
  245. IsPrivate: repo.IsPrivate,
  246. }
  247. AssertNotExistsBean(t, actionBean)
  248. assert.NoError(t, TransferRepoAction(user2, user2, repo))
  249. AssertExistsAndLoadBean(t, actionBean)
  250. }
  251. func TestMergePullRequestAction(t *testing.T) {
  252. assert.NoError(t, PrepareTestDatabase())
  253. user := &User{ID: 2}
  254. AssertExistsAndLoadBean(t, user)
  255. repo := &Repository{ID: 1, OwnerID: user.ID}
  256. AssertExistsAndLoadBean(t, repo)
  257. repo.Owner = user
  258. issue := &Issue{ID: 3, RepoID: repo.ID}
  259. AssertExistsAndLoadBean(t, issue)
  260. actionBean := &Action{
  261. OpType: ActionMergePullRequest,
  262. ActUserID: user.ID,
  263. ActUserName: user.Name,
  264. RepoID: repo.ID,
  265. RepoName: repo.Name,
  266. RepoUserName: repo.Owner.Name,
  267. IsPrivate: repo.IsPrivate,
  268. }
  269. AssertNotExistsBean(t, actionBean)
  270. assert.NoError(t, MergePullRequestAction(user, repo, issue))
  271. AssertExistsAndLoadBean(t, actionBean)
  272. }
  273. func TestGetFeeds(t *testing.T) {
  274. // test with an individual user
  275. assert.NoError(t, PrepareTestDatabase())
  276. user := &User{ID: 2}
  277. AssertExistsAndLoadBean(t, user)
  278. actions, err := GetFeeds(user, user.ID, 0, false)
  279. assert.NoError(t, err)
  280. assert.Len(t, actions, 1)
  281. assert.Equal(t, int64(1), actions[0].ID)
  282. assert.Equal(t, user.ID, actions[0].UserID)
  283. actions, err = GetFeeds(user, user.ID, 0, true)
  284. assert.NoError(t, err)
  285. assert.Len(t, actions, 0)
  286. }
  287. func TestGetFeeds2(t *testing.T) {
  288. // test with an organization user
  289. assert.NoError(t, PrepareTestDatabase())
  290. user := &User{ID: 3}
  291. AssertExistsAndLoadBean(t, user)
  292. actions, err := GetFeeds(user, user.ID, 0, false)
  293. assert.NoError(t, err)
  294. assert.Len(t, actions, 1)
  295. assert.Equal(t, int64(2), actions[0].ID)
  296. assert.Equal(t, user.ID, actions[0].UserID)
  297. actions, err = GetFeeds(user, user.ID, 0, true)
  298. assert.NoError(t, err)
  299. assert.Len(t, actions, 1)
  300. assert.Equal(t, int64(2), actions[0].ID)
  301. assert.Equal(t, user.ID, actions[0].UserID)
  302. }