@@ -18,8 +18,10 @@ import (
18
18
"code.gitea.io/gitea/models/unittest"
19
19
user_model "code.gitea.io/gitea/models/user"
20
20
"code.gitea.io/gitea/models/webhook"
21
+ "code.gitea.io/gitea/modules/git"
21
22
"code.gitea.io/gitea/modules/gitrepo"
22
23
"code.gitea.io/gitea/modules/json"
24
+ "code.gitea.io/gitea/modules/setting"
23
25
api "code.gitea.io/gitea/modules/structs"
24
26
webhook_module "code.gitea.io/gitea/modules/webhook"
25
27
"code.gitea.io/gitea/tests"
@@ -357,22 +359,40 @@ func Test_WebhookPush(t *testing.T) {
357
359
}, http .StatusOK )
358
360
defer provider .Close ()
359
361
362
+ repo1 := unittest .AssertExistsAndLoadBean (t , & repo.Repository {ID : 1 })
363
+
360
364
onGiteaRun (t , func (t * testing.T , giteaURL * url.URL ) {
361
365
// 1. create a new webhook with special webhook for repo1
362
366
session := loginUser (t , "user2" )
363
367
364
- testAPICreateWebhookForRepo (t , session , "user2" , "repo1" , provider .URL (), "push" )
368
+ testAPICreateWebhookForRepo (t , session , repo1 .OwnerName , repo1 .Name , provider .URL (), "push" )
369
+
370
+ gitRepo , err := gitrepo .OpenRepository (t .Context (), repo1 )
371
+ assert .NoError (t , err )
372
+ defer gitRepo .Close ()
373
+
374
+ beforeCommitID , err := gitRepo .GetRefCommitID ("master" )
375
+ assert .NoError (t , err )
365
376
366
377
// 2. trigger the webhook
367
- testCreateFile (t , session , "user2" , "repo1" , "master" , "test_webhook_push.md" , "# a test file for webhook push" )
378
+ testCreateFile (t , session , "user2" , "repo1" , "master" , "test_webhook_push.md" , "# a test file for webhook push" , "" )
379
+
380
+ afterCommitID , err := gitRepo .GetRefCommitID ("master" )
381
+ assert .NoError (t , err )
368
382
369
383
// 3. validate the webhook is triggered
370
384
assert .Equal (t , "push" , triggeredEvent )
371
385
assert .Len (t , payloads , 1 )
386
+ assert .Equal (t , "refs/heads/master" , payloads [0 ].Ref )
387
+ assert .Equal (t , beforeCommitID , payloads [0 ].Before )
388
+ assert .Equal (t , afterCommitID , payloads [0 ].After )
372
389
assert .Equal (t , "repo1" , payloads [0 ].Repo .Name )
373
390
assert .Equal (t , "user2/repo1" , payloads [0 ].Repo .FullName )
374
391
assert .Len (t , payloads [0 ].Commits , 1 )
392
+ assert .Equal (t , afterCommitID , payloads [0 ].Commits [0 ].ID )
393
+ assert .Equal (t , setting .AppURL + "user2/repo1/compare/" + beforeCommitID + "..." + afterCommitID , payloads [0 ].CompareURL )
375
394
assert .Equal (t , []string {"test_webhook_push.md" }, payloads [0 ].Commits [0 ].Added )
395
+ assert .Empty (t , payloads [0 ].Commits [0 ].Removed )
376
396
})
377
397
}
378
398
@@ -389,29 +409,52 @@ func Test_WebhookPushDevBranch(t *testing.T) {
389
409
}, http .StatusOK )
390
410
defer provider .Close ()
391
411
412
+ repo1 := unittest .AssertExistsAndLoadBean (t , & repo.Repository {ID : 1 })
413
+
392
414
onGiteaRun (t , func (t * testing.T , giteaURL * url.URL ) {
393
415
// 1. create a new webhook with special webhook for repo1
394
416
session := loginUser (t , "user2" )
395
417
418
+ gitRepo , err := gitrepo .OpenRepository (t .Context (), repo1 )
419
+ assert .NoError (t , err )
420
+ defer gitRepo .Close ()
421
+
396
422
// only for dev branch
397
- testAPICreateWebhookForRepo (t , session , "user2" , "repo1" , provider .URL (), "push" , "develop " )
423
+ testAPICreateWebhookForRepo (t , session , "user2" , "repo1" , provider .URL (), "push" , "new_branch " )
398
424
399
425
// 2. this should not trigger the webhook
400
- testCreateFile (t , session , "user2" , "repo1" , "master" , "test_webhook_push.md" , "# a test file for webhook push" )
426
+ testCreateFile (t , session , "user2" , "repo1" , "master" , "test_webhook_push.md" , "# a test file for webhook push" , "" )
401
427
assert .Empty (t , triggeredEvent )
402
428
assert .Empty (t , payloads )
403
429
430
+ _ , err = gitRepo .GetRefCommitID ("new_branch" )
431
+ assert .Error (t , err )
432
+
433
+ fromBranchCommitID , err := gitRepo .GetRefCommitID ("develop" )
434
+ assert .NoError (t , err )
435
+
404
436
// 3. trigger the webhook
405
- testCreateFile (t , session , "user2" , "repo1" , "develop" , "test_webhook_push.md" , "# a test file for webhook push" )
437
+ testCreateFile (t , session , "user2" , "repo1" , "develop" , "test_webhook_push.md" , "# a test file for webhook push" , "new_branch" )
438
+
439
+ afterCommitID , err := gitRepo .GetRefCommitID ("new_branch" )
440
+ assert .NoError (t , err )
441
+
442
+ beforeCommitID := git .Sha1ObjectFormat .EmptyObjectID ().String ()
406
443
407
444
// 4. validate the webhook is triggered
408
445
assert .Equal (t , "push" , triggeredEvent )
409
446
assert .Len (t , payloads , 1 )
447
+ assert .Equal (t , "refs/heads/new_branch" , payloads [0 ].Ref )
448
+ assert .Equal (t , beforeCommitID , payloads [0 ].Before )
449
+ assert .Equal (t , afterCommitID , payloads [0 ].After )
410
450
assert .Equal (t , "repo1" , payloads [0 ].Repo .Name )
411
- assert .Equal (t , "develop " , payloads [0 ].Branch ())
451
+ assert .Equal (t , "new_branch " , payloads [0 ].Branch ())
412
452
assert .Equal (t , "user2/repo1" , payloads [0 ].Repo .FullName )
413
453
assert .Len (t , payloads [0 ].Commits , 1 )
454
+ assert .Equal (t , afterCommitID , payloads [0 ].Commits [0 ].ID )
455
+ assert .Equal (t , setting .AppURL + "user2/repo1/compare/" + fromBranchCommitID + "..." + afterCommitID , payloads [0 ].CompareURL )
414
456
assert .Equal (t , []string {"test_webhook_push.md" }, payloads [0 ].Commits [0 ].Added )
457
+ assert .Empty (t , payloads [0 ].Commits [0 ].Removed )
415
458
})
416
459
}
417
460
@@ -767,7 +810,7 @@ func Test_WebhookStatus_NoWrongTrigger(t *testing.T) {
767
810
testCreateWebhookForRepo (t , session , "gitea" , "user2" , "repo1" , provider .URL (), "push_only" )
768
811
769
812
// 2. trigger the webhook with a push action
770
- testCreateFile (t , session , "user2" , "repo1" , "master" , "test_webhook_push.md" , "# a test file for webhook push" )
813
+ testCreateFile (t , session , "user2" , "repo1" , "master" , "test_webhook_push.md" , "# a test file for webhook push" , "" )
771
814
772
815
// 3. validate the webhook is triggered with right event
773
816
assert .Equal (t , "push" , trigger )
0 commit comments