aboutsummaryrefslogtreecommitdiffstats
path: root/models/webhook_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/webhook_test.go')
-rw-r--r--models/webhook_test.go114
1 files changed, 114 insertions, 0 deletions
diff --git a/models/webhook_test.go b/models/webhook_test.go
index 20acb4e93c..1baf6ef44b 100644
--- a/models/webhook_test.go
+++ b/models/webhook_test.go
@@ -5,8 +5,10 @@
package models
import (
+ "context"
"encoding/json"
"testing"
+ "time"
api "code.gitea.io/gitea/modules/structs"
@@ -223,3 +225,115 @@ func TestUpdateHookTask(t *testing.T) {
assert.NoError(t, UpdateHookTask(hook))
AssertExistsAndLoadBean(t, hook)
}
+
+func TestCleanupHookTaskTable_PerWebhook_DeletesDelivered(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ hookTask := &HookTask{
+ RepoID: 3,
+ HookID: 3,
+ Typ: GITEA,
+ URL: "http://www.example.com/unit_test",
+ Payloader: &api.PushPayload{},
+ IsDelivered: true,
+ Delivered: time.Now().UnixNano(),
+ }
+ AssertNotExistsBean(t, hookTask)
+ assert.NoError(t, CreateHookTask(hookTask))
+ AssertExistsAndLoadBean(t, hookTask)
+
+ assert.NoError(t, CleanupHookTaskTable(context.Background(), PerWebhook, 168*time.Hour, 0))
+ AssertNotExistsBean(t, hookTask)
+}
+
+func TestCleanupHookTaskTable_PerWebhook_LeavesUndelivered(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ hookTask := &HookTask{
+ RepoID: 2,
+ HookID: 4,
+ Typ: GITEA,
+ URL: "http://www.example.com/unit_test",
+ Payloader: &api.PushPayload{},
+ IsDelivered: false,
+ }
+ AssertNotExistsBean(t, hookTask)
+ assert.NoError(t, CreateHookTask(hookTask))
+ AssertExistsAndLoadBean(t, hookTask)
+
+ assert.NoError(t, CleanupHookTaskTable(context.Background(), PerWebhook, 168*time.Hour, 0))
+ AssertExistsAndLoadBean(t, hookTask)
+}
+
+func TestCleanupHookTaskTable_PerWebhook_LeavesMostRecentTask(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ hookTask := &HookTask{
+ RepoID: 2,
+ HookID: 4,
+ Typ: GITEA,
+ URL: "http://www.example.com/unit_test",
+ Payloader: &api.PushPayload{},
+ IsDelivered: true,
+ Delivered: time.Now().UnixNano(),
+ }
+ AssertNotExistsBean(t, hookTask)
+ assert.NoError(t, CreateHookTask(hookTask))
+ AssertExistsAndLoadBean(t, hookTask)
+
+ assert.NoError(t, CleanupHookTaskTable(context.Background(), PerWebhook, 168*time.Hour, 1))
+ AssertExistsAndLoadBean(t, hookTask)
+}
+
+func TestCleanupHookTaskTable_OlderThan_DeletesDelivered(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ hookTask := &HookTask{
+ RepoID: 3,
+ HookID: 3,
+ Typ: GITEA,
+ URL: "http://www.example.com/unit_test",
+ Payloader: &api.PushPayload{},
+ IsDelivered: true,
+ Delivered: time.Now().AddDate(0, 0, -8).UnixNano(),
+ }
+ AssertNotExistsBean(t, hookTask)
+ assert.NoError(t, CreateHookTask(hookTask))
+ AssertExistsAndLoadBean(t, hookTask)
+
+ assert.NoError(t, CleanupHookTaskTable(context.Background(), OlderThan, 168*time.Hour, 0))
+ AssertNotExistsBean(t, hookTask)
+}
+
+func TestCleanupHookTaskTable_OlderThan_LeavesUndelivered(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ hookTask := &HookTask{
+ RepoID: 2,
+ HookID: 4,
+ Typ: GITEA,
+ URL: "http://www.example.com/unit_test",
+ Payloader: &api.PushPayload{},
+ IsDelivered: false,
+ }
+ AssertNotExistsBean(t, hookTask)
+ assert.NoError(t, CreateHookTask(hookTask))
+ AssertExistsAndLoadBean(t, hookTask)
+
+ assert.NoError(t, CleanupHookTaskTable(context.Background(), OlderThan, 168*time.Hour, 0))
+ AssertExistsAndLoadBean(t, hookTask)
+}
+
+func TestCleanupHookTaskTable_OlderThan_LeavesTaskEarlierThanAgeToDelete(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ hookTask := &HookTask{
+ RepoID: 2,
+ HookID: 4,
+ Typ: GITEA,
+ URL: "http://www.example.com/unit_test",
+ Payloader: &api.PushPayload{},
+ IsDelivered: true,
+ Delivered: time.Now().AddDate(0, 0, -6).UnixNano(),
+ }
+ AssertNotExistsBean(t, hookTask)
+ assert.NoError(t, CreateHookTask(hookTask))
+ AssertExistsAndLoadBean(t, hookTask)
+
+ assert.NoError(t, CleanupHookTaskTable(context.Background(), OlderThan, 168*time.Hour, 0))
+ AssertExistsAndLoadBean(t, hookTask)
+}