gitea源码

api_issue_stopwatch_test.go 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "net/http"
  6. "testing"
  7. auth_model "code.gitea.io/gitea/models/auth"
  8. issues_model "code.gitea.io/gitea/models/issues"
  9. repo_model "code.gitea.io/gitea/models/repo"
  10. "code.gitea.io/gitea/models/unittest"
  11. user_model "code.gitea.io/gitea/models/user"
  12. api "code.gitea.io/gitea/modules/structs"
  13. "code.gitea.io/gitea/tests"
  14. "github.com/stretchr/testify/assert"
  15. )
  16. func TestAPIListStopWatches(t *testing.T) {
  17. defer tests.PrepareTestEnv(t)()
  18. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
  19. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
  20. session := loginUser(t, owner.Name)
  21. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadRepository, auth_model.AccessTokenScopeReadUser)
  22. req := NewRequest(t, "GET", "/api/v1/user/stopwatches").
  23. AddTokenAuth(token)
  24. resp := MakeRequest(t, req, http.StatusOK)
  25. var apiWatches []*api.StopWatch
  26. DecodeJSON(t, resp, &apiWatches)
  27. stopwatch := unittest.AssertExistsAndLoadBean(t, &issues_model.Stopwatch{UserID: owner.ID})
  28. issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: stopwatch.IssueID})
  29. if assert.Len(t, apiWatches, 1) {
  30. assert.Equal(t, stopwatch.CreatedUnix.AsTime().Unix(), apiWatches[0].Created.Unix())
  31. assert.Equal(t, issue.Index, apiWatches[0].IssueIndex)
  32. assert.Equal(t, issue.Title, apiWatches[0].IssueTitle)
  33. assert.Equal(t, repo.Name, apiWatches[0].RepoName)
  34. assert.Equal(t, repo.OwnerName, apiWatches[0].RepoOwnerName)
  35. assert.Positive(t, apiWatches[0].Seconds)
  36. }
  37. }
  38. func TestAPIStopStopWatches(t *testing.T) {
  39. defer tests.PrepareTestEnv(t)()
  40. issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
  41. _ = issue.LoadRepo(t.Context())
  42. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: issue.Repo.OwnerID})
  43. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
  44. session := loginUser(t, user.Name)
  45. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteIssue)
  46. req := NewRequestf(t, "POST", "/api/v1/repos/%s/%s/issues/%d/stopwatch/stop", owner.Name, issue.Repo.Name, issue.Index).
  47. AddTokenAuth(token)
  48. MakeRequest(t, req, http.StatusCreated)
  49. MakeRequest(t, req, http.StatusConflict)
  50. }
  51. func TestAPICancelStopWatches(t *testing.T) {
  52. defer tests.PrepareTestEnv(t)()
  53. issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 1})
  54. _ = issue.LoadRepo(t.Context())
  55. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: issue.Repo.OwnerID})
  56. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
  57. session := loginUser(t, user.Name)
  58. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteIssue)
  59. req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/issues/%d/stopwatch/delete", owner.Name, issue.Repo.Name, issue.Index).
  60. AddTokenAuth(token)
  61. MakeRequest(t, req, http.StatusNoContent)
  62. MakeRequest(t, req, http.StatusConflict)
  63. }
  64. func TestAPIStartStopWatches(t *testing.T) {
  65. defer tests.PrepareTestEnv(t)()
  66. issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 3})
  67. _ = issue.LoadRepo(t.Context())
  68. owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: issue.Repo.OwnerID})
  69. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
  70. session := loginUser(t, user.Name)
  71. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteIssue)
  72. req := NewRequestf(t, "POST", "/api/v1/repos/%s/%s/issues/%d/stopwatch/start", owner.Name, issue.Repo.Name, issue.Index).
  73. AddTokenAuth(token)
  74. MakeRequest(t, req, http.StatusCreated)
  75. MakeRequest(t, req, http.StatusConflict)
  76. }