2019-12-12 05:23:05 +01:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package integrations
import (
"net/http"
"testing"
"code.gitea.io/gitea/models"
2021-12-10 09:27:50 +08:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-16 16:53:21 +08:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 17:49:20 +08:00
user_model "code.gitea.io/gitea/models/user"
2019-12-12 05:23:05 +01:00
api "code.gitea.io/gitea/modules/structs"
"github.com/stretchr/testify/assert"
)
func TestAPIListStopWatches ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
2021-12-10 09:27:50 +08:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } ) . ( * repo_model . Repository )
2021-11-24 17:49:20 +08:00
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : repo . OwnerID } ) . ( * user_model . User )
2019-12-12 05:23:05 +01:00
session := loginUser ( t , owner . Name )
token := getTokenForLoggedInUser ( t , session )
req := NewRequestf ( t , "GET" , "/api/v1/user/stopwatches?token=%s" , token )
resp := session . MakeRequest ( t , req , http . StatusOK )
var apiWatches [ ] * api . StopWatch
DecodeJSON ( t , resp , & apiWatches )
2021-11-16 16:53:21 +08:00
stopwatch := unittest . AssertExistsAndLoadBean ( t , & models . Stopwatch { UserID : owner . ID } ) . ( * models . Stopwatch )
issue := unittest . AssertExistsAndLoadBean ( t , & models . Issue { ID : stopwatch . IssueID } ) . ( * models . Issue )
2020-09-18 14:09:26 +02:00
if assert . Len ( t , apiWatches , 1 ) {
assert . EqualValues ( t , stopwatch . CreatedUnix . AsTime ( ) . Unix ( ) , apiWatches [ 0 ] . Created . Unix ( ) )
2021-01-21 14:51:52 +00:00
assert . EqualValues ( t , issue . Index , apiWatches [ 0 ] . IssueIndex )
assert . EqualValues ( t , issue . Title , apiWatches [ 0 ] . IssueTitle )
assert . EqualValues ( t , repo . Name , apiWatches [ 0 ] . RepoName )
assert . EqualValues ( t , repo . OwnerName , apiWatches [ 0 ] . RepoOwnerName )
assert . Greater ( t , int64 ( apiWatches [ 0 ] . Seconds ) , int64 ( 0 ) )
2020-09-18 14:09:26 +02:00
}
2019-12-12 05:23:05 +01:00
}
func TestAPIStopStopWatches ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
2021-11-16 16:53:21 +08:00
issue := unittest . AssertExistsAndLoadBean ( t , & models . Issue { ID : 2 } ) . ( * models . Issue )
2019-12-12 05:23:05 +01:00
_ = issue . LoadRepo ( )
2021-11-24 17:49:20 +08:00
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : issue . Repo . OwnerID } ) . ( * user_model . User )
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } ) . ( * user_model . User )
2019-12-12 05:23:05 +01:00
session := loginUser ( t , user . Name )
token := getTokenForLoggedInUser ( t , session )
req := NewRequestf ( t , "POST" , "/api/v1/repos/%s/%s/issues/%d/stopwatch/stop?token=%s" , owner . Name , issue . Repo . Name , issue . Index , token )
session . MakeRequest ( t , req , http . StatusCreated )
session . MakeRequest ( t , req , http . StatusConflict )
}
func TestAPICancelStopWatches ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
2021-11-16 16:53:21 +08:00
issue := unittest . AssertExistsAndLoadBean ( t , & models . Issue { ID : 1 } ) . ( * models . Issue )
2019-12-12 05:23:05 +01:00
_ = issue . LoadRepo ( )
2021-11-24 17:49:20 +08:00
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : issue . Repo . OwnerID } ) . ( * user_model . User )
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 1 } ) . ( * user_model . User )
2019-12-12 05:23:05 +01:00
session := loginUser ( t , user . Name )
token := getTokenForLoggedInUser ( t , session )
req := NewRequestf ( t , "DELETE" , "/api/v1/repos/%s/%s/issues/%d/stopwatch/delete?token=%s" , owner . Name , issue . Repo . Name , issue . Index , token )
session . MakeRequest ( t , req , http . StatusNoContent )
session . MakeRequest ( t , req , http . StatusConflict )
}
func TestAPIStartStopWatches ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
2021-11-16 16:53:21 +08:00
issue := unittest . AssertExistsAndLoadBean ( t , & models . Issue { ID : 3 } ) . ( * models . Issue )
2019-12-12 05:23:05 +01:00
_ = issue . LoadRepo ( )
2021-11-24 17:49:20 +08:00
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : issue . Repo . OwnerID } ) . ( * user_model . User )
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } ) . ( * user_model . User )
2019-12-12 05:23:05 +01:00
session := loginUser ( t , user . Name )
token := getTokenForLoggedInUser ( t , session )
req := NewRequestf ( t , "POST" , "/api/v1/repos/%s/%s/issues/%d/stopwatch/start?token=%s" , owner . Name , issue . Repo . Name , issue . Index , token )
session . MakeRequest ( t , req , http . StatusCreated )
session . MakeRequest ( t , req , http . StatusConflict )
}