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  }