99 lines
3.0 KiB
TypeScript
99 lines
3.0 KiB
TypeScript
import testCreds from './.creds.json';
|
|
import { handler as scanPromptHandler } from './scanPrompt';
|
|
import { handler as scanResponseHandler } from './scanResponse';
|
|
|
|
function getParameters(
|
|
scanners: string[] = [
|
|
'pii',
|
|
'prompt_injection',
|
|
'secrets',
|
|
'toxic_language',
|
|
'invisible_characters',
|
|
]
|
|
) {
|
|
return {
|
|
credentials: testCreds,
|
|
scanners,
|
|
};
|
|
}
|
|
|
|
describe('scanPrompt handler', () => {
|
|
it('should fail if the apiKey is invalid', async () => {
|
|
const eventType = 'beforeRequestHook';
|
|
const context = {
|
|
request: { text: 'this is a test string for moderations' },
|
|
};
|
|
const parameters = JSON.parse(JSON.stringify(getParameters()));
|
|
parameters.credentials.apiKey = 'invalid-api-key';
|
|
|
|
const result = await scanPromptHandler(context, parameters, eventType);
|
|
// console.log(result);
|
|
expect(result).toBeDefined();
|
|
expect(result.verdict).toBe(false);
|
|
expect(result.error).toBeDefined();
|
|
expect(result.data).toBeNull();
|
|
});
|
|
|
|
it('should pass when text is clean', async () => {
|
|
const eventType = 'beforeRequestHook';
|
|
const context = {
|
|
request: { text: 'this is a test string for moderations' },
|
|
};
|
|
const parameters = getParameters();
|
|
|
|
const result = await scanPromptHandler(context, parameters, eventType);
|
|
// console.log(result);
|
|
expect(result).toBeDefined();
|
|
expect(result.verdict).toBe(true);
|
|
expect(result.error).toBeNull();
|
|
expect(result.data).toBeDefined();
|
|
});
|
|
|
|
it('should fail when text contains PII', async () => {
|
|
const eventType = 'beforeRequestHook';
|
|
const context = {
|
|
request: { text: 'My social security number is 112-42-3323' },
|
|
};
|
|
const parameters = getParameters();
|
|
|
|
const result = await scanPromptHandler(context, parameters, eventType);
|
|
// console.log(result);
|
|
expect(result).toBeDefined();
|
|
expect(result.verdict).toBe(false);
|
|
expect(result.error).toBeNull();
|
|
expect(result.data).toBeDefined();
|
|
});
|
|
});
|
|
|
|
describe('scanResponse handler', () => {
|
|
it('should pass when response is clean', async () => {
|
|
const eventType = 'afterRequestHook';
|
|
const context = {
|
|
response: { text: 'this is a test string for moderations' },
|
|
};
|
|
const parameters = getParameters(['pii']);
|
|
|
|
const result = await scanResponseHandler(context, parameters, eventType);
|
|
// console.log(result);
|
|
expect(result).toBeDefined();
|
|
expect(result.verdict).toBe(true);
|
|
expect(result.error).toBeNull();
|
|
expect(result.data).toBeDefined();
|
|
});
|
|
|
|
it('should fail when response contains PII', async () => {
|
|
const eventType = 'afterRequestHook';
|
|
const context = {
|
|
response: { text: 'My social security number is 112-42-3323' },
|
|
};
|
|
const parameters = getParameters(['pii']);
|
|
|
|
const result = await scanResponseHandler(context, parameters, eventType);
|
|
// console.log(result);
|
|
expect(result).toBeDefined();
|
|
expect(result.verdict).toBe(false);
|
|
expect(result.error).toBeNull();
|
|
expect(result.data).toBeDefined();
|
|
});
|
|
});
|