vaspera 2.9.2 → 2.10.0

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 (159) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +58 -1
  3. package/dist/__tests__/autofix/branch-manager.test.d.ts +2 -0
  4. package/dist/__tests__/autofix/branch-manager.test.d.ts.map +1 -0
  5. package/dist/__tests__/autofix/branch-manager.test.js +60 -0
  6. package/dist/__tests__/autofix/branch-manager.test.js.map +1 -0
  7. package/dist/__tests__/autofix/commit-generator.test.d.ts +2 -0
  8. package/dist/__tests__/autofix/commit-generator.test.d.ts.map +1 -0
  9. package/dist/__tests__/autofix/commit-generator.test.js +147 -0
  10. package/dist/__tests__/autofix/commit-generator.test.js.map +1 -0
  11. package/dist/__tests__/autofix/constitution.test.d.ts +9 -0
  12. package/dist/__tests__/autofix/constitution.test.d.ts.map +1 -0
  13. package/dist/__tests__/autofix/constitution.test.js +421 -0
  14. package/dist/__tests__/autofix/constitution.test.js.map +1 -0
  15. package/dist/__tests__/autofix/pr-generator.test.d.ts +2 -0
  16. package/dist/__tests__/autofix/pr-generator.test.d.ts.map +1 -0
  17. package/dist/__tests__/autofix/pr-generator.test.js +152 -0
  18. package/dist/__tests__/autofix/pr-generator.test.js.map +1 -0
  19. package/dist/__tests__/property-test-helpers.d.ts +87 -0
  20. package/dist/__tests__/property-test-helpers.d.ts.map +1 -0
  21. package/dist/__tests__/property-test-helpers.js +136 -0
  22. package/dist/__tests__/property-test-helpers.js.map +1 -0
  23. package/dist/__tests__/scanners/dast/index.test.d.ts +2 -0
  24. package/dist/__tests__/scanners/dast/index.test.d.ts.map +1 -0
  25. package/dist/__tests__/scanners/dast/index.test.js +183 -0
  26. package/dist/__tests__/scanners/dast/index.test.js.map +1 -0
  27. package/dist/__tests__/scanners/dast/nuclei.test.d.ts +2 -0
  28. package/dist/__tests__/scanners/dast/nuclei.test.d.ts.map +1 -0
  29. package/dist/__tests__/scanners/dast/nuclei.test.js +166 -0
  30. package/dist/__tests__/scanners/dast/nuclei.test.js.map +1 -0
  31. package/dist/__tests__/scanners/dast/zap.test.d.ts +2 -0
  32. package/dist/__tests__/scanners/dast/zap.test.d.ts.map +1 -0
  33. package/dist/__tests__/scanners/dast/zap.test.js +158 -0
  34. package/dist/__tests__/scanners/dast/zap.test.js.map +1 -0
  35. package/dist/__tests__/scanners/fp-feedback.test.d.ts +2 -0
  36. package/dist/__tests__/scanners/fp-feedback.test.d.ts.map +1 -0
  37. package/dist/__tests__/scanners/fp-feedback.test.js +202 -0
  38. package/dist/__tests__/scanners/fp-feedback.test.js.map +1 -0
  39. package/dist/__tests__/scanners/fp-filter.property.test.d.ts +9 -0
  40. package/dist/__tests__/scanners/fp-filter.property.test.d.ts.map +1 -0
  41. package/dist/__tests__/scanners/fp-filter.property.test.js +253 -0
  42. package/dist/__tests__/scanners/fp-filter.property.test.js.map +1 -0
  43. package/dist/__tests__/scanners/fp-filter.test.d.ts +2 -0
  44. package/dist/__tests__/scanners/fp-filter.test.d.ts.map +1 -0
  45. package/dist/__tests__/scanners/fp-filter.test.js +234 -0
  46. package/dist/__tests__/scanners/fp-filter.test.js.map +1 -0
  47. package/dist/__tests__/scanners/fp-tracker.test.d.ts +2 -0
  48. package/dist/__tests__/scanners/fp-tracker.test.d.ts.map +1 -0
  49. package/dist/__tests__/scanners/fp-tracker.test.js +262 -0
  50. package/dist/__tests__/scanners/fp-tracker.test.js.map +1 -0
  51. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.d.ts +10 -0
  52. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.d.ts.map +1 -0
  53. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.js +238 -0
  54. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.js.map +1 -0
  55. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.d.ts +2 -0
  56. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.d.ts.map +1 -0
  57. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.js +55 -0
  58. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.js.map +1 -0
  59. package/dist/__tests__/scanners/logic/index.test.d.ts +2 -0
  60. package/dist/__tests__/scanners/logic/index.test.d.ts.map +1 -0
  61. package/dist/__tests__/scanners/logic/index.test.js +165 -0
  62. package/dist/__tests__/scanners/logic/index.test.js.map +1 -0
  63. package/dist/__tests__/scanners/logic/types.test.d.ts +2 -0
  64. package/dist/__tests__/scanners/logic/types.test.d.ts.map +1 -0
  65. package/dist/__tests__/scanners/logic/types.test.js +85 -0
  66. package/dist/__tests__/scanners/logic/types.test.js.map +1 -0
  67. package/dist/action/pr-comment.test.js +4 -0
  68. package/dist/action/pr-comment.test.js.map +1 -1
  69. package/dist/action/sarif-upload.test.js +4 -0
  70. package/dist/action/sarif-upload.test.js.map +1 -1
  71. package/dist/autofix/branch-manager.d.ts +115 -0
  72. package/dist/autofix/branch-manager.d.ts.map +1 -0
  73. package/dist/autofix/branch-manager.js +308 -0
  74. package/dist/autofix/branch-manager.js.map +1 -0
  75. package/dist/autofix/commit-generator.d.ts +55 -0
  76. package/dist/autofix/commit-generator.d.ts.map +1 -0
  77. package/dist/autofix/commit-generator.js +277 -0
  78. package/dist/autofix/commit-generator.js.map +1 -0
  79. package/dist/autofix/constitution.d.ts +77 -0
  80. package/dist/autofix/constitution.d.ts.map +1 -0
  81. package/dist/autofix/constitution.js +261 -0
  82. package/dist/autofix/constitution.js.map +1 -0
  83. package/dist/autofix/constitution.schema.d.ts +441 -0
  84. package/dist/autofix/constitution.schema.d.ts.map +1 -0
  85. package/dist/autofix/constitution.schema.js +144 -0
  86. package/dist/autofix/constitution.schema.js.map +1 -0
  87. package/dist/autofix/index.d.ts +13 -0
  88. package/dist/autofix/index.d.ts.map +1 -0
  89. package/dist/autofix/index.js +15 -0
  90. package/dist/autofix/index.js.map +1 -0
  91. package/dist/autofix/pr-generator.d.ts +57 -0
  92. package/dist/autofix/pr-generator.d.ts.map +1 -0
  93. package/dist/autofix/pr-generator.js +597 -0
  94. package/dist/autofix/pr-generator.js.map +1 -0
  95. package/dist/autofix/types.d.ts +151 -0
  96. package/dist/autofix/types.d.ts.map +1 -0
  97. package/dist/autofix/types.js +22 -0
  98. package/dist/autofix/types.js.map +1 -0
  99. package/dist/eval/fixtures.d.ts +20 -0
  100. package/dist/eval/fixtures.d.ts.map +1 -1
  101. package/dist/eval/fixtures.js +430 -0
  102. package/dist/eval/fixtures.js.map +1 -1
  103. package/dist/scanners/cache.d.ts.map +1 -1
  104. package/dist/scanners/cache.js +4 -0
  105. package/dist/scanners/cache.js.map +1 -1
  106. package/dist/scanners/dast/index.d.ts +39 -0
  107. package/dist/scanners/dast/index.d.ts.map +1 -0
  108. package/dist/scanners/dast/index.js +259 -0
  109. package/dist/scanners/dast/index.js.map +1 -0
  110. package/dist/scanners/dast/nuclei.d.ts +26 -0
  111. package/dist/scanners/dast/nuclei.d.ts.map +1 -0
  112. package/dist/scanners/dast/nuclei.js +354 -0
  113. package/dist/scanners/dast/nuclei.js.map +1 -0
  114. package/dist/scanners/dast/types.d.ts +306 -0
  115. package/dist/scanners/dast/types.d.ts.map +1 -0
  116. package/dist/scanners/dast/types.js +52 -0
  117. package/dist/scanners/dast/types.js.map +1 -0
  118. package/dist/scanners/dast/zap.d.ts +26 -0
  119. package/dist/scanners/dast/zap.d.ts.map +1 -0
  120. package/dist/scanners/dast/zap.js +453 -0
  121. package/dist/scanners/dast/zap.js.map +1 -0
  122. package/dist/scanners/fp-feedback.d.ts +140 -0
  123. package/dist/scanners/fp-feedback.d.ts.map +1 -0
  124. package/dist/scanners/fp-feedback.js +292 -0
  125. package/dist/scanners/fp-feedback.js.map +1 -0
  126. package/dist/scanners/fp-filter.d.ts +94 -0
  127. package/dist/scanners/fp-filter.d.ts.map +1 -0
  128. package/dist/scanners/fp-filter.js +397 -0
  129. package/dist/scanners/fp-filter.js.map +1 -0
  130. package/dist/scanners/fp-tracker.d.ts +125 -0
  131. package/dist/scanners/fp-tracker.d.ts.map +1 -0
  132. package/dist/scanners/fp-tracker.js +330 -0
  133. package/dist/scanners/fp-tracker.js.map +1 -0
  134. package/dist/scanners/index.d.ts.map +1 -1
  135. package/dist/scanners/index.js +56 -0
  136. package/dist/scanners/index.js.map +1 -1
  137. package/dist/scanners/index.test.js +6 -6
  138. package/dist/scanners/index.test.js.map +1 -1
  139. package/dist/scanners/logic/auth-flow-analyzer.d.ts +18 -0
  140. package/dist/scanners/logic/auth-flow-analyzer.d.ts.map +1 -0
  141. package/dist/scanners/logic/auth-flow-analyzer.js +384 -0
  142. package/dist/scanners/logic/auth-flow-analyzer.js.map +1 -0
  143. package/dist/scanners/logic/endpoint-analyzer.d.ts +29 -0
  144. package/dist/scanners/logic/endpoint-analyzer.d.ts.map +1 -0
  145. package/dist/scanners/logic/endpoint-analyzer.js +528 -0
  146. package/dist/scanners/logic/endpoint-analyzer.js.map +1 -0
  147. package/dist/scanners/logic/index.d.ts +41 -0
  148. package/dist/scanners/logic/index.d.ts.map +1 -0
  149. package/dist/scanners/logic/index.js +268 -0
  150. package/dist/scanners/logic/index.js.map +1 -0
  151. package/dist/scanners/logic/types.d.ts +254 -0
  152. package/dist/scanners/logic/types.d.ts.map +1 -0
  153. package/dist/scanners/logic/types.js +142 -0
  154. package/dist/scanners/logic/types.js.map +1 -0
  155. package/dist/scanners/types.d.ts +1 -1
  156. package/dist/scanners/types.d.ts.map +1 -1
  157. package/dist/scanners/types.js +4 -0
  158. package/dist/scanners/types.js.map +1 -1
  159. package/package.json +5 -3
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Property-Based Tests for FP Filter
3
+ *
4
+ * Tests invariants of analyzeFilePath using fast-check property-based testing.
5
+ *
6
+ * @module __tests__/scanners/fp-filter.property
7
+ */
8
+ import { describe, it } from "vitest";
9
+ import * as fc from "fast-check";
10
+ import { analyzeFilePath } from "../../scanners/fp-filter.js";
11
+ import { arbitraries, testFilePath, specFilePath, nodeModulesPath, generatedFilePath, dtsFilePath, } from "../property-test-helpers.js";
12
+ describe("analyzeFilePath - Property Tests", () => {
13
+ describe("Return type invariants", () => {
14
+ it("always returns all expected boolean keys", () => {
15
+ fc.assert(fc.property(fc.string(), (path) => {
16
+ const result = analyzeFilePath(path);
17
+ return (typeof result.isTestFile === "boolean" &&
18
+ typeof result.isGeneratedCode === "boolean" &&
19
+ typeof result.isThirdPartyVendored === "boolean" &&
20
+ typeof result.isMockFile === "boolean" &&
21
+ typeof result.isFixtureFile === "boolean" &&
22
+ typeof result.isExampleFile === "boolean");
23
+ }));
24
+ });
25
+ it("is idempotent - same input always produces same output", () => {
26
+ fc.assert(fc.property(fc.string(), (path) => {
27
+ const r1 = analyzeFilePath(path);
28
+ const r2 = analyzeFilePath(path);
29
+ return JSON.stringify(r1) === JSON.stringify(r2);
30
+ }));
31
+ });
32
+ });
33
+ describe("Test file detection", () => {
34
+ it("*.test.ts files are always test files", () => {
35
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
36
+ const path = testFilePath(stem, "ts");
37
+ const result = analyzeFilePath(path);
38
+ return result.isTestFile === true;
39
+ }));
40
+ });
41
+ it("*.test.tsx files are always test files", () => {
42
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
43
+ const path = `src/${stem}.test.tsx`;
44
+ const result = analyzeFilePath(path);
45
+ return result.isTestFile === true;
46
+ }));
47
+ });
48
+ it("*.spec.ts files are always test files", () => {
49
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
50
+ const path = specFilePath(stem, "ts");
51
+ const result = analyzeFilePath(path);
52
+ return result.isTestFile === true;
53
+ }));
54
+ });
55
+ it("*.spec.js files are always test files", () => {
56
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
57
+ const path = specFilePath(stem, "js");
58
+ const result = analyzeFilePath(path);
59
+ return result.isTestFile === true;
60
+ }));
61
+ });
62
+ it("files in __tests__ directory are always test files", () => {
63
+ fc.assert(fc.property(arbitraries.pathSegment, arbitraries.fileExtension, (filename, ext) => {
64
+ const path = `src/__tests__/${filename}.${ext}`;
65
+ const result = analyzeFilePath(path);
66
+ return result.isTestFile === true;
67
+ }));
68
+ });
69
+ it("files in cypress directory are always test files", () => {
70
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
71
+ const path = `cypress/e2e/${filename}.cy.ts`;
72
+ const result = analyzeFilePath(path);
73
+ return result.isTestFile === true;
74
+ }));
75
+ });
76
+ it("regular source files are not test files", () => {
77
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
78
+ const path = `src/components/${stem}.ts`;
79
+ const result = analyzeFilePath(path);
80
+ return result.isTestFile === false;
81
+ }));
82
+ });
83
+ });
84
+ describe("Vendor/third-party detection", () => {
85
+ it("node_modules paths are always vendored", () => {
86
+ fc.assert(fc.property(arbitraries.pathSegment, arbitraries.pathSegment, (pkg, file) => {
87
+ const path = nodeModulesPath(pkg, file);
88
+ const result = analyzeFilePath(path);
89
+ return result.isThirdPartyVendored === true;
90
+ }));
91
+ });
92
+ it("vendor directory paths are always vendored", () => {
93
+ fc.assert(fc.property(arbitraries.pathSegment, (file) => {
94
+ const path = `vendor/libs/${file}.js`;
95
+ const result = analyzeFilePath(path);
96
+ return result.isThirdPartyVendored === true;
97
+ }));
98
+ });
99
+ it("third_party directory paths are always vendored", () => {
100
+ fc.assert(fc.property(arbitraries.pathSegment, (file) => {
101
+ const path = `third_party/${file}.js`;
102
+ const result = analyzeFilePath(path);
103
+ return result.isThirdPartyVendored === true;
104
+ }));
105
+ });
106
+ it("*.min.js files are always vendored", () => {
107
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
108
+ const path = `libs/${stem}.min.js`;
109
+ const result = analyzeFilePath(path);
110
+ return result.isThirdPartyVendored === true;
111
+ }));
112
+ });
113
+ it("regular source files are not vendored", () => {
114
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
115
+ const path = `src/utils/${stem}.ts`;
116
+ const result = analyzeFilePath(path);
117
+ return result.isThirdPartyVendored === false;
118
+ }));
119
+ });
120
+ });
121
+ describe("Generated code detection", () => {
122
+ it("*.generated.ts files are always generated", () => {
123
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
124
+ const path = generatedFilePath(stem);
125
+ const result = analyzeFilePath(path);
126
+ return result.isGeneratedCode === true;
127
+ }));
128
+ });
129
+ it("*.d.ts files are always generated", () => {
130
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
131
+ const path = dtsFilePath(stem);
132
+ const result = analyzeFilePath(path);
133
+ return result.isGeneratedCode === true;
134
+ }));
135
+ });
136
+ it("files in __generated__ directory are always generated", () => {
137
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
138
+ const path = `src/__generated__/${filename}.ts`;
139
+ const result = analyzeFilePath(path);
140
+ return result.isGeneratedCode === true;
141
+ }));
142
+ });
143
+ it("prisma/client paths are always generated", () => {
144
+ fc.assert(fc.property(arbitraries.pathSegment, (file) => {
145
+ const path = `node_modules/prisma/client/${file}.ts`;
146
+ const result = analyzeFilePath(path);
147
+ return result.isGeneratedCode === true;
148
+ }));
149
+ });
150
+ it("regular source files are not generated", () => {
151
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
152
+ const path = `src/services/${stem}.ts`;
153
+ const result = analyzeFilePath(path);
154
+ return result.isGeneratedCode === false;
155
+ }));
156
+ });
157
+ });
158
+ describe("Mock file detection", () => {
159
+ it("*.mock.ts files are always mock files", () => {
160
+ fc.assert(fc.property(arbitraries.pathSegment, (stem) => {
161
+ const path = `src/${stem}.mock.ts`;
162
+ const result = analyzeFilePath(path);
163
+ return result.isMockFile === true;
164
+ }));
165
+ });
166
+ it("files in __mocks__ directory are test files (via TEST_FILE_PATTERNS)", () => {
167
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
168
+ const path = `src/__mocks__/${filename}.ts`;
169
+ const result = analyzeFilePath(path);
170
+ // __mocks__ triggers isTestFile via TEST_FILE_PATTERNS
171
+ return result.isTestFile === true;
172
+ }));
173
+ });
174
+ it("files in mocks directory are mock files", () => {
175
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
176
+ const path = `src/mocks/${filename}.ts`;
177
+ const result = analyzeFilePath(path);
178
+ return result.isMockFile === true;
179
+ }));
180
+ });
181
+ });
182
+ describe("Fixture file detection", () => {
183
+ it("files in fixtures directory are fixture files", () => {
184
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
185
+ const path = `src/fixtures/${filename}.json`;
186
+ const result = analyzeFilePath(path);
187
+ return result.isFixtureFile === true;
188
+ }));
189
+ });
190
+ it("files in samples directory are fixture files", () => {
191
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
192
+ const path = `data/samples/${filename}.json`;
193
+ const result = analyzeFilePath(path);
194
+ return result.isFixtureFile === true;
195
+ }));
196
+ });
197
+ it("files in seed directory are fixture files", () => {
198
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
199
+ const path = `db/seed/${filename}.ts`;
200
+ const result = analyzeFilePath(path);
201
+ return result.isFixtureFile === true;
202
+ }));
203
+ });
204
+ });
205
+ describe("Example file detection", () => {
206
+ it("files in examples directory are example files", () => {
207
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
208
+ const path = `examples/${filename}.ts`;
209
+ const result = analyzeFilePath(path);
210
+ return result.isExampleFile === true;
211
+ }));
212
+ });
213
+ it("files in demo directory are example files", () => {
214
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
215
+ const path = `demo/${filename}.ts`;
216
+ const result = analyzeFilePath(path);
217
+ return result.isExampleFile === true;
218
+ }));
219
+ });
220
+ });
221
+ describe("Path normalization", () => {
222
+ it("handles backslash paths consistently (Windows style)", () => {
223
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
224
+ const unixPath = `src/__tests__/${filename}.test.ts`;
225
+ const windowsPath = `src\\__tests__\\${filename}.test.ts`;
226
+ const result1 = analyzeFilePath(unixPath);
227
+ const result2 = analyzeFilePath(windowsPath);
228
+ return JSON.stringify(result1) === JSON.stringify(result2);
229
+ }));
230
+ });
231
+ it("handles mixed slash paths", () => {
232
+ fc.assert(fc.property(arbitraries.pathSegment, (filename) => {
233
+ const mixedPath = `src\\__tests__/${filename}.test.ts`;
234
+ const result = analyzeFilePath(mixedPath);
235
+ return result.isTestFile === true;
236
+ }));
237
+ });
238
+ });
239
+ describe("Classification exclusivity", () => {
240
+ it("vendored files are not classified as regular test files", () => {
241
+ // A file in node_modules with .test.ts extension
242
+ // Both classifications may be true, but let's check they don't conflict
243
+ fc.assert(fc.property(arbitraries.pathSegment, (pkg) => {
244
+ const path = `node_modules/${pkg}/index.test.ts`;
245
+ const result = analyzeFilePath(path);
246
+ // Both can be true - this is expected behavior
247
+ // The point is that vendored takes precedence in filtering
248
+ return result.isThirdPartyVendored === true;
249
+ }));
250
+ });
251
+ });
252
+ });
253
+ //# sourceMappingURL=fp-filter.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-filter.property.test.js","sourceRoot":"","sources":["../../../src/__tests__/scanners/fp-filter.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fp-filter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-filter.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/scanners/fp-filter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,234 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { analyzeFilePath, shouldFilter, } from "../../scanners/fp-filter.js";
3
+ describe("fp-filter", () => {
4
+ describe("analyzeFilePath", () => {
5
+ it("identifies test files", () => {
6
+ const testPaths = [
7
+ "src/__tests__/foo.test.ts",
8
+ "src/foo.spec.js",
9
+ "tests/unit/bar.ts",
10
+ "cypress/e2e/login.cy.ts",
11
+ "src/components/Button.stories.tsx",
12
+ ];
13
+ for (const path of testPaths) {
14
+ const result = analyzeFilePath(path);
15
+ expect(result.isTestFile, `${path} should be identified as test file`).toBe(true);
16
+ }
17
+ });
18
+ it("identifies generated code", () => {
19
+ const generatedPaths = [
20
+ "src/api.generated.ts",
21
+ "generated/types.ts",
22
+ "__generated__/schema.ts",
23
+ "src/types.d.ts",
24
+ "src/graphql.ts",
25
+ ];
26
+ for (const path of generatedPaths) {
27
+ const result = analyzeFilePath(path);
28
+ expect(result.isGeneratedCode, `${path} should be identified as generated`).toBe(true);
29
+ }
30
+ });
31
+ it("identifies vendor/third-party code", () => {
32
+ const vendorPaths = [
33
+ "node_modules/lodash/index.js",
34
+ "vendor/jquery.min.js",
35
+ "third-party/analytics.js",
36
+ "lib/vendor/moment.js",
37
+ ];
38
+ for (const path of vendorPaths) {
39
+ const result = analyzeFilePath(path);
40
+ expect(result.isThirdPartyVendored, `${path} should be identified as vendor`).toBe(true);
41
+ }
42
+ });
43
+ it("identifies fixture/example files", () => {
44
+ const fixturePaths = [
45
+ "fixtures/sample-data.json",
46
+ "examples/basic/app.ts",
47
+ "demo/showcase.tsx",
48
+ "seeds/users.ts",
49
+ ];
50
+ for (const path of fixturePaths) {
51
+ const result = analyzeFilePath(path);
52
+ expect(result.isFixtureFile || result.isExampleFile, `${path} should be identified as fixture/example`).toBe(true);
53
+ }
54
+ });
55
+ it("identifies regular source files", () => {
56
+ const srcPaths = [
57
+ "src/index.ts",
58
+ "src/components/Button.tsx",
59
+ "lib/utils.js",
60
+ ];
61
+ for (const path of srcPaths) {
62
+ const result = analyzeFilePath(path);
63
+ expect(result.isTestFile).toBe(false);
64
+ expect(result.isGeneratedCode).toBe(false);
65
+ expect(result.isThirdPartyVendored).toBe(false);
66
+ expect(result.isFixtureFile).toBe(false);
67
+ }
68
+ });
69
+ it("identifies mock files", () => {
70
+ const mockPaths = [
71
+ "src/api.mock.ts",
72
+ "mocks/handlers.ts",
73
+ "__mocks__/axios.js",
74
+ ];
75
+ for (const path of mockPaths) {
76
+ const result = analyzeFilePath(path);
77
+ expect(result.isMockFile || result.isTestFile, `${path} should be mock/test`).toBe(true);
78
+ }
79
+ });
80
+ });
81
+ describe("shouldFilter", () => {
82
+ const createFinding = (overrides = {}) => ({
83
+ scanner: "semgrep",
84
+ ruleId: "security.sql-injection",
85
+ file: "src/db.ts",
86
+ line: 10,
87
+ message: "SQL injection vulnerability",
88
+ severity: "high",
89
+ confidence: 100,
90
+ category: "sql-injection",
91
+ ...overrides,
92
+ });
93
+ const createContext = (overrides = {}) => ({
94
+ codeContext: {
95
+ isTestFile: false,
96
+ isGeneratedCode: false,
97
+ isThirdPartyVendored: false,
98
+ isMockFile: false,
99
+ isFixtureFile: false,
100
+ isExampleFile: false,
101
+ },
102
+ semanticContext: {
103
+ hasValidation: false,
104
+ hasEncoding: false,
105
+ isSanitized: false,
106
+ isConstant: false,
107
+ isEnvironmentVariable: false,
108
+ },
109
+ historicalContext: {
110
+ previousFPs: [],
111
+ ruleAccuracy: 1.0,
112
+ suppressions: [],
113
+ },
114
+ ...overrides,
115
+ });
116
+ it("filters vendor/third-party code with high confidence", () => {
117
+ const finding = createFinding();
118
+ const context = createContext({
119
+ codeContext: {
120
+ isTestFile: false,
121
+ isGeneratedCode: false,
122
+ isThirdPartyVendored: true,
123
+ isMockFile: false,
124
+ isFixtureFile: false,
125
+ isExampleFile: false,
126
+ },
127
+ });
128
+ const result = shouldFilter(finding, context);
129
+ expect(result.filter).toBe(true);
130
+ expect(result.confidence).toBeGreaterThanOrEqual(90);
131
+ expect(result.reason).toContain("Third-party");
132
+ });
133
+ it("filters SQL injection in test files", () => {
134
+ const finding = createFinding({ category: "sql-injection" });
135
+ const context = createContext({
136
+ codeContext: {
137
+ isTestFile: true,
138
+ isGeneratedCode: false,
139
+ isThirdPartyVendored: false,
140
+ isMockFile: false,
141
+ isFixtureFile: false,
142
+ isExampleFile: false,
143
+ },
144
+ });
145
+ const result = shouldFilter(finding, context);
146
+ expect(result.filter).toBe(true);
147
+ expect(result.reason).toContain("Test file");
148
+ });
149
+ it("filters hardcoded secrets that are env vars", () => {
150
+ const finding = createFinding({ category: "hardcoded-secret" });
151
+ const context = createContext({
152
+ semanticContext: {
153
+ hasValidation: false,
154
+ hasEncoding: false,
155
+ isSanitized: false,
156
+ isConstant: false,
157
+ isEnvironmentVariable: true,
158
+ },
159
+ });
160
+ const result = shouldFilter(finding, context);
161
+ expect(result.filter).toBe(true);
162
+ expect(result.reason).toContain("Environment variable");
163
+ });
164
+ it("filters constant values for injection categories", () => {
165
+ const finding = createFinding({ category: "sql-injection" });
166
+ const context = createContext({
167
+ semanticContext: {
168
+ hasValidation: false,
169
+ hasEncoding: false,
170
+ isSanitized: false,
171
+ isConstant: true,
172
+ isEnvironmentVariable: false,
173
+ },
174
+ });
175
+ const result = shouldFilter(finding, context);
176
+ expect(result.filter).toBe(true);
177
+ expect(result.reason).toContain("Constant value");
178
+ });
179
+ it("does not filter real findings in source code", () => {
180
+ const finding = createFinding();
181
+ const context = createContext();
182
+ const result = shouldFilter(finding, context);
183
+ expect(result.filter).toBe(false);
184
+ expect(result.confidence).toBe(100);
185
+ expect(result.suggestion).toBe("confirm");
186
+ });
187
+ it("suggests review when sanitization is present", () => {
188
+ const finding = createFinding();
189
+ const context = createContext({
190
+ semanticContext: {
191
+ hasValidation: true,
192
+ hasEncoding: false,
193
+ isSanitized: false,
194
+ isConstant: false,
195
+ isEnvironmentVariable: false,
196
+ },
197
+ });
198
+ const result = shouldFilter(finding, context);
199
+ expect(result.filter).toBe(false);
200
+ expect(result.suggestion).toBe("review");
201
+ });
202
+ it("filters fixture files with lower confidence", () => {
203
+ const finding = createFinding();
204
+ const context = createContext({
205
+ codeContext: {
206
+ isTestFile: false,
207
+ isGeneratedCode: false,
208
+ isThirdPartyVendored: false,
209
+ isMockFile: false,
210
+ isFixtureFile: true,
211
+ isExampleFile: false,
212
+ },
213
+ });
214
+ const result = shouldFilter(finding, context);
215
+ expect(result.filter).toBe(true);
216
+ expect(result.confidence).toBeLessThan(80);
217
+ expect(result.reason).toContain("Fixture");
218
+ });
219
+ it("considers historical suppressions", () => {
220
+ const finding = createFinding();
221
+ const context = createContext({
222
+ historicalContext: {
223
+ previousFPs: [],
224
+ ruleAccuracy: 1.0,
225
+ suppressions: ["security.sql-injection"],
226
+ },
227
+ });
228
+ const result = shouldFilter(finding, context);
229
+ expect(result.filter).toBe(true);
230
+ expect(result.reason).toContain("suppressed");
231
+ });
232
+ });
233
+ });
234
+ //# sourceMappingURL=fp-filter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-filter.test.js","sourceRoot":"","sources":["../../../src/__tests__/scanners/fp-filter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fp-tracker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-tracker.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/scanners/fp-tracker.test.ts"],"names":[],"mappings":""}