code.gitea.io/gitea@v1.22.3/tests/integration/api_issue_stopwatch_test.go (about)

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