mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-28 14:43:52 +03:00
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
|
||||
|
||||
import (
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
webhook_module "code.gitea.io/gitea/modules/webhook"
|
||||
|
||||
"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 {
|
||||
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"`
|
||||
}
|
||||
|
||||
|
|
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