github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/pkg/serializer/user_test.go (about) 1 package serializer 2 3 import ( 4 "database/sql" 5 "testing" 6 7 "github.com/DATA-DOG/go-sqlmock" 8 model "github.com/cloudreve/Cloudreve/v3/models" 9 "github.com/cloudreve/Cloudreve/v3/pkg/cache" 10 "github.com/duo-labs/webauthn/webauthn" 11 "github.com/jinzhu/gorm" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 var mock sqlmock.Sqlmock 16 17 // TestMain 初始化数据库Mock 18 func TestMain(m *testing.M) { 19 var db *sql.DB 20 var err error 21 db, mock, err = sqlmock.New() 22 if err != nil { 23 panic("An error was not expected when opening a stub database connection") 24 } 25 model.DB, _ = gorm.Open("mysql", db) 26 defer db.Close() 27 m.Run() 28 } 29 30 func TestBuildUser(t *testing.T) { 31 asserts := assert.New(t) 32 user := model.User{} 33 mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"})) 34 res := BuildUser(user) 35 asserts.NoError(mock.ExpectationsWereMet()) 36 asserts.NotNil(res) 37 38 } 39 40 func TestBuildUserResponse(t *testing.T) { 41 asserts := assert.New(t) 42 user := model.User{} 43 res := BuildUserResponse(user) 44 asserts.NotNil(res) 45 } 46 47 func TestBuildUserStorageResponse(t *testing.T) { 48 asserts := assert.New(t) 49 cache.Set("pack_size_0", uint64(0), 0) 50 51 { 52 user := model.User{ 53 Storage: 0, 54 Group: model.Group{MaxStorage: 10}, 55 } 56 res := BuildUserStorageResponse(user) 57 asserts.Equal(uint64(0), res.Data.(storage).Used) 58 asserts.Equal(uint64(10), res.Data.(storage).Total) 59 asserts.Equal(uint64(10), res.Data.(storage).Free) 60 } 61 { 62 user := model.User{ 63 Storage: 6, 64 Group: model.Group{MaxStorage: 10}, 65 } 66 res := BuildUserStorageResponse(user) 67 asserts.Equal(uint64(6), res.Data.(storage).Used) 68 asserts.Equal(uint64(10), res.Data.(storage).Total) 69 asserts.Equal(uint64(4), res.Data.(storage).Free) 70 } 71 { 72 user := model.User{ 73 Storage: 20, 74 Group: model.Group{MaxStorage: 10}, 75 } 76 res := BuildUserStorageResponse(user) 77 asserts.Equal(uint64(20), res.Data.(storage).Used) 78 asserts.Equal(uint64(10), res.Data.(storage).Total) 79 asserts.Equal(uint64(0), res.Data.(storage).Free) 80 } 81 { 82 user := model.User{ 83 Storage: 6, 84 Group: model.Group{MaxStorage: 10}, 85 } 86 res := BuildUserStorageResponse(user) 87 asserts.Equal(uint64(6), res.Data.(storage).Used) 88 asserts.Equal(uint64(10), res.Data.(storage).Total) 89 asserts.Equal(uint64(4), res.Data.(storage).Free) 90 } 91 } 92 93 func TestBuildTagRes(t *testing.T) { 94 asserts := assert.New(t) 95 tags := []model.Tag{ 96 { 97 Type: 0, 98 Expression: "exp", 99 }, 100 { 101 Type: 1, 102 Expression: "exp", 103 }, 104 } 105 res := buildTagRes(tags) 106 asserts.Len(res, 2) 107 asserts.Equal("", res[0].Expression) 108 asserts.Equal("exp", res[1].Expression) 109 } 110 111 func TestBuildWebAuthnList(t *testing.T) { 112 asserts := assert.New(t) 113 credentials := []webauthn.Credential{{}} 114 res := BuildWebAuthnList(credentials) 115 asserts.Len(res, 1) 116 }