github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/models/scripts/reset_test.go (about) 1 package scripts 2 3 import ( 4 "context" 5 "errors" 6 "github.com/DATA-DOG/go-sqlmock" 7 "github.com/stretchr/testify/assert" 8 "testing" 9 ) 10 11 func TestResetAdminPassword_Run(t *testing.T) { 12 asserts := assert.New(t) 13 script := ResetAdminPassword(0) 14 15 // 初始用户不存在 16 { 17 mock.ExpectQuery("SELECT(.+)users(.+)"). 18 WillReturnRows(sqlmock.NewRows([]string{"id", "email", "storage"})) 19 asserts.Panics(func() { 20 script.Run(context.Background()) 21 }) 22 asserts.NoError(mock.ExpectationsWereMet()) 23 } 24 25 // 密码更新失败 26 { 27 mock.ExpectQuery("SELECT(.+)users(.+)"). 28 WillReturnRows(sqlmock.NewRows([]string{"id", "email", "storage"}).AddRow(1, "a@a.com", 10)) 29 mock.ExpectBegin() 30 mock.ExpectExec("UPDATE(.+)").WillReturnError(errors.New("error")) 31 mock.ExpectRollback() 32 asserts.Panics(func() { 33 script.Run(context.Background()) 34 }) 35 asserts.NoError(mock.ExpectationsWereMet()) 36 } 37 38 // 成功 39 { 40 mock.ExpectQuery("SELECT(.+)users(.+)"). 41 WillReturnRows(sqlmock.NewRows([]string{"id", "email", "storage"}).AddRow(1, "a@a.com", 10)) 42 mock.ExpectBegin() 43 mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 44 mock.ExpectCommit() 45 asserts.NotPanics(func() { 46 script.Run(context.Background()) 47 }) 48 asserts.NoError(mock.ExpectationsWereMet()) 49 } 50 }