v20_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright 2022 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE and LICENSE.gogs file.
  4. // Copyright 2025 Huan-Gogs Authors. All rights reserved.
  5. // Use of this source code is governed by a MIT-style
  6. // license that can be found in the LICENSE file.
  7. package migrations
  8. import (
  9. "testing"
  10. "github.com/stretchr/testify/assert"
  11. "github.com/stretchr/testify/require"
  12. "github.com/SongZihuan/huan-gogs/internal/dbtest"
  13. )
  14. type accessTokenPreV20 struct {
  15. ID int64
  16. UserID int64 `gorm:"COLUMN:uid;INDEX"`
  17. Name string
  18. Sha1 string `gorm:"TYPE:VARCHAR(40);UNIQUE"`
  19. CreatedUnix int64
  20. UpdatedUnix int64
  21. }
  22. func (*accessTokenPreV20) TableName() string {
  23. return "access_token"
  24. }
  25. type accessTokenV20 struct {
  26. ID int64
  27. UserID int64 `gorm:"column:uid;index"`
  28. Name string
  29. Sha1 string `gorm:"type:VARCHAR(40);unique"`
  30. SHA256 string `gorm:"type:VARCHAR(64);unique;not null"`
  31. CreatedUnix int64
  32. UpdatedUnix int64
  33. }
  34. func (*accessTokenV20) TableName() string {
  35. return "access_token"
  36. }
  37. func TestMigrateAccessTokenToSHA256(t *testing.T) {
  38. if testing.Short() {
  39. t.Skip()
  40. }
  41. t.Parallel()
  42. db := dbtest.NewDB(t, "migrateAccessTokenToSHA256", new(accessTokenPreV20))
  43. err := db.Create(
  44. &accessTokenPreV20{
  45. ID: 1,
  46. UserID: 1,
  47. Name: "test",
  48. Sha1: "73da7bb9d2a475bbc2ab79da7d4e94940cb9f9d5",
  49. CreatedUnix: db.NowFunc().Unix(),
  50. UpdatedUnix: db.NowFunc().Unix(),
  51. },
  52. ).Error
  53. require.NoError(t, err)
  54. err = migrateAccessTokenToSHA256(db)
  55. require.NoError(t, err)
  56. var got accessTokenV20
  57. err = db.Where("id = ?", 1).First(&got).Error
  58. require.NoError(t, err)
  59. assert.Equal(t, "73da7bb9d2a475bbc2ab79da7d4e94940cb9f9d5", got.Sha1)
  60. assert.Equal(t, "ab144c7bd170691bb9bb995f1541c608e33a78b40174f30fc8a1616c0bc3a477", got.SHA256)
  61. // Re-run should be skipped
  62. err = migrateAccessTokenToSHA256(db)
  63. require.Equal(t, errMigrationSkipped, err)
  64. }