Skip to content

Commit

Permalink
test: delete api token handler test
Browse files Browse the repository at this point in the history
  • Loading branch information
WanShufen committed Sep 9, 2023
1 parent b209967 commit beeb5a1
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ describe('CreateRecordCommandHandler', () => {
handler = new CreateRecordCommandHandler(tableRepo, recordRepo, cls, rls)
})
test('create record success', async () => {
cls.get.calledWith('user.userId').mockResolvedValue('usr123')
cls.get.calledWith('user.userId').mockReturnValue('usr123')
tableRepo.findOneById.calledWith(table.id.value).mockResolvedValue(Some(table))
spy.mockReturnValue(record)

Expand All @@ -57,7 +57,7 @@ describe('CreateRecordCommandHandler', () => {
expect(id).toEqual(record.id.value)
})
test('findOneById failed', async () => {
cls.get.calledWith('user.userId').mockResolvedValue('usr123')
cls.get.calledWith('user.userId').mockReturnValue('usr123')
tableRepo.findOneById.mockResolvedValue(None)
spy.mockReturnValue(record)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { IClsService, ClsStore, User, UserId } from '@undb/core'
import { ApiToken, IApiTokenRepository } from '@undb/openapi'
import { MockProxy, mock } from 'vitest-mock-extended'
import { DeleteApiTokenCommand } from './delete-api-token.command'
import { DeleteApiTokenCommandHandler } from './delete-api-token.command.handler'
import { None, Some } from 'oxide.ts'

describe('APITokenStrategy', () => {
let repo: MockProxy<IApiTokenRepository>
let cls: MockProxy<IClsService<ClsStore>>
let command: DeleteApiTokenCommand
let handler: DeleteApiTokenCommandHandler
let apiToken: ApiToken
let userId: UserId

beforeEach(() => {
repo = mock<IApiTokenRepository>()
cls = mock<IClsService<ClsStore>>()
apiToken = new ApiToken()
command = new DeleteApiTokenCommand({ apiTokenId: 'apiTokenIdString' })
handler = new DeleteApiTokenCommandHandler(repo, cls)
userId = new UserId('user123')
})
test('Delete api token success', async () => {
cls.get.calledWith('user.userId').mockReturnValue('user123')
apiToken.userId = userId
repo.findOneById.mockResolvedValue(Some(apiToken))
await handler.execute(command)
expect(repo.findOneById).toHaveBeenCalledWith(command.apiTokenId)
expect(repo.deleteOneById).toHaveBeenCalledWith(command.apiTokenId)
})

test('Delete api token faild', async () => {
cls.get.calledWith('user.userId').mockReturnValue('user123')
apiToken.userId = userId
repo.findOneById.mockResolvedValue(None)
await handler.execute(command)
expect(repo.deleteOneById).not.toHaveBeenCalled()
})

test('Delete api token error', async () => {
cls.get.calledWith('user.userId').mockReturnValue('user321')
apiToken.userId = userId
repo.findOneById.mockResolvedValue(Some(apiToken))
await expect(handler.execute(command)).rejects.toThrowErrorMatchingInlineSnapshot(
'"cannot delete api token belongs to other user"',
)
expect(repo.deleteOneById).not.toHaveBeenCalled()
})
})
35 changes: 2 additions & 33 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit beeb5a1

Please sign in to comment.