Files
promptfoo--promptfoo/test/redteam/strategies/iterative.test.ts
T
wehub-resource-sync 0d3cb498a3
CI / Shell Format Check (push) Has been cancelled
CI / Check Ruby (3.4) (push) Has been cancelled
CI / CI Config (push) Has been cancelled
CI / Test on Node ${{ matrix.node }} and ${{ matrix.os }}${{ matrix.shard && format(' (shard {0}/3)', matrix.shard) || '' }} (push) Has been cancelled
CI / Build on Node ${{ matrix.node }} (push) Has been cancelled
CI / Style Check (push) Has been cancelled
CI / Generate Assets (push) Has been cancelled
CI / Check Python (3.14) (push) Has been cancelled
CI / Check Python (3.9) (push) Has been cancelled
CI / Build Docs (push) Has been cancelled
CI / Code Scan Action (push) Has been cancelled
CI / Site tests (push) Has been cancelled
CI / webui tests (push) Has been cancelled
CI / Run Integration Tests (push) Has been cancelled
CI / Run Smoke Tests (push) Has been cancelled
CI / Go Tests (push) Has been cancelled
CI / Share Test (push) Has been cancelled
CI / Redteam (Production API) (push) Has been cancelled
CI / Redteam (Staging API) (push) Has been cancelled
CI / GitHub Actions Lint (push) Has been cancelled
CI / Check Ruby (3.0) (push) Has been cancelled
release-please / release-please (push) Has been cancelled
release-please / build (push) Has been cancelled
release-please / publish-npm (push) Has been cancelled
release-please / publish-npm-backfill (push) Has been cancelled
release-please / docker (push) Has been cancelled
release-please / publish-code-scan-action (push) Has been cancelled
release-please / attest-code-scan-action (push) Has been cancelled
Deploy local.promptfoo.app / Deploy to Cloudflare Pages (push) Has been cancelled
Test and Publish Multi-arch Docker Image / test (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-amd64 platform:linux/amd64 runner:ubuntu-latest]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-arm64 platform:linux/arm64 runner:ubuntu-24.04-arm]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / merge-docker-digests (push) Has been cancelled
Test and Publish Multi-arch Docker Image / Attest Multi-arch Image (push) Has been cancelled
Validate Renovate Config / Validate Renovate Configuration (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:24:08 +08:00

203 lines
4.9 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { addIterativeJailbreaks } from '../../../src/redteam/strategies/iterative';
import type { TestCase } from '../../../src/types/index';
describe('addIterativeJailbreaks', () => {
const mockTestCases: TestCase[] = [
{
vars: { testVar: 'test value' },
assert: [
{
type: 'contains-all', // Add required type field
metric: 'test-metric',
value: 'test-value',
},
],
metadata: {
existingKey: 'existingValue',
},
},
];
it('should transform test cases correctly for iterative strategy', () => {
const result = addIterativeJailbreaks(mockTestCases, 'testVar', 'iterative', {
configKey: 'configValue',
});
expect(result[0]).toEqual({
...mockTestCases[0],
provider: {
id: 'promptfoo:redteam:iterative',
config: {
injectVar: 'testVar',
configKey: 'configValue',
},
},
assert: [
{
type: 'contains-all',
metric: 'test-metric/Iterative',
value: 'test-value',
},
],
metadata: {
existingKey: 'existingValue',
strategyId: 'jailbreak',
originalText: 'test value',
},
});
});
it('should transform test cases correctly for iterative:tree strategy', () => {
const result = addIterativeJailbreaks(mockTestCases, 'testVar', 'iterative:tree', {
configKey: 'configValue',
});
expect(result[0]).toEqual({
...mockTestCases[0],
provider: {
id: 'promptfoo:redteam:iterative:tree',
config: {
injectVar: 'testVar',
configKey: 'configValue',
},
},
assert: [
{
type: 'contains-all',
metric: 'test-metric/IterativeTree',
value: 'test-value',
},
],
metadata: {
existingKey: 'existingValue',
strategyId: 'jailbreak:tree',
originalText: 'test value',
},
});
});
it('should handle test cases without assertions', () => {
const testCasesWithoutAssert: TestCase[] = [
{
vars: { testVar: 'test value' },
metadata: {
existingKey: 'existingValue',
},
},
];
const result = addIterativeJailbreaks(testCasesWithoutAssert, 'testVar', 'iterative', {});
expect(result[0]).toEqual({
...testCasesWithoutAssert[0],
provider: {
id: 'promptfoo:redteam:iterative',
config: {
injectVar: 'testVar',
},
},
assert: undefined,
metadata: {
existingKey: 'existingValue',
strategyId: 'jailbreak',
originalText: 'test value',
},
});
});
it('should handle test cases without metadata', () => {
const testCasesWithoutMetadata: TestCase[] = [
{
vars: { testVar: 'test value' },
assert: [
{
type: 'contains-all',
metric: 'test-metric',
value: 'test-value',
},
],
},
];
const result = addIterativeJailbreaks(testCasesWithoutMetadata, 'testVar', 'iterative', {});
expect(result[0]).toEqual({
...testCasesWithoutMetadata[0],
provider: {
id: 'promptfoo:redteam:iterative',
config: {
injectVar: 'testVar',
},
},
assert: [
{
type: 'contains-all',
metric: 'test-metric/Iterative',
value: 'test-value',
},
],
metadata: {
strategyId: 'jailbreak',
originalText: 'test value',
},
});
});
it('should use default iterative strategy when not specified', () => {
const result = addIterativeJailbreaks(mockTestCases, 'testVar', 'iterative', {});
expect(result[0]).toEqual({
...mockTestCases[0],
provider: {
id: 'promptfoo:redteam:iterative',
config: {
injectVar: 'testVar',
},
},
assert: [
{
type: 'contains-all',
metric: 'test-metric/Iterative',
value: 'test-value',
},
],
metadata: {
existingKey: 'existingValue',
strategyId: 'jailbreak',
originalText: 'test value',
},
});
});
it('should transform test cases correctly for iterative:meta strategy', () => {
const result = addIterativeJailbreaks(mockTestCases, 'testVar', 'iterative:meta', {
configKey: 'configValue',
});
expect(result[0]).toEqual({
...mockTestCases[0],
provider: {
id: 'promptfoo:redteam:iterative:meta',
config: {
injectVar: 'testVar',
configKey: 'configValue',
},
},
assert: [
{
type: 'contains-all',
metric: 'test-metric/IterativeMeta',
value: 'test-value',
},
],
metadata: {
existingKey: 'existingValue',
strategyId: 'jailbreak:meta',
originalText: 'test value',
},
});
});
});