Files
Flowise/packages/server/test/utils/validateKey.test.ts
T
Octavian FlowiseAI e8f5f07735 Feature: interactive swagger-ui auto-generated API docs from express (#1812)
* Add interactive swagger-ui auto-generated API docs from express

* Update README.md

* Update index.ts //@ts-ignore

* Fix eslint no-console error

* Add swagger paths

* Add all end  points

* Update swagger.yml

* update swagger yml file

* update swagger config

---------

Co-authored-by: Henry <hzj94@hotmail.com>
2024-08-25 13:22:07 +01:00

42 lines
1.5 KiB
TypeScript

import { Request } from 'express'
import { ChatFlow } from '../../src/database/entities/ChatFlow'
import { validateChatflowAPIKey } from '../../src/utils/validateKey'
import { compareKeys, getAPIKeys } from '../../src/utils/apiKey'
jest.mock('../../src/utils/apiKey')
describe('validateChatflowAPIKey', () => {
let req: Partial<Request>
let chatflow: ChatFlow
beforeEach(() => {
req = {
headers: {}
}
chatflow = {
apikeyid: null
} as ChatFlow
})
it('should return true if chatflow.apikeyid is not set', async () => {
const result = await validateChatflowAPIKey(req as Request, chatflow)
expect(result).toBe(true)
})
it('should return false if chatflow.apikeyid is set but authorization header is missing', async () => {
chatflow.apikeyid = 'some-api-key-id'
const result = await validateChatflowAPIKey(req as Request, chatflow)
expect(result).toBe(false)
})
it('should return false if supplied key does not match the expected key', async () => {
chatflow.apikeyid = 'some-api-key-id'
req.headers['authorization'] = 'Bearer invalid-key'
;(getAPIKeys as jest.Mock).mockResolvedValue([{ id: 'some-api-key-id', apiSecret: 'expected-secret-key' }])
;(compareKeys as jest.Mock).mockImplementation((expected, supplied) => expected === supplied)
const result = await validateChatflowAPIKey(req as Request, chatflow)
expect(result).toBe(false)
})
})