0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-06-22 16:29:39 +02:00
gitea/modules/migration/file_format_test.go
2026-06-07 20:09:03 +03:00

54 lines
1.7 KiB
Go

// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package migration
import (
"strings"
"testing"
"gitea.dev/modules/json"
"github.com/santhosh-tekuri/jsonschema/v6"
"github.com/stretchr/testify/assert"
)
func TestMigrationJSON_IssueOK(t *testing.T) {
issues := make([]*Issue, 0, 10)
err := Load("file_format_testdata/issue_a.json", &issues, true)
assert.NoError(t, err)
err = Load("file_format_testdata/issue_a.yml", &issues, true)
assert.NoError(t, err)
}
func TestMigrationJSON_IssueFail(t *testing.T) {
issues := make([]*Issue, 0, 10)
err := Load("file_format_testdata/issue_b.json", &issues, true)
if _, ok := err.(*jsonschema.ValidationError); ok {
errors := strings.Split(err.(*jsonschema.ValidationError).GoString(), "\n")
assert.Contains(t, errors[1], "missing properties")
assert.Contains(t, errors[1], "poster_id")
} else {
t.Fatalf("got: type %T with value %s, want: *jsonschema.ValidationError", err, err)
}
}
func TestMigrationJSON_MilestoneOK(t *testing.T) {
milestones := make([]*Milestone, 0, 10)
err := Load("file_format_testdata/milestones.json", &milestones, true)
assert.NoError(t, err)
}
// TestMigrateOptionsSSHKeyOwnerIDRoundtrip guards against the regression where
// SSHKeyOwnerID was tagged `json:"-"` and silently lost when the task layer
// serialised/deserialised MigrateOptions through the task table, breaking the
// "use a specific owner's managed key" override for org migrations.
func TestMigrateOptionsSSHKeyOwnerIDRoundtrip(t *testing.T) {
data, err := json.Marshal(MigrateOptions{SSHKeyOwnerID: 42})
assert.NoError(t, err)
var got MigrateOptions
assert.NoError(t, json.Unmarshal(data, &got))
assert.Equal(t, int64(42), got.SSHKeyOwnerID)
}