test validateKey (#2485)

add validateKey.test.ts
This commit is contained in:
jiabaow
2024-05-29 10:01:35 -07:00
committed by GitHub
parent 97386bc3b2
commit f5b08864b8
2 changed files with 43 additions and 1 deletions
+2 -1
View File
@@ -40,7 +40,8 @@
"cypress:open": "cypress open",
"cypress:run": "cypress run",
"e2e": "start-server-and-test dev http://localhost:3000 cypress:run",
"cypress:ci": "START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https-get://localhost:3000 cypress:run"
"cypress:ci": "START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https-get://localhost:3000 cypress:run",
"test": "jest"
},
"keywords": [],
"homepage": "https://flowiseai.com",
@@ -0,0 +1,41 @@
import { Request } from 'express'
import { ChatFlow } from '../../src/database/entities/ChatFlow'
import { utilValidateKey } from '../../src/utils/validateKey'
import { compareKeys, getAPIKeys } from '../../src/utils/apiKey'
jest.mock('../../src/utils/apiKey')
describe('utilValidateKey', () => {
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 utilValidateKey(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 utilValidateKey(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 utilValidateKey(req as Request, chatflow)
expect(result).toBe(false)
})
})