Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

sharedFrontend.test.ts 3.5 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  1. import { Severity } from '../../src/redteam/constants';
  2. import type { Plugin } from '../../src/redteam/constants';
  3. import { getRiskCategorySeverityMap, getUnifiedConfig } from '../../src/redteam/sharedFrontend';
  4. import type { SavedRedteamConfig } from '../../src/redteam/types';
  5. describe('getRiskCategorySeverityMap', () => {
  6. it('should return default severity map when no plugins provided', () => {
  7. const result = getRiskCategorySeverityMap();
  8. expect(result).toBeDefined();
  9. expect(result['contracts']).toBe(Severity.Medium);
  10. });
  11. it('should override default severities with plugin severities', () => {
  12. const plugins = [
  13. { id: 'contracts' as Plugin, severity: Severity.High },
  14. { id: 'politics' as Plugin, severity: Severity.Critical },
  15. ];
  16. const result = getRiskCategorySeverityMap(plugins);
  17. expect(result['contracts']).toBe(Severity.High);
  18. expect(result['politics']).toBe(Severity.Critical);
  19. });
  20. it('should handle plugins without severity override', () => {
  21. const plugins = [
  22. { id: 'contracts' as Plugin },
  23. { id: 'politics' as Plugin, severity: Severity.Critical },
  24. ];
  25. const result = getRiskCategorySeverityMap(plugins);
  26. expect(result['contracts']).toBe(Severity.Medium); // Default severity
  27. expect(result['politics']).toBe(Severity.Critical);
  28. });
  29. });
  30. describe('getUnifiedConfig', () => {
  31. const baseConfig: SavedRedteamConfig = {
  32. description: 'Test config',
  33. prompts: ['test prompt'],
  34. target: {
  35. id: 'test-target',
  36. config: {
  37. sessionSource: 'test-session',
  38. stateful: true,
  39. apiKey: 'test-key',
  40. },
  41. },
  42. plugins: ['test-plugin'],
  43. strategies: ['basic'],
  44. purpose: 'testing',
  45. applicationDefinition: {},
  46. entities: [],
  47. };
  48. it('should transform config correctly', () => {
  49. const result = getUnifiedConfig(baseConfig);
  50. expect(result.description).toBe('Test config');
  51. expect(result.prompts).toEqual(['test prompt']);
  52. // @ts-ignore
  53. expect(result.targets[0].config.sessionSource).toBeUndefined();
  54. // @ts-ignore
  55. expect(result.targets[0].config.stateful).toBeUndefined();
  56. expect(result.redteam.purpose).toBe('testing');
  57. });
  58. it('should handle defaultTest transformation', () => {
  59. const configWithDefaultTest: SavedRedteamConfig = {
  60. ...baseConfig,
  61. defaultTest: {
  62. vars: { test: 'value' },
  63. options: { someOption: true },
  64. },
  65. };
  66. const result = getUnifiedConfig(configWithDefaultTest);
  67. expect(result.defaultTest!.vars).toEqual({ test: 'value' });
  68. expect(result.defaultTest!.options!.transformVars).toBe('{ ...vars, sessionId: context.uuid }');
  69. });
  70. it('should transform plugins correctly', () => {
  71. const configWithPlugins: SavedRedteamConfig = {
  72. ...baseConfig,
  73. plugins: ['simple-plugin', { id: 'complex-plugin', config: { setting: true } }],
  74. };
  75. const result = getUnifiedConfig(configWithPlugins);
  76. expect(result.redteam.plugins).toEqual([
  77. { id: 'simple-plugin' },
  78. { id: 'complex-plugin', config: { setting: true } },
  79. ]);
  80. });
  81. it('should transform strategies with stateful config', () => {
  82. const configWithStrategies: SavedRedteamConfig = {
  83. ...baseConfig,
  84. strategies: ['basic', 'goat', { id: 'custom', config: { option: true } }],
  85. };
  86. const result = getUnifiedConfig(configWithStrategies);
  87. expect(result.redteam.strategies).toEqual([
  88. { id: 'basic' },
  89. { id: 'goat', config: { stateful: true } },
  90. { id: 'custom', config: { option: true } },
  91. ]);
  92. });
  93. });
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...