promptfoo 0.96.0 → 0.96.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +1 -0
  2. package/dist/package.json +10 -10
  3. package/dist/src/app/assets/{index-Dwt7E2K_.js → index-CL29fyye.js} +55 -55
  4. package/dist/src/app/assets/{index.es-CooNf3HB.js → index.es-CsYHA4xg.js} +1 -1
  5. package/dist/src/app/assets/{sync-Bj1WJrHQ.js → sync-B9AjROwZ.js} +1 -1
  6. package/dist/src/app/index.html +1 -1
  7. package/dist/src/assertions/answerRelevance.d.ts +3 -0
  8. package/dist/src/assertions/answerRelevance.d.ts.map +1 -0
  9. package/dist/src/assertions/answerRelevance.js +19 -0
  10. package/dist/src/assertions/answerRelevance.js.map +1 -0
  11. package/dist/src/assertions/bleu.d.ts +4 -14
  12. package/dist/src/assertions/bleu.d.ts.map +1 -1
  13. package/dist/src/assertions/bleu.js +19 -3
  14. package/dist/src/assertions/bleu.js.map +1 -1
  15. package/dist/src/assertions/classifier.d.ts +3 -0
  16. package/dist/src/assertions/classifier.d.ts.map +1 -0
  17. package/dist/src/assertions/classifier.js +22 -0
  18. package/dist/src/assertions/classifier.js.map +1 -0
  19. package/dist/src/assertions/contains.d.ts +8 -0
  20. package/dist/src/assertions/contains.d.ts.map +1 -0
  21. package/dist/src/assertions/contains.js +110 -0
  22. package/dist/src/assertions/contains.js.map +1 -0
  23. package/dist/src/assertions/contextFaithfulness.d.ts +3 -0
  24. package/dist/src/assertions/contextFaithfulness.d.ts.map +1 -0
  25. package/dist/src/assertions/contextFaithfulness.js +19 -0
  26. package/dist/src/assertions/contextFaithfulness.js.map +1 -0
  27. package/dist/src/assertions/contextRecall.d.ts +3 -0
  28. package/dist/src/assertions/contextRecall.d.ts.map +1 -0
  29. package/dist/src/assertions/contextRecall.js +18 -0
  30. package/dist/src/assertions/contextRecall.js.map +1 -0
  31. package/dist/src/assertions/contextRelevance.d.ts +3 -0
  32. package/dist/src/assertions/contextRelevance.d.ts.map +1 -0
  33. package/dist/src/assertions/contextRelevance.js +19 -0
  34. package/dist/src/assertions/contextRelevance.js.map +1 -0
  35. package/dist/src/assertions/cost.d.ts +3 -0
  36. package/dist/src/assertions/cost.d.ts.map +1 -0
  37. package/dist/src/assertions/cost.js +22 -0
  38. package/dist/src/assertions/cost.js.map +1 -0
  39. package/dist/src/assertions/equals.d.ts +4 -0
  40. package/dist/src/assertions/equals.d.ts.map +1 -0
  41. package/dist/src/assertions/equals.js +32 -0
  42. package/dist/src/assertions/equals.js.map +1 -0
  43. package/dist/src/assertions/factuality.d.ts +3 -0
  44. package/dist/src/assertions/factuality.d.ts.map +1 -0
  45. package/dist/src/assertions/factuality.js +25 -0
  46. package/dist/src/assertions/factuality.js.map +1 -0
  47. package/dist/src/assertions/index.d.ts.map +1 -1
  48. package/dist/src/assertions/index.js +89 -752
  49. package/dist/src/assertions/index.js.map +1 -1
  50. package/dist/src/assertions/javascript.d.ts +4 -0
  51. package/dist/src/assertions/javascript.d.ts.map +1 -0
  52. package/dist/src/assertions/javascript.js +94 -0
  53. package/dist/src/assertions/javascript.js.map +1 -0
  54. package/dist/src/assertions/json.d.ts +3 -4
  55. package/dist/src/assertions/json.d.ts.map +1 -1
  56. package/dist/src/assertions/json.js +2 -2
  57. package/dist/src/assertions/json.js.map +1 -1
  58. package/dist/src/assertions/latency.d.ts +3 -0
  59. package/dist/src/assertions/latency.d.ts.map +1 -0
  60. package/dist/src/assertions/latency.js +22 -0
  61. package/dist/src/assertions/latency.js.map +1 -0
  62. package/dist/src/assertions/levenshtein.d.ts +3 -0
  63. package/dist/src/assertions/levenshtein.d.ts.map +1 -0
  64. package/dist/src/assertions/levenshtein.js +22 -0
  65. package/dist/src/assertions/levenshtein.js.map +1 -0
  66. package/dist/src/assertions/llmRubric.d.ts +3 -0
  67. package/dist/src/assertions/llmRubric.d.ts.map +1 -0
  68. package/dist/src/assertions/llmRubric.js +22 -0
  69. package/dist/src/assertions/llmRubric.js.map +1 -0
  70. package/dist/src/assertions/modelGradedClosedQa.d.ts +3 -0
  71. package/dist/src/assertions/modelGradedClosedQa.d.ts.map +1 -0
  72. package/dist/src/assertions/modelGradedClosedQa.js +25 -0
  73. package/dist/src/assertions/modelGradedClosedQa.js.map +1 -0
  74. package/dist/src/assertions/moderation.d.ts +3 -0
  75. package/dist/src/assertions/moderation.d.ts.map +1 -0
  76. package/dist/src/assertions/moderation.js +41 -0
  77. package/dist/src/assertions/moderation.js.map +1 -0
  78. package/dist/src/assertions/openai.d.ts +5 -0
  79. package/dist/src/assertions/openai.d.ts.map +1 -0
  80. package/dist/src/assertions/openai.js +68 -0
  81. package/dist/src/assertions/openai.js.map +1 -0
  82. package/dist/src/assertions/perplexity.d.ts +3 -3
  83. package/dist/src/assertions/perplexity.d.ts.map +1 -1
  84. package/dist/src/assertions/perplexity.js +2 -2
  85. package/dist/src/assertions/perplexity.js.map +1 -1
  86. package/dist/src/assertions/python.d.ts +4 -0
  87. package/dist/src/assertions/python.d.ts.map +1 -0
  88. package/dist/src/assertions/python.js +107 -0
  89. package/dist/src/assertions/python.js.map +1 -0
  90. package/dist/src/assertions/redteam.d.ts +3 -0
  91. package/dist/src/assertions/redteam.d.ts.map +1 -0
  92. package/dist/src/assertions/redteam.js +29 -0
  93. package/dist/src/assertions/redteam.js.map +1 -0
  94. package/dist/src/assertions/regex.d.ts +3 -0
  95. package/dist/src/assertions/regex.d.ts.map +1 -0
  96. package/dist/src/assertions/regex.js +34 -0
  97. package/dist/src/assertions/regex.js.map +1 -0
  98. package/dist/src/assertions/rouge.d.ts +3 -0
  99. package/dist/src/assertions/rouge.d.ts.map +1 -0
  100. package/dist/src/assertions/rouge.js +47 -0
  101. package/dist/src/assertions/rouge.js.map +1 -0
  102. package/dist/src/assertions/similar.d.ts +3 -0
  103. package/dist/src/assertions/similar.d.ts.map +1 -0
  104. package/dist/src/assertions/similar.js +40 -0
  105. package/dist/src/assertions/similar.js.map +1 -0
  106. package/dist/src/assertions/sql.d.ts +3 -3
  107. package/dist/src/assertions/sql.d.ts.map +1 -1
  108. package/dist/src/assertions/sql.js +14 -3
  109. package/dist/src/assertions/sql.js.map +1 -1
  110. package/dist/src/assertions/startsWith.d.ts +3 -0
  111. package/dist/src/assertions/startsWith.d.ts.map +1 -0
  112. package/dist/src/assertions/startsWith.js +22 -0
  113. package/dist/src/assertions/startsWith.js.map +1 -0
  114. package/dist/src/assertions/utils.d.ts +1 -0
  115. package/dist/src/assertions/utils.d.ts.map +1 -1
  116. package/dist/src/assertions/utils.js +7 -0
  117. package/dist/src/assertions/utils.js.map +1 -1
  118. package/dist/src/assertions/webhook.d.ts +3 -0
  119. package/dist/src/assertions/webhook.d.ts.map +1 -0
  120. package/dist/src/assertions/webhook.js +55 -0
  121. package/dist/src/assertions/webhook.js.map +1 -0
  122. package/dist/src/assertions/xml.d.ts +2 -0
  123. package/dist/src/assertions/xml.d.ts.map +1 -1
  124. package/dist/src/assertions/xml.js +29 -0
  125. package/dist/src/assertions/xml.js.map +1 -1
  126. package/dist/src/fetch.d.ts.map +1 -1
  127. package/dist/src/fetch.js +8 -1
  128. package/dist/src/fetch.js.map +1 -1
  129. package/dist/src/providers/anthropic.d.ts.map +1 -1
  130. package/dist/src/providers/anthropic.js +12 -2
  131. package/dist/src/providers/anthropic.js.map +1 -1
  132. package/dist/src/providers/bedrock.js +1 -1
  133. package/dist/src/redteam/constants.d.ts +4 -3
  134. package/dist/src/redteam/constants.d.ts.map +1 -1
  135. package/dist/src/redteam/constants.js +43 -35
  136. package/dist/src/redteam/constants.js.map +1 -1
  137. package/dist/src/redteam/providers/goat.d.ts +2 -0
  138. package/dist/src/redteam/providers/goat.d.ts.map +1 -1
  139. package/dist/src/redteam/providers/goat.js +9 -2
  140. package/dist/src/redteam/providers/goat.js.map +1 -1
  141. package/dist/src/types/index.d.ts +108 -2
  142. package/dist/src/types/index.d.ts.map +1 -1
  143. package/dist/src/types/index.js +21 -26
  144. package/dist/src/types/index.js.map +1 -1
  145. package/dist/src/util/config/load.js +3 -2
  146. package/dist/src/util/config/load.js.map +1 -1
  147. package/dist/test/assertions/bleu.test.js +38 -13
  148. package/dist/test/assertions/bleu.test.js.map +1 -1
  149. package/dist/test/assertions/sql.test.js +268 -167
  150. package/dist/test/assertions/sql.test.js.map +1 -1
  151. package/dist/test/fetch.test.js +17 -0
  152. package/dist/test/fetch.test.js.map +1 -1
  153. package/dist/test/providers/anthropic.test.js +44 -5
  154. package/dist/test/providers/anthropic.test.js.map +1 -1
  155. package/dist/test/util/config/load.test.js +44 -1
  156. package/dist/test/util/config/load.test.js.map +1 -1
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +10 -10
  159. package/dist/src/redteam/eval/excessive-agency/llm_rubric-20240617.json +0 -10
  160. package/dist/src/redteam/eval/excessive-agency/llm_rubric-20240618.json +0 -10
  161. package/dist/src/redteam/eval/harmful/llm_rubric-20240723.json +0 -10
  162. package/dist/src/redteam/eval/harmful/llm_rubric-20240724.json +0 -10
@@ -5,175 +5,276 @@ const sql_1 = require("../../src/assertions/sql");
5
5
  const assertion = {
6
6
  type: 'is-sql',
7
7
  };
8
- // -------------------------------------------------- Basic Tests ------------------------------------------------------ //
9
- describe('Basic tests', () => {
10
- it('should pass when the output string is a valid SQL statement', async () => {
11
- const renderedValue = undefined;
12
- const outputString = 'SELECT id, name FROM users';
13
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
14
- expect(result.pass).toBe(true);
15
- expect(result.reason).toBe('Assertion passed');
8
+ describe('is-sql assertion', () => {
9
+ // -------------------------------------------------- Basic Tests ------------------------------------------------------ //
10
+ describe('Basic tests', () => {
11
+ it('should pass when the output string is a valid SQL statement', async () => {
12
+ const renderedValue = undefined;
13
+ const outputString = 'SELECT id, name FROM users';
14
+ const result = await (0, sql_1.handleIsSql)({
15
+ assertion,
16
+ renderedValue,
17
+ outputString,
18
+ inverse: false,
19
+ });
20
+ expect(result).toEqual({
21
+ assertion,
22
+ pass: true,
23
+ reason: 'Assertion passed',
24
+ score: 1,
25
+ });
26
+ });
27
+ it('should fail when the SQL statement contains a syntax error in the ORDER BY clause', async () => {
28
+ const renderedValue = undefined;
29
+ const outputString = 'SELECT * FROM orders ORDERY BY order_date';
30
+ const result = await (0, sql_1.handleIsSql)({
31
+ assertion,
32
+ renderedValue,
33
+ outputString,
34
+ inverse: false,
35
+ });
36
+ expect(result).toEqual({
37
+ pass: false,
38
+ score: 0,
39
+ reason: 'SQL statement does not conform to the provided MySQL database syntax.',
40
+ assertion,
41
+ });
42
+ });
43
+ it('should fail when the SQL statement uses a reserved keyword as a table name', async () => {
44
+ const renderedValue = undefined;
45
+ const outputString = 'SELECT * FROM select WHERE id = 1';
46
+ const result = await (0, sql_1.handleIsSql)({
47
+ assertion,
48
+ renderedValue,
49
+ outputString,
50
+ inverse: false,
51
+ });
52
+ expect(result).toEqual({
53
+ pass: false,
54
+ score: 0,
55
+ reason: 'SQL statement does not conform to the provided MySQL database syntax.',
56
+ assertion,
57
+ });
58
+ });
59
+ it('should fail when the SQL statement has an incorrect DELETE syntax', async () => {
60
+ const renderedValue = undefined;
61
+ const outputString = 'DELETE employees WHERE id = 1';
62
+ const result = await (0, sql_1.handleIsSql)({
63
+ assertion,
64
+ renderedValue,
65
+ outputString,
66
+ inverse: false,
67
+ });
68
+ expect(result).toEqual({
69
+ pass: false,
70
+ score: 0,
71
+ reason: 'SQL statement does not conform to the provided MySQL database syntax.',
72
+ assertion,
73
+ });
74
+ });
75
+ /**
76
+ * Catches an incorrect output from node-sql-parser package
77
+ * The parser cannot identify the syntax error: missing comma between column names
78
+ */
79
+ // it('should fail when the output string is an invalid SQL statement', () => {
80
+ // const renderedValue = undefined;
81
+ // const outputString = 'SELECT first_name last_name FROM employees';
82
+ // const result = testFunction(renderedValue, outputString, false);
83
+ // expect(result.pass).toBe(false);
84
+ // expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
85
+ // });
86
+ /**
87
+ * Catches an incorrect output from node-sql-parser package
88
+ * The parser cannot identify the syntax error: misuse of backticks (`)
89
+ */
90
+ // it('should fail when the output string is an invalid SQL statement', () => {
91
+ // const renderedValue = undefined;
92
+ // const outputString = 'SELECT * FROM `employees`';
93
+ // const result = testFunction(renderedValue, outputString, false);
94
+ // expect(result.pass).toBe(false);
95
+ // expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
96
+ // });
16
97
  });
17
- it('should fail when the SQL statement contains a syntax error in the ORDER BY clause', async () => {
18
- const renderedValue = undefined;
19
- const outputString = 'SELECT * FROM orders ORDERY BY order_date';
20
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
21
- expect(result.pass).toBe(false);
22
- expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
98
+ // ------------------------------------------ Database Specific Syntax Tests ------------------------------------------- //
99
+ describe('Database Specific Syntax Tests', () => {
100
+ it('should fail if the output SQL statement conforms to MySQL but not PostgreSQL', async () => {
101
+ const renderedValue = {
102
+ databaseType: 'PostgreSQL',
103
+ };
104
+ const outputString = `SELECT * FROM employees WHERE id = 1 LOCK IN SHARE MODE`;
105
+ const result = await (0, sql_1.handleIsSql)({
106
+ assertion,
107
+ renderedValue,
108
+ outputString,
109
+ inverse: false,
110
+ });
111
+ expect(result).toEqual({
112
+ pass: false,
113
+ score: 0,
114
+ reason: 'SQL statement does not conform to the provided PostgreSQL database syntax.',
115
+ assertion,
116
+ });
117
+ });
118
+ it('should fail if the output SQL statement conforms to PostgreSQL but not MySQL', async () => {
119
+ const renderedValue = {
120
+ databaseType: 'MySQL',
121
+ };
122
+ const outputString = `SELECT first_name, last_name FROM employees WHERE first_name ILIKE 'john%'`;
123
+ const result = await (0, sql_1.handleIsSql)({
124
+ assertion,
125
+ renderedValue,
126
+ outputString,
127
+ inverse: false,
128
+ });
129
+ expect(result).toEqual({
130
+ pass: false,
131
+ score: 0,
132
+ reason: 'SQL statement does not conform to the provided MySQL database syntax.',
133
+ assertion,
134
+ });
135
+ });
136
+ it('should pass if the output SQL statement conforms to PostgreSQL but not MySQL', async () => {
137
+ const renderedValue = {
138
+ databaseType: 'PostgreSQL',
139
+ };
140
+ const outputString = `SELECT first_name, last_name FROM employees WHERE first_name ILIKE 'john%'`;
141
+ const result = await (0, sql_1.handleIsSql)({
142
+ assertion,
143
+ renderedValue,
144
+ outputString,
145
+ inverse: false,
146
+ });
147
+ expect(result).toEqual({
148
+ pass: true,
149
+ score: 1,
150
+ reason: 'Assertion passed',
151
+ assertion,
152
+ });
153
+ });
154
+ /**
155
+ * Catches an incorrect output from node-sql-parser package
156
+ * The parser cannot differentiate certain syntax between MySQL and PostgreSQL
157
+ */
158
+ // it('should fail if the output SQL statement conforms to PostgreSQL but not MySQL', () => {
159
+ // const renderedValue = {
160
+ // databaseType: 'MySQL',
161
+ // };
162
+ // const outputString = `SELECT generate_series(1, 10);`;
163
+ // const result = testFunction(renderedValue, outputString, false);
164
+ // expect(result.pass).toBe(false);
165
+ // expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
166
+ // });
23
167
  });
24
- it('should fail when the SQL statement uses a reserved keyword as a table name', async () => {
25
- const renderedValue = undefined;
26
- const outputString = 'SELECT * FROM select WHERE id = 1';
27
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
28
- expect(result.pass).toBe(false);
29
- expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
168
+ // ------------------------------------------- White Table/Column List Tests ------------------------------------------- //
169
+ describe('White Table/Column List Tests', () => {
170
+ it('should fail if the output SQL statement violate allowedTables', async () => {
171
+ const renderedValue = {
172
+ databaseType: 'MySQL',
173
+ allowedTables: ['(select|update|insert|delete)::null::departments'],
174
+ };
175
+ const outputString = `SELECT * FROM employees`;
176
+ const result = await (0, sql_1.handleIsSql)({
177
+ assertion,
178
+ renderedValue,
179
+ outputString,
180
+ inverse: false,
181
+ });
182
+ expect(result).toEqual({
183
+ pass: false,
184
+ score: 0,
185
+ reason: `SQL validation failed: authority = 'select::null::employees' is required in table whiteList to execute SQL = 'SELECT * FROM employees'.`,
186
+ assertion,
187
+ });
188
+ });
189
+ it('should pass if the output SQL statement does not violate allowedTables', async () => {
190
+ const renderedValue = {
191
+ databaseType: 'MySQL',
192
+ allowedTables: ['(select|update|insert|delete)::null::departments'],
193
+ };
194
+ const outputString = `SELECT * FROM departments`;
195
+ const result = await (0, sql_1.handleIsSql)({
196
+ assertion,
197
+ renderedValue,
198
+ outputString,
199
+ inverse: false,
200
+ });
201
+ expect(result).toEqual({
202
+ pass: true,
203
+ score: 1,
204
+ reason: 'Assertion passed',
205
+ assertion,
206
+ });
207
+ });
208
+ it('should fail if the output SQL statement violate allowedColumns', async () => {
209
+ const renderedValue = {
210
+ databaseType: 'MySQL',
211
+ allowedColumns: ['select::null::name', 'update::null::id'],
212
+ };
213
+ const outputString = `SELECT id FROM t`;
214
+ const result = await (0, sql_1.handleIsSql)({
215
+ assertion,
216
+ renderedValue,
217
+ outputString,
218
+ inverse: false,
219
+ });
220
+ expect(result).toEqual({
221
+ pass: false,
222
+ score: 0,
223
+ reason: `SQL validation failed: authority = 'select::null::id' is required in column whiteList to execute SQL = 'SELECT id FROM t'.`,
224
+ assertion,
225
+ });
226
+ });
227
+ it('should pass if the output SQL statement does not violate allowedColumns', async () => {
228
+ const renderedValue = {
229
+ databaseType: 'MySQL',
230
+ allowedColumns: ['insert::department::dept_name', 'insert::department::location'],
231
+ };
232
+ const outputString = `INSERT INTO department (dept_name, location) VALUES ('Sales', 'New York')`;
233
+ const result = await (0, sql_1.handleIsSql)({
234
+ assertion,
235
+ renderedValue,
236
+ outputString,
237
+ inverse: false,
238
+ });
239
+ expect(result).toEqual({
240
+ pass: true,
241
+ score: 1,
242
+ reason: 'Assertion passed',
243
+ assertion,
244
+ });
245
+ });
246
+ /**
247
+ * Catches an incorrect output from node-sql-parser package
248
+ * Error message: message: "authority = 'update::null::id' is required in column whiteList to execute SQL = 'UPDATE a SET id = 1'"
249
+ * issue: In this test case, the 'whiteListCheck' function in node-sql-parser requires an explicit 'update::null::id'
250
+ * in the whitelist to allow SQL statement like `UPDATE a SET id = 1`, despite the presence
251
+ * of rule `update::a::id`
252
+ */
253
+ // it('should pass if the output SQL statement does not violate allowedColumns', () => {
254
+ // const renderedValue = {
255
+ // databaseType: 'MySQL',
256
+ // allowedColumns: ['update::a::id'],
257
+ // };
258
+ // const outputString = `UPDATE a SET id = 1`;
259
+ // const result = testFunction(renderedValue, outputString, false);
260
+ // expect(result.pass).toBe(true);
261
+ // expect(result.reason).toBe('Assertion passed');
262
+ // });
263
+ /**
264
+ * Similar issue: the error message is Error: authority = 'select::null::id' is required
265
+ * in column whiteList to execute SQL = 'UPDATE employee SET salary = 50000 WHERE id = 1'
266
+ */
267
+ // it('should pass if the output SQL statement does not violate allowedColumns', () => {
268
+ // const renderedValue = {
269
+ // databaseType: 'MySQL',
270
+ // allowedColumns: ['update::employee::salary','select::employee::id'],
271
+ // };
272
+ // const outputString = `UPDATE employee SET salary = 50000 WHERE id = 1`;
273
+ // const result = testFunction(renderedValue, outputString, false);
274
+ // expect(result.pass).toBe(true);
275
+ // expect(result.reason).toBe('Assertion passed');
276
+ // });
30
277
  });
31
- it('should fail when the SQL statement has an incorrect DELETE syntax', async () => {
32
- const renderedValue = undefined;
33
- const outputString = 'DELETE employees WHERE id = 1';
34
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
35
- expect(result.pass).toBe(false);
36
- expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
37
- });
38
- /**
39
- * Catches an incorrect output from node-sql-parser package
40
- * The parser cannot identify the syntax error: missing comma between column names
41
- */
42
- // it('should fail when the output string is an invalid SQL statement', () => {
43
- // const renderedValue = undefined;
44
- // const outputString = 'SELECT first_name last_name FROM employees';
45
- // const result = testFunction(renderedValue, outputString, false);
46
- // expect(result.pass).toBe(false);
47
- // expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
48
- // });
49
- /**
50
- * Catches an incorrect output from node-sql-parser package
51
- * The parser cannot identify the syntax error: misuse of backticks (`)
52
- */
53
- // it('should fail when the output string is an invalid SQL statement', () => {
54
- // const renderedValue = undefined;
55
- // const outputString = 'SELECT * FROM `employees`';
56
- // const result = testFunction(renderedValue, outputString, false);
57
- // expect(result.pass).toBe(false);
58
- // expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
59
- // });
60
- });
61
- // ------------------------------------------ Database Specific Syntax Tests ------------------------------------------- //
62
- describe('Database Specific Syntax Tests', () => {
63
- it('should fail if the output SQL statement conforms to MySQL but not PostgreSQL', async () => {
64
- const renderedValue = {
65
- databaseType: 'PostgreSQL',
66
- };
67
- const outputString = `SELECT * FROM employees WHERE id = 1 LOCK IN SHARE MODE`;
68
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
69
- expect(result.pass).toBe(false);
70
- expect(result.reason).toBe('SQL statement does not conform to the provided PostgreSQL database syntax.');
71
- });
72
- it('should fail if the output SQL statement conforms to PostgreSQL but not MySQL', async () => {
73
- const renderedValue = {
74
- databaseType: 'MySQL',
75
- };
76
- const outputString = `SELECT first_name, last_name FROM employees WHERE first_name ILIKE 'john%'`;
77
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
78
- expect(result.pass).toBe(false);
79
- expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
80
- });
81
- it('should pass if the output SQL statement conforms to PostgreSQL but not MySQL', async () => {
82
- const renderedValue = {
83
- databaseType: 'PostgreSQL',
84
- };
85
- const outputString = `SELECT first_name, last_name FROM employees WHERE first_name ILIKE 'john%'`;
86
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
87
- expect(result.pass).toBe(true);
88
- expect(result.reason).toBe('Assertion passed');
89
- });
90
- /**
91
- * Catches an incorrect output from node-sql-parser package
92
- * The paser cannot differentiate certain syntax between MySQL and PostgreSQL
93
- */
94
- // it('should fail if the output SQL statement conforms to PostgreSQL but not MySQL', () => {
95
- // const renderedValue = {
96
- // databaseType: 'MySQL',
97
- // };
98
- // const outputString = `SELECT generate_series(1, 10);`;
99
- // const result = testFunction(renderedValue, outputString, false);
100
- // expect(result.pass).toBe(false);
101
- // expect(result.reason).toBe('SQL statement does not conform to the provided MySQL database syntax.');
102
- // });
103
- });
104
- // ------------------------------------------- White Table/Column List Tests ------------------------------------------- //
105
- describe('White Table/Column List Tests', () => {
106
- it('should fail if the output SQL statement violate allowedTables', async () => {
107
- const renderedValue = {
108
- databaseType: 'MySQL',
109
- allowedTables: ['(select|update|insert|delete)::null::departments'],
110
- };
111
- const outputString = `SELECT * FROM employees`;
112
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
113
- expect(result.pass).toBe(false);
114
- expect(result.reason).toBe(`SQL validation failed: authority = 'select::null::employees' is required in table whiteList to execute SQL = 'SELECT * FROM employees'.`);
115
- });
116
- it('should pass if the output SQL statement does not violate allowedTables', async () => {
117
- const renderedValue = {
118
- databaseType: 'MySQL',
119
- allowedTables: ['(select|update|insert|delete)::null::departments'],
120
- };
121
- const outputString = `SELECT * FROM departments`;
122
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
123
- expect(result.pass).toBe(true);
124
- expect(result.reason).toBe('Assertion passed');
125
- });
126
- it('should fail if the output SQL statement violate allowedColumns', async () => {
127
- const renderedValue = {
128
- databaseType: 'MySQL',
129
- allowedColumns: ['select::null::name', 'update::null::id'],
130
- };
131
- const outputString = `SELECT id FROM t`;
132
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
133
- expect(result.pass).toBe(false);
134
- expect(result.reason).toBe(`SQL validation failed: authority = 'select::null::id' is required in column whiteList to execute SQL = 'SELECT id FROM t'.`);
135
- });
136
- it('should pass if the output SQL statement does not violate allowedColumns', async () => {
137
- const renderedValue = {
138
- databaseType: 'MySQL',
139
- allowedColumns: ['insert::department::dept_name', 'insert::department::location'],
140
- };
141
- const outputString = `INSERT INTO department (dept_name, location) VALUES ('Sales', 'New York')`;
142
- const result = await (0, sql_1.isSql)(outputString, renderedValue, false, assertion);
143
- expect(result.pass).toBe(true);
144
- expect(result.reason).toBe('Assertion passed');
145
- });
146
- /**
147
- * Catches an incorrect output from node-sql-parser package
148
- * Error message: message: "authority = 'update::null::id' is required in column whiteList to execute SQL = 'UPDATE a SET id = 1'"
149
- * issue: In this test case, the 'whiteListCheck' function in node-sql-parser requires an explicit 'update::null::id'
150
- * in the whitelist to allow SQL statement like `UPDATE a SET id = 1`, despite the presence
151
- * of rule `update::a::id`
152
- */
153
- // it('should pass if the output SQL statement does not violate allowedColumns', () => {
154
- // const renderedValue = {
155
- // databaseType: 'MySQL',
156
- // allowedColumns: ['update::a::id'],
157
- // };
158
- // const outputString = `UPDATE a SET id = 1`;
159
- // const result = testFunction(renderedValue, outputString, false);
160
- // expect(result.pass).toBe(true);
161
- // expect(result.reason).toBe('Assertion passed');
162
- // });
163
- /**
164
- * Similar issue: the error message is Error: authority = 'select::null::id' is required
165
- * in column whiteList to execute SQL = 'UPDATE employee SET salary = 50000 WHERE id = 1'
166
- */
167
- // it('should pass if the output SQL statement does not violate allowedColumns', () => {
168
- // const renderedValue = {
169
- // databaseType: 'MySQL',
170
- // allowedColumns: ['update::employee::salary','select::employee::id'],
171
- // };
172
- // const outputString = `UPDATE employee SET salary = 50000 WHERE id = 1`;
173
- // const result = testFunction(renderedValue, outputString, false);
174
- // expect(result.pass).toBe(true);
175
- // expect(result.reason).toBe('Assertion passed');
176
- // });
278
+ /* eslint-enable jest/no-commented-out-tests */
177
279
  });
178
- /* eslint-enable jest/no-commented-out-tests */
179
280
  //# sourceMappingURL=sql.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../../test/assertions/sql.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../../test/assertions/sql.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const proxy_agent_1 = require("proxy-agent");
7
+ const constants_1 = require("../src/constants");
7
8
  const envars_1 = require("../src/envars");
8
9
  const fetch_1 = require("../src/fetch");
9
10
  const logger_1 = __importDefault(require("../src/logger"));
@@ -52,6 +53,15 @@ describe('fetchWithProxy', () => {
52
53
  afterEach(() => {
53
54
  jest.clearAllMocks();
54
55
  });
56
+ it('should add version header to all requests', async () => {
57
+ const url = 'https://example.com/api';
58
+ await (0, fetch_1.fetchWithProxy)(url);
59
+ expect(global.fetch).toHaveBeenCalledWith(url, expect.objectContaining({
60
+ headers: expect.objectContaining({
61
+ 'x-promptfoo-version': constants_1.VERSION,
62
+ }),
63
+ }));
64
+ });
55
65
  it('should handle URLs with basic auth credentials', async () => {
56
66
  const url = 'https://username:password@example.com/api';
57
67
  const options = { headers: { 'Content-Type': 'application/json' } };
@@ -60,6 +70,7 @@ describe('fetchWithProxy', () => {
60
70
  headers: {
61
71
  'Content-Type': 'application/json',
62
72
  Authorization: 'Basic dXNlcm5hbWU6cGFzc3dvcmQ=',
73
+ 'x-promptfoo-version': constants_1.VERSION,
63
74
  },
64
75
  }));
65
76
  });
@@ -70,6 +81,7 @@ describe('fetchWithProxy', () => {
70
81
  expect(global.fetch).toHaveBeenCalledWith(url, expect.objectContaining({
71
82
  headers: {
72
83
  'Content-Type': 'application/json',
84
+ 'x-promptfoo-version': constants_1.VERSION,
73
85
  },
74
86
  }));
75
87
  });
@@ -92,6 +104,7 @@ describe('fetchWithProxy', () => {
92
104
  headers: {
93
105
  Authorization: 'Bearer token123',
94
106
  'Content-Type': 'application/json',
107
+ 'x-promptfoo-version': constants_1.VERSION,
95
108
  },
96
109
  }));
97
110
  });
@@ -107,6 +120,7 @@ describe('fetchWithProxy', () => {
107
120
  expect(global.fetch).toHaveBeenCalledWith('https://example.com/api', expect.objectContaining({
108
121
  headers: {
109
122
  Authorization: 'Bearer token123',
123
+ 'x-promptfoo-version': constants_1.VERSION,
110
124
  },
111
125
  }));
112
126
  });
@@ -116,6 +130,7 @@ describe('fetchWithProxy', () => {
116
130
  expect(global.fetch).toHaveBeenCalledWith('https://example.com/api', expect.objectContaining({
117
131
  headers: {
118
132
  Authorization: 'Basic OnBhc3N3b3Jk',
133
+ 'x-promptfoo-version': constants_1.VERSION,
119
134
  },
120
135
  }));
121
136
  });
@@ -125,6 +140,7 @@ describe('fetchWithProxy', () => {
125
140
  expect(global.fetch).toHaveBeenCalledWith('https://example.com/api', expect.objectContaining({
126
141
  headers: {
127
142
  Authorization: 'Basic dXNlcm5hbWU6', // Base64 encoded 'username:'
143
+ 'x-promptfoo-version': constants_1.VERSION,
128
144
  },
129
145
  }));
130
146
  });
@@ -142,6 +158,7 @@ describe('fetchWithProxy', () => {
142
158
  'Content-Type': 'application/json',
143
159
  'X-Custom-Header': 'value',
144
160
  Authorization: 'Basic dXNlcm5hbWU6cGFzc3dvcmQ=',
161
+ 'x-promptfoo-version': constants_1.VERSION,
145
162
  },
146
163
  }));
147
164
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.test.js","sourceRoot":"","sources":["../../test/fetch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.test.js","sourceRoot":"","sources":["../../test/fetch.test.ts"],"names":[],"mappings":"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"}