add test for webhook migration
This commit is contained in:
parent
ed6f724a5d
commit
12e317c198
4 changed files with 114 additions and 0 deletions
|
@ -0,0 +1,16 @@
|
||||||
|
- id: 11
|
||||||
|
uuid: uuid11
|
||||||
|
hook_id: 1
|
||||||
|
payload_content: >
|
||||||
|
{"data":"payload"}
|
||||||
|
event_type: create
|
||||||
|
delivered: 1706106005
|
||||||
|
|
||||||
|
- id: 101
|
||||||
|
uuid: uuid101
|
||||||
|
hook_id: 1
|
||||||
|
payload_content: >
|
||||||
|
{"data":"payload"}
|
||||||
|
event_type: create
|
||||||
|
delivered: 1706106006
|
||||||
|
is_delivered: true
|
|
@ -0,0 +1,18 @@
|
||||||
|
- id: 11
|
||||||
|
uuid: uuid11
|
||||||
|
hook_id: 1
|
||||||
|
payload_content: >
|
||||||
|
{"data":"payload"}
|
||||||
|
event_type: create
|
||||||
|
delivered: 1706106005
|
||||||
|
payload_version: 1
|
||||||
|
|
||||||
|
- id: 101
|
||||||
|
uuid: uuid101
|
||||||
|
hook_id: 1
|
||||||
|
payload_content: >
|
||||||
|
{"data":"payload"}
|
||||||
|
event_type: create
|
||||||
|
delivered: 1706106006
|
||||||
|
is_delivered: true
|
||||||
|
payload_version: 1
|
|
@ -4,10 +4,32 @@
|
||||||
package v1_22 //nolint
|
package v1_22 //nolint
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
webhook_module "code.gitea.io/gitea/modules/webhook"
|
||||||
|
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// HookTask represents a hook task.
|
||||||
|
// exact copy of models/webhook/hooktask.go when this migration was created
|
||||||
|
// - xorm:"-" fields deleted
|
||||||
type HookTask struct {
|
type HookTask struct {
|
||||||
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
HookID int64 `xorm:"index"`
|
||||||
|
UUID string `xorm:"unique"`
|
||||||
|
PayloadContent string `xorm:"LONGTEXT"`
|
||||||
|
EventType webhook_module.HookEventType
|
||||||
|
IsDelivered bool
|
||||||
|
Delivered timeutil.TimeStampNano
|
||||||
|
|
||||||
|
// History info.
|
||||||
|
IsSucceed bool
|
||||||
|
RequestContent string `xorm:"LONGTEXT"`
|
||||||
|
ResponseContent string `xorm:"LONGTEXT"`
|
||||||
|
|
||||||
|
// Version number to allow for smooth version upgrades:
|
||||||
|
// - Version 1: PayloadContent contains the JSON as send to the URL
|
||||||
|
// - Version 2: PayloadContent contains the original event
|
||||||
PayloadVersion int `xorm:"DEFAULT 1"`
|
PayloadVersion int `xorm:"DEFAULT 1"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
58
models/migrations/v1_22/v290_test.go
Normal file
58
models/migrations/v1_22/v290_test.go
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// Copyright 2024 The Forgejo Authors c/o Codeberg e.V.. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package v1_22 //nolint
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/migrations/base"
|
||||||
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
webhook_module "code.gitea.io/gitea/modules/webhook"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_AddPayloadVersionToHookTaskTable(t *testing.T) {
|
||||||
|
type HookTaskMigrated HookTask
|
||||||
|
|
||||||
|
// HookTask represents a hook task, as of before the migration
|
||||||
|
type HookTask struct {
|
||||||
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
HookID int64 `xorm:"index"`
|
||||||
|
UUID string `xorm:"unique"`
|
||||||
|
PayloadContent string `xorm:"LONGTEXT"`
|
||||||
|
EventType webhook_module.HookEventType
|
||||||
|
IsDelivered bool
|
||||||
|
Delivered timeutil.TimeStampNano
|
||||||
|
|
||||||
|
// History info.
|
||||||
|
IsSucceed bool
|
||||||
|
RequestContent string `xorm:"LONGTEXT"`
|
||||||
|
ResponseContent string `xorm:"LONGTEXT"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare and load the testing database
|
||||||
|
x, deferable := base.PrepareTestEnv(t, 0, new(HookTask), new(HookTaskMigrated))
|
||||||
|
defer deferable()
|
||||||
|
if x == nil || t.Failed() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.NoError(t, AddPayloadVersionToHookTaskTable(x))
|
||||||
|
|
||||||
|
expected := []HookTaskMigrated{}
|
||||||
|
assert.NoError(t, x.Table("hook_task_migrated").Asc("id").Find(&expected))
|
||||||
|
assert.Len(t, expected, 2)
|
||||||
|
|
||||||
|
got := []HookTaskMigrated{}
|
||||||
|
assert.NoError(t, x.Table("hook_task").Asc("id").Find(&got))
|
||||||
|
|
||||||
|
for i, expected := range expected {
|
||||||
|
expected, got := expected, got[i]
|
||||||
|
t.Run(strconv.FormatInt(expected.ID, 10), func(t *testing.T) {
|
||||||
|
assert.Equal(t, expected.PayloadVersion, got.PayloadVersion)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue