2019-12-08 01:04:19 +03: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 (
"fmt"
"net/http"
"testing"
"time"
"code.gitea.io/gitea/models"
2020-10-17 07:23:08 +03:00
"code.gitea.io/gitea/modules/convert"
2019-12-08 01:04:19 +03:00
api "code.gitea.io/gitea/modules/structs"
"github.com/stretchr/testify/assert"
)
func TestAPIIssuesReactions ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
issue := models . AssertExistsAndLoadBean ( t , & models . Issue { ID : 1 } ) . ( * models . Issue )
_ = issue . LoadRepo ( )
owner := models . AssertExistsAndLoadBean ( t , & models . User { ID : issue . Repo . OwnerID } ) . ( * models . User )
session := loginUser ( t , owner . Name )
token := getTokenForLoggedInUser ( t , session )
user2 := models . AssertExistsAndLoadBean ( t , & models . User { ID : 2 } ) . ( * models . User )
urlStr := fmt . Sprintf ( "/api/v1/repos/%s/%s/issues/%d/reactions?token=%s" ,
owner . Name , issue . Repo . Name , issue . Index , token )
//Try to add not allowed reaction
req := NewRequestWithJSON ( t , "POST" , urlStr , & api . EditReactionOption {
Reaction : "wrong" ,
} )
resp := session . MakeRequest ( t , req , http . StatusForbidden )
//Delete not allowed reaction
req = NewRequestWithJSON ( t , "DELETE" , urlStr , & api . EditReactionOption {
Reaction : "zzz" ,
} )
resp = session . MakeRequest ( t , req , http . StatusOK )
//Add allowed reaction
req = NewRequestWithJSON ( t , "POST" , urlStr , & api . EditReactionOption {
Reaction : "rocket" ,
} )
resp = session . MakeRequest ( t , req , http . StatusCreated )
2019-12-31 11:21:21 +03:00
var apiNewReaction api . Reaction
2019-12-08 01:04:19 +03:00
DecodeJSON ( t , resp , & apiNewReaction )
//Add existing reaction
resp = session . MakeRequest ( t , req , http . StatusForbidden )
//Get end result of reaction list of issue #1
req = NewRequestf ( t , "GET" , urlStr )
resp = session . MakeRequest ( t , req , http . StatusOK )
2019-12-31 11:21:21 +03:00
var apiReactions [ ] * api . Reaction
2019-12-08 01:04:19 +03:00
DecodeJSON ( t , resp , & apiReactions )
2019-12-31 11:21:21 +03:00
expectResponse := make ( map [ int ] api . Reaction )
expectResponse [ 0 ] = api . Reaction {
2020-10-17 07:23:08 +03:00
User : convert . ToUser ( user2 , true , true ) ,
2019-12-08 01:04:19 +03:00
Reaction : "eyes" ,
Created : time . Unix ( 1573248003 , 0 ) ,
}
2019-12-18 16:07:36 +03:00
expectResponse [ 1 ] = apiNewReaction
assert . Len ( t , apiReactions , 2 )
2019-12-08 01:04:19 +03:00
for i , r := range apiReactions {
assert . Equal ( t , expectResponse [ i ] . Reaction , r . Reaction )
assert . Equal ( t , expectResponse [ i ] . Created . Unix ( ) , r . Created . Unix ( ) )
assert . Equal ( t , expectResponse [ i ] . User . ID , r . User . ID )
}
}
func TestAPICommentReactions ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
comment := models . AssertExistsAndLoadBean ( t , & models . Comment { ID : 2 } ) . ( * models . Comment )
_ = comment . LoadIssue ( )
issue := comment . Issue
_ = issue . LoadRepo ( )
owner := models . AssertExistsAndLoadBean ( t , & models . User { ID : issue . Repo . OwnerID } ) . ( * models . User )
session := loginUser ( t , owner . Name )
token := getTokenForLoggedInUser ( t , session )
user1 := models . AssertExistsAndLoadBean ( t , & models . User { ID : 1 } ) . ( * models . User )
user2 := models . AssertExistsAndLoadBean ( t , & models . User { ID : 2 } ) . ( * models . User )
urlStr := fmt . Sprintf ( "/api/v1/repos/%s/%s/issues/comments/%d/reactions?token=%s" ,
owner . Name , issue . Repo . Name , comment . ID , token )
//Try to add not allowed reaction
req := NewRequestWithJSON ( t , "POST" , urlStr , & api . EditReactionOption {
Reaction : "wrong" ,
} )
resp := session . MakeRequest ( t , req , http . StatusForbidden )
//Delete none existing reaction
req = NewRequestWithJSON ( t , "DELETE" , urlStr , & api . EditReactionOption {
Reaction : "eyes" ,
} )
resp = session . MakeRequest ( t , req , http . StatusOK )
//Add allowed reaction
req = NewRequestWithJSON ( t , "POST" , urlStr , & api . EditReactionOption {
Reaction : "+1" ,
} )
resp = session . MakeRequest ( t , req , http . StatusCreated )
2019-12-31 11:21:21 +03:00
var apiNewReaction api . Reaction
2019-12-08 01:04:19 +03:00
DecodeJSON ( t , resp , & apiNewReaction )
//Add existing reaction
resp = session . MakeRequest ( t , req , http . StatusForbidden )
//Get end result of reaction list of issue #1
req = NewRequestf ( t , "GET" , urlStr )
resp = session . MakeRequest ( t , req , http . StatusOK )
2019-12-31 11:21:21 +03:00
var apiReactions [ ] * api . Reaction
2019-12-08 01:04:19 +03:00
DecodeJSON ( t , resp , & apiReactions )
2019-12-31 11:21:21 +03:00
expectResponse := make ( map [ int ] api . Reaction )
expectResponse [ 0 ] = api . Reaction {
2020-10-17 07:23:08 +03:00
User : convert . ToUser ( user2 , true , true ) ,
2019-12-08 01:04:19 +03:00
Reaction : "laugh" ,
Created : time . Unix ( 1573248004 , 0 ) ,
}
2019-12-31 11:21:21 +03:00
expectResponse [ 1 ] = api . Reaction {
2020-10-17 07:23:08 +03:00
User : convert . ToUser ( user1 , true , true ) ,
2019-12-08 01:04:19 +03:00
Reaction : "laugh" ,
Created : time . Unix ( 1573248005 , 0 ) ,
}
expectResponse [ 2 ] = apiNewReaction
assert . Len ( t , apiReactions , 3 )
for i , r := range apiReactions {
assert . Equal ( t , expectResponse [ i ] . Reaction , r . Reaction )
assert . Equal ( t , expectResponse [ i ] . Created . Unix ( ) , r . Created . Unix ( ) )
assert . Equal ( t , expectResponse [ i ] . User . ID , r . User . ID )
}
}