mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-18 11:46:23 -07:00
Use separate function to validate pre2021 migration results
This commit is contained in:
parent
2f39e9d7cc
commit
fcb61cac57
6 changed files with 59 additions and 73 deletions
|
@ -26,9 +26,7 @@ func TestMigrateAnnouncementsToNewDB(t *testing.T) {
|
|||
t.FailNow()
|
||||
}
|
||||
|
||||
var numAnnouncements int
|
||||
assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXannouncements WHERE staff_id > 0", nil, []any{&numAnnouncements}))
|
||||
assert.Equal(t, 2, numAnnouncements, "Expected to have two announcement")
|
||||
validateAnnouncementMigration(t)
|
||||
}
|
||||
|
||||
func TestMigrateAnnouncementsInPlace(t *testing.T) {
|
||||
|
@ -49,7 +47,10 @@ func TestMigrateAnnouncementsInPlace(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigrateAnnouncements()) {
|
||||
t.FailNow()
|
||||
}
|
||||
validateAnnouncementMigration(t)
|
||||
}
|
||||
|
||||
func validateAnnouncementMigration(t *testing.T) {
|
||||
var numAnnouncements int
|
||||
assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXannouncements WHERE staff_id > 0", nil, []any{&numAnnouncements}))
|
||||
assert.Equal(t, 2, numAnnouncements, "Expected to have two announcement")
|
||||
|
|
|
@ -29,27 +29,8 @@ func TestMigrateBansToNewDB(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigrateBans()) {
|
||||
t.FailNow()
|
||||
}
|
||||
bans, err := gcsql.GetIPBans(0, 200, false)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 6, len(bans), "Expected to have 4 valid bans")
|
||||
assert.NotZero(t, bans[0].StaffID, "Expected ban staff ID field to be set")
|
||||
|
||||
var numInvalidBans int
|
||||
assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXip_ban WHERE message = ?", []any{"Full ban on 8.8.0.0/16"}, []any{&numInvalidBans}))
|
||||
assert.Equal(t, 0, numInvalidBans, "Expected the invalid test to not be migrated")
|
||||
|
||||
filters, err := gcsql.GetAllFilters(gcsql.TrueOrFalse)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 1, len(filters))
|
||||
conditions, err := filters[0].Conditions()
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 3, len(conditions), "Expected filter to have three conditions")
|
||||
validateBanMigration(t)
|
||||
}
|
||||
|
||||
func TestMigrateBansInPlace(t *testing.T) {
|
||||
|
@ -74,6 +55,11 @@ func TestMigrateBansInPlace(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigrateBans()) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
validateBanMigration(t)
|
||||
}
|
||||
|
||||
func validateBanMigration(t *testing.T) {
|
||||
bans, err := gcsql.GetIPBans(0, 200, false)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package pre2021
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/gochan-org/gochan/pkg/gcsql"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -26,7 +24,23 @@ func TestMigrateBoardsToNewDB(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigrateBoards()) {
|
||||
t.FailNow()
|
||||
}
|
||||
validateBoardMigration(t)
|
||||
}
|
||||
|
||||
func TestMigrateBoardsInPlace(t *testing.T) {
|
||||
outDir := t.TempDir()
|
||||
migrator := setupMigrationTest(t, outDir, true)
|
||||
if !assert.True(t, migrator.IsMigratingInPlace(), "This test should be migrating in place") {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
if !assert.NoError(t, migrator.MigrateBoards()) {
|
||||
t.FailNow()
|
||||
}
|
||||
validateBoardMigration(t)
|
||||
}
|
||||
|
||||
func validateBoardMigration(t *testing.T) {
|
||||
migratedBoards, err := gcsql.GetAllBoards(false)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
|
@ -51,7 +65,7 @@ func TestMigrateBoardsToNewDB(t *testing.T) {
|
|||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 1, testBoard.ID)
|
||||
assert.Greater(t, testBoard.ID, 0)
|
||||
assert.Equal(t, "Testing Board", testBoard.Title)
|
||||
assert.Equal(t, "Board for testing pre-2021 migration", testBoard.Subtitle)
|
||||
assert.Equal(t, "Board for testing pre-2021 migration description", testBoard.Description)
|
||||
|
@ -67,24 +81,3 @@ func TestMigrateBoardsToNewDB(t *testing.T) {
|
|||
}
|
||||
assert.Equal(t, "Hidden Board", hiddenBoard.Title)
|
||||
}
|
||||
|
||||
func TestMigrateBoardsInPlace(t *testing.T) {
|
||||
outDir := t.TempDir()
|
||||
migrator := setupMigrationTest(t, outDir, true)
|
||||
if !assert.True(t, migrator.IsMigratingInPlace(), "This test should be migrating in place") {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
if !assert.NoError(t, migrator.MigrateBoards()) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*time.Duration(migrator.config.DBTimeoutSeconds))
|
||||
defer cancel()
|
||||
var uri string
|
||||
var sectionID int
|
||||
assert.NoError(t, migrator.db.QueryRowContextSQL(ctx, nil, "SELECT uri FROM DBPREFIXboards WHERE dir = ?", []any{"test"}, []any{&uri}))
|
||||
assert.NoError(t, migrator.db.QueryRowContextSQL(ctx, nil, "SELECT section_id FROM DBPREFIXboards WHERE dir = ?", []any{"test"}, []any{§ionID}))
|
||||
assert.Equal(t, "", uri)
|
||||
assert.Greater(t, sectionID, 0)
|
||||
}
|
||||
|
|
|
@ -27,27 +27,7 @@ func TestMigratePostsToNewDB(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigratePosts()) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
var numMigratedThreads int
|
||||
if !assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXthreads", nil, []any{&numMigratedThreads}), "Failed to get number of migrated threads") {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 2, numMigratedThreads, "Expected to have three migrated threads")
|
||||
|
||||
var locked bool
|
||||
if !assert.NoError(t, gcsql.QueryRowSQL("SELECT locked FROM DBPREFIXthreads WHERE id = 1", nil, []any{&locked})) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.True(t, locked, "Expected thread ID 1 to be locked")
|
||||
|
||||
// make sure deleted posts and threads weren't migrated
|
||||
var numDeleted int
|
||||
assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXposts WHERE message_raw LIKE '%deleted%' OR is_deleted", nil, []any{&numDeleted}))
|
||||
assert.Zero(t, numDeleted, "Expected no deleted threads to be migrated")
|
||||
|
||||
var numUploadPosts int
|
||||
assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXfiles", nil, []any{&numUploadPosts}))
|
||||
assert.Equal(t, 1, numUploadPosts, "Expected to have 1 upload post")
|
||||
validatePostMigration(t)
|
||||
}
|
||||
|
||||
func TestMigratePostsInPlace(t *testing.T) {
|
||||
|
@ -64,6 +44,10 @@ func TestMigratePostsInPlace(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigratePosts()) {
|
||||
t.FailNow()
|
||||
}
|
||||
validatePostMigration(t)
|
||||
}
|
||||
|
||||
func validatePostMigration(t *testing.T) {
|
||||
var numThreads int
|
||||
if !assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXthreads", nil, []any{&numThreads}), "Failed to get number of threads") {
|
||||
t.FailNow()
|
||||
|
@ -77,4 +61,16 @@ func TestMigratePostsInPlace(t *testing.T) {
|
|||
var ip string
|
||||
assert.NoError(t, gcsql.QueryRowSQL("SELECT IP_NTOA FROM DBPREFIXposts WHERE id = 1", nil, []any{&ip}))
|
||||
assert.Equal(t, "192.168.56.1", ip, "Expected to have the correct IP address")
|
||||
|
||||
var numMigratedThreads int
|
||||
if !assert.NoError(t, gcsql.QueryRowSQL("SELECT COUNT(*) FROM DBPREFIXthreads", nil, []any{&numMigratedThreads}), "Failed to get number of migrated threads") {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 2, numMigratedThreads, "Expected to have three migrated threads")
|
||||
|
||||
var locked bool
|
||||
if !assert.NoError(t, gcsql.QueryRowSQL("SELECT locked FROM DBPREFIXthreads WHERE id = 1", nil, []any{&locked})) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.True(t, locked, "Expected thread ID 1 to be locked")
|
||||
}
|
||||
|
|
|
@ -99,6 +99,11 @@ func TestPre2021MigrationToNewDB(t *testing.T) {
|
|||
migrated, err := migrator.MigrateDB()
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, migrated)
|
||||
|
||||
validateBoardMigration(t)
|
||||
validatePostMigration(t)
|
||||
validateBanMigration(t)
|
||||
validateStaffMigration(t)
|
||||
}
|
||||
|
||||
func TestPre2021MigrationInPlace(t *testing.T) {
|
||||
|
@ -110,4 +115,9 @@ func TestPre2021MigrationInPlace(t *testing.T) {
|
|||
migrated, err := migrator.MigrateDB()
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, migrated)
|
||||
|
||||
validateBoardMigration(t)
|
||||
validatePostMigration(t)
|
||||
validateBanMigration(t)
|
||||
validateStaffMigration(t)
|
||||
}
|
||||
|
|
|
@ -21,11 +21,7 @@ func TestMigrateStaffToNewDB(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigrateStaff()) {
|
||||
t.FailNow()
|
||||
}
|
||||
migratedAdmin, err := gcsql.GetStaffByUsername("migratedadmin", true)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
assert.Equal(t, 3, migratedAdmin.Rank)
|
||||
validateStaffMigration(t)
|
||||
}
|
||||
|
||||
func TestMigrateStaffInPlace(t *testing.T) {
|
||||
|
@ -38,6 +34,10 @@ func TestMigrateStaffInPlace(t *testing.T) {
|
|||
if !assert.NoError(t, migrator.MigrateStaff()) {
|
||||
t.FailNow()
|
||||
}
|
||||
validateStaffMigration(t)
|
||||
}
|
||||
|
||||
func validateStaffMigration(t *testing.T) {
|
||||
migratedAdmin, err := gcsql.GetStaffByUsername("migratedadmin", true)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue