package repository import ( "testing" "github.com/stretchr/testify/require" ) func TestIsMigrationChecksumCompatible(t *testing.T) { t.Run("054历史checksum可兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "054_drop_legacy_cache_columns.sql", "182c193f3359946cf094090cd9e57d5c3fd9abaffbc1e8fc378646b8a6fa12b4", "82de761156e03876653e7a6a4eee883cd927847036f779b0b9f34c42a8af7a7d", ) require.True(t, ok) }) t.Run("054在未知文件checksum下不兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "054_drop_legacy_cache_columns.sql", "182c193f3359946cf094090cd9e57d5c3fd9abaffbc1e8fc378646b8a6fa12b4", "0000000000000000000000000000000000000000000000000000000000000000", ) require.False(t, ok) }) t.Run("061历史checksum可兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "061_add_usage_log_request_type.sql", "08a248652cbab7cfde147fc6ef8cda464f2477674e20b718312faa252e0481c0", "66207e7aa5dd0429c2e2c0fabdaf79783ff157fa0af2e81adff2ee03790ec65c", ) require.True(t, ok) }) t.Run("061第二个历史checksum可兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "061_add_usage_log_request_type.sql", "222b4a09c797c22e5922b6b172327c824f5463aaa8760e4f621bc5c22e2be0f3", "66207e7aa5dd0429c2e2c0fabdaf79783ff157fa0af2e81adff2ee03790ec65c", ) require.True(t, ok) }) t.Run("非白名单迁移不兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "001_init.sql", "182c193f3359946cf094090cd9e57d5c3fd9abaffbc1e8fc378646b8a6fa12b4", "82de761156e03876653e7a6a4eee883cd927847036f779b0b9f34c42a8af7a7d", ) require.False(t, ok) }) t.Run("109历史checksum可兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "109_auth_identity_compat_backfill.sql", "2b380305e73ff0c13aa8c811e45897f2b36ca4a438f7b3e8f98e19ecb6bae0b3", "551e498aa5616d2d91096e9d72cf9fb36e418ee22eacc557f8811cadbc9e20ee", ) require.True(t, ok) }) t.Run("109回滚到历史文件后仍兼容已应用的新checksum", func(t *testing.T) { ok := isMigrationChecksumCompatible( "109_auth_identity_compat_backfill.sql", "551e498aa5616d2d91096e9d72cf9fb36e418ee22eacc557f8811cadbc9e20ee", "2b380305e73ff0c13aa8c811e45897f2b36ca4a438f7b3e8f98e19ecb6bae0b3", ) require.True(t, ok) }) t.Run("119历史checksum可兼容占位文件", func(t *testing.T) { ok := isMigrationChecksumCompatible( "119_enforce_payment_orders_out_trade_no_unique.sql", "ebd2c67cce0116393fb4f1b5d5116a67c6aceb73820dfb5133d1ff6f36d72d34", "0bbe809ae48a9d811dabda1ba1c74955bd71c4a9cc610f9128816818dfa6c11e", ) require.True(t, ok) }) t.Run("119未知checksum不兼容", func(t *testing.T) { ok := isMigrationChecksumCompatible( "119_enforce_payment_orders_out_trade_no_unique.sql", "ebd2c67cce0116393fb4f1b5d5116a67c6aceb73820dfb5133d1ff6f36d72d34", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", ) require.False(t, ok) }) }