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.

action_test.go 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package models
  2. import (
  3. "path"
  4. "testing"
  5. "code.gitea.io/gitea/modules/setting"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestAction_GetRepoPath(t *testing.T) {
  9. assert.NoError(t, PrepareTestDatabase())
  10. repo := AssertExistsAndLoadBean(t, &Repository{}).(*Repository)
  11. owner := AssertExistsAndLoadBean(t, &User{ID: repo.OwnerID}).(*User)
  12. action := &Action{RepoID: repo.ID}
  13. assert.Equal(t, path.Join(owner.Name, repo.Name), action.GetRepoPath())
  14. }
  15. func TestAction_GetRepoLink(t *testing.T) {
  16. assert.NoError(t, PrepareTestDatabase())
  17. repo := AssertExistsAndLoadBean(t, &Repository{}).(*Repository)
  18. owner := AssertExistsAndLoadBean(t, &User{ID: repo.OwnerID}).(*User)
  19. action := &Action{RepoID: repo.ID}
  20. setting.AppSubURL = "/suburl/"
  21. expected := path.Join(setting.AppSubURL, owner.Name, repo.Name)
  22. assert.Equal(t, expected, action.GetRepoLink())
  23. }
  24. func TestPushCommits_ToAPIPayloadCommits(t *testing.T) {
  25. pushCommits := NewPushCommits()
  26. pushCommits.Commits = []*PushCommit{
  27. {
  28. Sha1: "69554a6",
  29. CommitterEmail: "user2@example.com",
  30. CommitterName: "User2",
  31. AuthorEmail: "user2@example.com",
  32. AuthorName: "User2",
  33. Message: "not signed commit",
  34. },
  35. {
  36. Sha1: "27566bd",
  37. CommitterEmail: "user2@example.com",
  38. CommitterName: "User2",
  39. AuthorEmail: "user2@example.com",
  40. AuthorName: "User2",
  41. Message: "good signed commit (with not yet validated email)",
  42. },
  43. {
  44. Sha1: "5099b81",
  45. CommitterEmail: "user2@example.com",
  46. CommitterName: "User2",
  47. AuthorEmail: "user2@example.com",
  48. AuthorName: "User2",
  49. Message: "good signed commit",
  50. },
  51. }
  52. pushCommits.Len = len(pushCommits.Commits)
  53. repo := AssertExistsAndLoadBean(t, &Repository{ID: 16}).(*Repository)
  54. payloadCommits, err := pushCommits.ToAPIPayloadCommits(repo.RepoPath(), "/user2/repo16")
  55. assert.NoError(t, err)
  56. assert.EqualValues(t, 3, len(payloadCommits))
  57. assert.Equal(t, "69554a6", payloadCommits[0].ID)
  58. assert.Equal(t, "not signed commit", payloadCommits[0].Message)
  59. assert.Equal(t, "/user2/repo16/commit/69554a6", payloadCommits[0].URL)
  60. assert.Equal(t, "User2", payloadCommits[0].Committer.Name)
  61. assert.Equal(t, "user2", payloadCommits[0].Committer.UserName)
  62. assert.Equal(t, "User2", payloadCommits[0].Author.Name)
  63. assert.Equal(t, "user2", payloadCommits[0].Author.UserName)
  64. assert.EqualValues(t, []string{}, payloadCommits[0].Added)
  65. assert.EqualValues(t, []string{}, payloadCommits[0].Removed)
  66. assert.EqualValues(t, []string{"readme.md"}, payloadCommits[0].Modified)
  67. assert.Equal(t, "27566bd", payloadCommits[1].ID)
  68. assert.Equal(t, "good signed commit (with not yet validated email)", payloadCommits[1].Message)
  69. assert.Equal(t, "/user2/repo16/commit/27566bd", payloadCommits[1].URL)
  70. assert.Equal(t, "User2", payloadCommits[1].Committer.Name)
  71. assert.Equal(t, "user2", payloadCommits[1].Committer.UserName)
  72. assert.Equal(t, "User2", payloadCommits[1].Author.Name)
  73. assert.Equal(t, "user2", payloadCommits[1].Author.UserName)
  74. assert.EqualValues(t, []string{}, payloadCommits[1].Added)
  75. assert.EqualValues(t, []string{}, payloadCommits[1].Removed)
  76. assert.EqualValues(t, []string{"readme.md"}, payloadCommits[1].Modified)
  77. assert.Equal(t, "5099b81", payloadCommits[2].ID)
  78. assert.Equal(t, "good signed commit", payloadCommits[2].Message)
  79. assert.Equal(t, "/user2/repo16/commit/5099b81", payloadCommits[2].URL)
  80. assert.Equal(t, "User2", payloadCommits[2].Committer.Name)
  81. assert.Equal(t, "user2", payloadCommits[2].Committer.UserName)
  82. assert.Equal(t, "User2", payloadCommits[2].Author.Name)
  83. assert.Equal(t, "user2", payloadCommits[2].Author.UserName)
  84. assert.EqualValues(t, []string{"readme.md"}, payloadCommits[2].Added)
  85. assert.EqualValues(t, []string{}, payloadCommits[2].Removed)
  86. assert.EqualValues(t, []string{}, payloadCommits[2].Modified)
  87. }
  88. func TestPushCommits_AvatarLink(t *testing.T) {
  89. pushCommits := NewPushCommits()
  90. pushCommits.Commits = []*PushCommit{
  91. {
  92. Sha1: "abcdef1",
  93. CommitterEmail: "user2@example.com",
  94. CommitterName: "User Two",
  95. AuthorEmail: "user4@example.com",
  96. AuthorName: "User Four",
  97. Message: "message1",
  98. },
  99. {
  100. Sha1: "abcdef2",
  101. CommitterEmail: "user2@example.com",
  102. CommitterName: "User Two",
  103. AuthorEmail: "user2@example.com",
  104. AuthorName: "User Two",
  105. Message: "message2",
  106. },
  107. }
  108. pushCommits.Len = len(pushCommits.Commits)
  109. assert.Equal(t,
  110. "/suburl/user/avatar/user2/-1",
  111. pushCommits.AvatarLink("user2@example.com"))
  112. assert.Equal(t,
  113. "https://secure.gravatar.com/avatar/19ade630b94e1e0535b3df7387434154?d=identicon",
  114. pushCommits.AvatarLink("nonexistent@example.com"))
  115. }
  116. func TestGetFeeds(t *testing.T) {
  117. // test with an individual user
  118. assert.NoError(t, PrepareTestDatabase())
  119. user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
  120. actions, err := GetFeeds(GetFeedsOptions{
  121. RequestedUser: user,
  122. RequestingUserID: user.ID,
  123. IncludePrivate: true,
  124. OnlyPerformedBy: false,
  125. IncludeDeleted: true,
  126. })
  127. assert.NoError(t, err)
  128. if assert.Len(t, actions, 1) {
  129. assert.EqualValues(t, 1, actions[0].ID)
  130. assert.EqualValues(t, user.ID, actions[0].UserID)
  131. }
  132. actions, err = GetFeeds(GetFeedsOptions{
  133. RequestedUser: user,
  134. RequestingUserID: user.ID,
  135. IncludePrivate: false,
  136. OnlyPerformedBy: false,
  137. })
  138. assert.NoError(t, err)
  139. assert.Len(t, actions, 0)
  140. }
  141. func TestGetFeeds2(t *testing.T) {
  142. // test with an organization user
  143. assert.NoError(t, PrepareTestDatabase())
  144. org := AssertExistsAndLoadBean(t, &User{ID: 3}).(*User)
  145. const userID = 2 // user2 is an owner of the organization
  146. actions, err := GetFeeds(GetFeedsOptions{
  147. RequestedUser: org,
  148. RequestingUserID: userID,
  149. IncludePrivate: true,
  150. OnlyPerformedBy: false,
  151. IncludeDeleted: true,
  152. })
  153. assert.NoError(t, err)
  154. assert.Len(t, actions, 1)
  155. if assert.Len(t, actions, 1) {
  156. assert.EqualValues(t, 2, actions[0].ID)
  157. assert.EqualValues(t, org.ID, actions[0].UserID)
  158. }
  159. actions, err = GetFeeds(GetFeedsOptions{
  160. RequestedUser: org,
  161. RequestingUserID: userID,
  162. IncludePrivate: false,
  163. OnlyPerformedBy: false,
  164. IncludeDeleted: true,
  165. })
  166. assert.NoError(t, err)
  167. assert.Len(t, actions, 0)
  168. }