package pub import ( "context" "errors" "testing" "perms-system-server/internal/testutil/mocks" "perms-system-server/internal/types" "github.com/stretchr/testify/assert" "go.uber.org/mock/gomock" ) // TC-0006: DB异常(非ErrNotFound) func TestLogin_Mock_FindOneByUsernameDBError(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() dbErr := errors.New("connection refused") mockUser := mocks.NewMockSysUserModel(ctrl) mockUser.EXPECT().FindOneByUsername(gomock.Any(), "testuser").Return(nil, dbErr) svcCtx := mocks.NewMockServiceContext(mocks.MockModels{ User: mockUser, }) svcCtx.Config.Capjs.Enable = 0 captchaId := "mock_cap_" + t.Name() defaultCaptchaStore.Set(captchaId, "1234") logic := NewLoginLogic(context.Background(), svcCtx) resp, err := logic.Login(&types.LoginReq{ Username: "testuser", Password: "pass123", CaptchaId: captchaId, CaptchaCode: "1234", }) assert.ErrorIs(t, err, dbErr) assert.Nil(t, resp) }