@shiftleftpt/sbd-toe-mcp 0.1.0 → 0.2.16
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.
- package/.env.example +0 -3
- package/README.md +136 -254
- package/dist/config.js +0 -3
- package/dist/config.js.map +1 -1
- package/dist/types.d.ts +0 -3
- package/package.json +18 -2
- package/dist/backend/semantic-index-gateway.test.d.ts +0 -1
- package/dist/backend/semantic-index-gateway.test.js +0 -384
- package/dist/backend/semantic-index-gateway.test.js.map +0 -1
- package/dist/bootstrap/checkout-backend.d.ts +0 -31
- package/dist/bootstrap/checkout-backend.js +0 -136
- package/dist/bootstrap/checkout-backend.js.map +0 -1
- package/dist/bootstrap/checkout-backend.test.d.ts +0 -1
- package/dist/bootstrap/checkout-backend.test.js +0 -158
- package/dist/bootstrap/checkout-backend.test.js.map +0 -1
- package/dist/bootstrap/release-checkout.d.ts +0 -8
- package/dist/bootstrap/release-checkout.js +0 -168
- package/dist/bootstrap/release-checkout.js.map +0 -1
- package/dist/bootstrap/release-checkout.test.d.ts +0 -1
- package/dist/bootstrap/release-checkout.test.js +0 -137
- package/dist/bootstrap/release-checkout.test.js.map +0 -1
- package/dist/resources/sbd-toe-resources.test.d.ts +0 -1
- package/dist/resources/sbd-toe-resources.test.js +0 -134
- package/dist/resources/sbd-toe-resources.test.js.map +0 -1
- package/dist/test-utils.d.ts +0 -153
- package/dist/test-utils.js +0 -176
- package/dist/test-utils.js.map +0 -1
- package/dist/tools/generate-document.test.d.ts +0 -1
- package/dist/tools/generate-document.test.js +0 -189
- package/dist/tools/generate-document.test.js.map +0 -1
- package/dist/tools/map-review-scope.test.d.ts +0 -1
- package/dist/tools/map-review-scope.test.js +0 -204
- package/dist/tools/map-review-scope.test.js.map +0 -1
- package/dist/tools/plan-repo-governance.test.d.ts +0 -1
- package/dist/tools/plan-repo-governance.test.js +0 -237
- package/dist/tools/plan-repo-governance.test.js.map +0 -1
- package/dist/tools/structured-tools.test.d.ts +0 -1
- package/dist/tools/structured-tools.test.js +0 -459
- package/dist/tools/structured-tools.test.js.map +0 -1
- package/dist/validators/ai-disclosure.test.d.ts +0 -1
- package/dist/validators/ai-disclosure.test.js +0 -244
- package/dist/validators/ai-disclosure.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sbd-toe-resources.test.js","sourceRoot":"","sources":["../../src/resources/sbd-toe-resources.test.ts"],"names":[],"mappings":"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"}
|
package/dist/test-utils.d.ts
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import type { SnapshotPayload } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Mock de um snapshot com items vazios.
|
|
4
|
-
*/
|
|
5
|
-
export declare const emptySnapshotPayload: SnapshotPayload;
|
|
6
|
-
/**
|
|
7
|
-
* Mock de um snapshot con items comuns para testes.
|
|
8
|
-
*/
|
|
9
|
-
export declare const mockSnapshotPayload: SnapshotPayload;
|
|
10
|
-
/**
|
|
11
|
-
* Mock com campos vazios/undefined para testes de edge cases.
|
|
12
|
-
*/
|
|
13
|
-
export declare const edgeCaseSnapshotPayload: SnapshotPayload;
|
|
14
|
-
/**
|
|
15
|
-
* Mock do backend checkout de testes.
|
|
16
|
-
*/
|
|
17
|
-
export declare const mockBackendCheckout: {
|
|
18
|
-
schemaVersion: string;
|
|
19
|
-
checkedOutAt: string;
|
|
20
|
-
upstreamRepoPath: string;
|
|
21
|
-
contractFiles: {
|
|
22
|
-
docsSnapshot: string;
|
|
23
|
-
entitiesSnapshot: string;
|
|
24
|
-
docsEnrichedSnapshot: string;
|
|
25
|
-
entitiesEnrichedSnapshot: string;
|
|
26
|
-
indexSettings: string;
|
|
27
|
-
runManifest: string;
|
|
28
|
-
};
|
|
29
|
-
runManifest: {
|
|
30
|
-
runId: string;
|
|
31
|
-
generatedAt: string;
|
|
32
|
-
branch: string;
|
|
33
|
-
commitSha: string;
|
|
34
|
-
repoUrl: string;
|
|
35
|
-
};
|
|
36
|
-
indices: {
|
|
37
|
-
docs: {
|
|
38
|
-
indexName: string;
|
|
39
|
-
recordFamily: string;
|
|
40
|
-
settings: {};
|
|
41
|
-
};
|
|
42
|
-
entities: {
|
|
43
|
-
indexName: string;
|
|
44
|
-
recordFamily: string;
|
|
45
|
-
settings: {};
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Helper para criar um record normalizado mock para testes de score e intent.
|
|
51
|
-
*/
|
|
52
|
-
export declare function createMockNormalizedRecord(overrides?: Record<string, unknown>): {
|
|
53
|
-
citationId: string;
|
|
54
|
-
source: "docs";
|
|
55
|
-
indexName: string;
|
|
56
|
-
objectID: string;
|
|
57
|
-
title: string;
|
|
58
|
-
excerpt: string;
|
|
59
|
-
chapter: string;
|
|
60
|
-
section: string;
|
|
61
|
-
role: string;
|
|
62
|
-
phase: string;
|
|
63
|
-
action: string;
|
|
64
|
-
artefact: string;
|
|
65
|
-
url: string;
|
|
66
|
-
pageLabel: string;
|
|
67
|
-
documentPath: string;
|
|
68
|
-
chapterPath: string;
|
|
69
|
-
documentTitle: string;
|
|
70
|
-
tags: string[];
|
|
71
|
-
aliases_pt_en: undefined;
|
|
72
|
-
intent_topics: undefined;
|
|
73
|
-
canonical_control_ids: undefined;
|
|
74
|
-
artifact_ids: undefined;
|
|
75
|
-
authority_level: undefined;
|
|
76
|
-
algoliaRank: number;
|
|
77
|
-
localScore: number;
|
|
78
|
-
raw: {
|
|
79
|
-
objectID: string;
|
|
80
|
-
title: string;
|
|
81
|
-
content: string;
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Helper para criar um record com intent topics específicos.
|
|
86
|
-
*/
|
|
87
|
-
export declare function createMockRecordWithIntentTopics(intent: string, overrides?: Record<string, unknown>): {
|
|
88
|
-
citationId: string;
|
|
89
|
-
source: "docs";
|
|
90
|
-
indexName: string;
|
|
91
|
-
objectID: string;
|
|
92
|
-
title: string;
|
|
93
|
-
excerpt: string;
|
|
94
|
-
chapter: string;
|
|
95
|
-
section: string;
|
|
96
|
-
role: string;
|
|
97
|
-
phase: string;
|
|
98
|
-
action: string;
|
|
99
|
-
artefact: string;
|
|
100
|
-
url: string;
|
|
101
|
-
pageLabel: string;
|
|
102
|
-
documentPath: string;
|
|
103
|
-
chapterPath: string;
|
|
104
|
-
documentTitle: string;
|
|
105
|
-
tags: string[];
|
|
106
|
-
aliases_pt_en: undefined;
|
|
107
|
-
intent_topics: undefined;
|
|
108
|
-
canonical_control_ids: undefined;
|
|
109
|
-
artifact_ids: undefined;
|
|
110
|
-
authority_level: undefined;
|
|
111
|
-
algoliaRank: number;
|
|
112
|
-
localScore: number;
|
|
113
|
-
raw: {
|
|
114
|
-
objectID: string;
|
|
115
|
-
title: string;
|
|
116
|
-
content: string;
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
/**
|
|
120
|
-
* Helper para criar um record com aliases.
|
|
121
|
-
*/
|
|
122
|
-
export declare function createMockRecordWithAliases(aliases: string[], overrides?: Record<string, unknown>): {
|
|
123
|
-
citationId: string;
|
|
124
|
-
source: "docs";
|
|
125
|
-
indexName: string;
|
|
126
|
-
objectID: string;
|
|
127
|
-
title: string;
|
|
128
|
-
excerpt: string;
|
|
129
|
-
chapter: string;
|
|
130
|
-
section: string;
|
|
131
|
-
role: string;
|
|
132
|
-
phase: string;
|
|
133
|
-
action: string;
|
|
134
|
-
artefact: string;
|
|
135
|
-
url: string;
|
|
136
|
-
pageLabel: string;
|
|
137
|
-
documentPath: string;
|
|
138
|
-
chapterPath: string;
|
|
139
|
-
documentTitle: string;
|
|
140
|
-
tags: string[];
|
|
141
|
-
aliases_pt_en: undefined;
|
|
142
|
-
intent_topics: undefined;
|
|
143
|
-
canonical_control_ids: undefined;
|
|
144
|
-
artifact_ids: undefined;
|
|
145
|
-
authority_level: undefined;
|
|
146
|
-
algoliaRank: number;
|
|
147
|
-
localScore: number;
|
|
148
|
-
raw: {
|
|
149
|
-
objectID: string;
|
|
150
|
-
title: string;
|
|
151
|
-
content: string;
|
|
152
|
-
};
|
|
153
|
-
};
|
package/dist/test-utils.js
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mock de um snapshot com items vazios.
|
|
3
|
-
*/
|
|
4
|
-
export const emptySnapshotPayload = {
|
|
5
|
-
run_id: "test-run-001",
|
|
6
|
-
items: []
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Mock de um snapshot con items comuns para testes.
|
|
10
|
-
*/
|
|
11
|
-
export const mockSnapshotPayload = {
|
|
12
|
-
run_id: "test-run-001",
|
|
13
|
-
items: [
|
|
14
|
-
{
|
|
15
|
-
objectID: "doc-001",
|
|
16
|
-
title: "Como fazer bootstrap do repositório",
|
|
17
|
-
content: "Instruções para bootstrap inicial",
|
|
18
|
-
chapter_title: "Cap. 01",
|
|
19
|
-
section_title: "Bootstrap",
|
|
20
|
-
tags: ["bootstrap", "setup"],
|
|
21
|
-
aliases_pt_en: ["repository initialization", "initial setup"],
|
|
22
|
-
intent_topics: ["bootstrap"],
|
|
23
|
-
canonical_control_ids: ["REQ-001"],
|
|
24
|
-
artifact_ids: ["ART-001"],
|
|
25
|
-
authority_level: "canonical"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
objectID: "doc-002",
|
|
29
|
-
title: "Dependências de segurança",
|
|
30
|
-
content: "Gestão de dependências com SBOM e SCA",
|
|
31
|
-
chapter_title: "Cap. 05",
|
|
32
|
-
section_title: "Dependências",
|
|
33
|
-
tags: ["dependencies", "sbom", "sca"],
|
|
34
|
-
aliases_pt_en: ["dependency management", "package security"],
|
|
35
|
-
intent_topics: ["dependency_governance"],
|
|
36
|
-
canonical_control_ids: ["REQ-002"],
|
|
37
|
-
artifact_ids: ["ART-002"],
|
|
38
|
-
authority_level: "guidance"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
objectID: "doc-003",
|
|
42
|
-
title: "CI/CD Gates e Aprovações",
|
|
43
|
-
content: "Configurar gates no pipeline e aprovações de release",
|
|
44
|
-
chapter_title: "Cap. 07",
|
|
45
|
-
section_title: "CI/CD Seguro",
|
|
46
|
-
tags: ["ci/cd", "pipeline", "approval"],
|
|
47
|
-
aliases_pt_en: ["continuous integration", "release gates"],
|
|
48
|
-
intent_topics: ["ci_cd_gates"],
|
|
49
|
-
canonical_control_ids: ["REQ-003"],
|
|
50
|
-
artifact_ids: [],
|
|
51
|
-
authority_level: "canonical"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
// Record sem objectID - deve ser ignorado em enrichment
|
|
55
|
-
title: "Record sem ID",
|
|
56
|
-
content: "Não tem objectID",
|
|
57
|
-
chapter_title: "Cap. 00"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
objectID: "doc-004",
|
|
61
|
-
// Sem campos de enrichment
|
|
62
|
-
title: "Record simples",
|
|
63
|
-
content: "Sem enrichment fields"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Mock com campos vazios/undefined para testes de edge cases.
|
|
69
|
-
*/
|
|
70
|
-
export const edgeCaseSnapshotPayload = {
|
|
71
|
-
items: [
|
|
72
|
-
{
|
|
73
|
-
objectID: "edge-001",
|
|
74
|
-
title: " título com espaços ",
|
|
75
|
-
content: undefined,
|
|
76
|
-
aliases_pt_en: [] // Array vazio
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
objectID: "edge-002",
|
|
80
|
-
title: "Record com tags inválidas",
|
|
81
|
-
tags: ["", null, 123] // Valores inválidos
|
|
82
|
-
}
|
|
83
|
-
]
|
|
84
|
-
};
|
|
85
|
-
/**
|
|
86
|
-
* Mock do backend checkout de testes.
|
|
87
|
-
*/
|
|
88
|
-
export const mockBackendCheckout = {
|
|
89
|
-
schemaVersion: "0.1.0",
|
|
90
|
-
checkedOutAt: new Date().toISOString(),
|
|
91
|
-
upstreamRepoPath: "/upstream/repo",
|
|
92
|
-
contractFiles: {
|
|
93
|
-
docsSnapshot: "data/publish/docs.json",
|
|
94
|
-
entitiesSnapshot: "data/publish/entities.json",
|
|
95
|
-
docsEnrichedSnapshot: "data/publish/docs_enriched.json",
|
|
96
|
-
entitiesEnrichedSnapshot: "data/publish/entities_enriched.json",
|
|
97
|
-
indexSettings: "data/publish/index_settings.json",
|
|
98
|
-
runManifest: "data/reports/run_manifest.json"
|
|
99
|
-
},
|
|
100
|
-
runManifest: {
|
|
101
|
-
runId: "test-run-001",
|
|
102
|
-
generatedAt: "2026-03-24T10:00:00Z",
|
|
103
|
-
branch: "main",
|
|
104
|
-
commitSha: "abc123def456",
|
|
105
|
-
repoUrl: "https://github.com/test/repo"
|
|
106
|
-
},
|
|
107
|
-
indices: {
|
|
108
|
-
docs: {
|
|
109
|
-
indexName: "sbd_toe_docs_test",
|
|
110
|
-
recordFamily: "documents",
|
|
111
|
-
settings: {}
|
|
112
|
-
},
|
|
113
|
-
entities: {
|
|
114
|
-
indexName: "sbd_toe_entities_test",
|
|
115
|
-
recordFamily: "entities",
|
|
116
|
-
settings: {}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* Helper para criar um record normalizado mock para testes de score e intent.
|
|
122
|
-
*/
|
|
123
|
-
export function createMockNormalizedRecord(overrides = {}) {
|
|
124
|
-
return {
|
|
125
|
-
citationId: "D1",
|
|
126
|
-
source: "docs",
|
|
127
|
-
indexName: "test_index",
|
|
128
|
-
objectID: "test-001",
|
|
129
|
-
title: "Test Record",
|
|
130
|
-
excerpt: "This is a test excerpt",
|
|
131
|
-
chapter: "Cap. 01",
|
|
132
|
-
section: "Section 1",
|
|
133
|
-
role: "Developer",
|
|
134
|
-
phase: "Development",
|
|
135
|
-
action: "Implementation",
|
|
136
|
-
artefact: "Code",
|
|
137
|
-
url: "https://example.com/test",
|
|
138
|
-
pageLabel: "page-1",
|
|
139
|
-
documentPath: "docs/chapter-01",
|
|
140
|
-
chapterPath: "chapter-01",
|
|
141
|
-
documentTitle: "Test Document",
|
|
142
|
-
tags: ["test", "mock"],
|
|
143
|
-
aliases_pt_en: undefined,
|
|
144
|
-
intent_topics: undefined,
|
|
145
|
-
canonical_control_ids: undefined,
|
|
146
|
-
artifact_ids: undefined,
|
|
147
|
-
authority_level: undefined,
|
|
148
|
-
algoliaRank: 1,
|
|
149
|
-
localScore: 0,
|
|
150
|
-
raw: {
|
|
151
|
-
objectID: "test-001",
|
|
152
|
-
title: "Test Record",
|
|
153
|
-
content: "Test content"
|
|
154
|
-
},
|
|
155
|
-
...overrides
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Helper para criar um record com intent topics específicos.
|
|
160
|
-
*/
|
|
161
|
-
export function createMockRecordWithIntentTopics(intent, overrides = {}) {
|
|
162
|
-
return createMockNormalizedRecord({
|
|
163
|
-
intent_topics: [intent, "secondary_topic"],
|
|
164
|
-
...overrides
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Helper para criar um record com aliases.
|
|
169
|
-
*/
|
|
170
|
-
export function createMockRecordWithAliases(aliases, overrides = {}) {
|
|
171
|
-
return createMockNormalizedRecord({
|
|
172
|
-
aliases_pt_en: aliases,
|
|
173
|
-
...overrides
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=test-utils.js.map
|
package/dist/test-utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { handleGenerateDocument } from "./generate-document.js";
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
// Helpers
|
|
5
|
-
// ---------------------------------------------------------------------------
|
|
6
|
-
function call(args) {
|
|
7
|
-
return handleGenerateDocument(args);
|
|
8
|
-
}
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
// Validation
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
describe("handleGenerateDocument — validation", () => {
|
|
13
|
-
it("throws rpcError -32602 for invalid type", () => {
|
|
14
|
-
let err;
|
|
15
|
-
try {
|
|
16
|
-
call({ type: "invalid-type", riskLevel: "L1" });
|
|
17
|
-
}
|
|
18
|
-
catch (e) {
|
|
19
|
-
err = e;
|
|
20
|
-
}
|
|
21
|
-
expect(err).toBeInstanceOf(Error);
|
|
22
|
-
expect(err.rpcError?.code).toBe(-32602);
|
|
23
|
-
expect(err.message).toContain("invalid-type");
|
|
24
|
-
});
|
|
25
|
-
it("throws rpcError -32602 for invalid riskLevel", () => {
|
|
26
|
-
let err;
|
|
27
|
-
try {
|
|
28
|
-
call({ type: "checklist", riskLevel: "L4" });
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
err = e;
|
|
32
|
-
}
|
|
33
|
-
expect(err).toBeInstanceOf(Error);
|
|
34
|
-
expect(err.rpcError?.code).toBe(-32602);
|
|
35
|
-
expect(err.message).toContain("L4");
|
|
36
|
-
});
|
|
37
|
-
it("throws rpcError -32602 when type is missing", () => {
|
|
38
|
-
let err;
|
|
39
|
-
try {
|
|
40
|
-
call({ riskLevel: "L1" });
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
err = e;
|
|
44
|
-
}
|
|
45
|
-
expect(err).toBeInstanceOf(Error);
|
|
46
|
-
expect(err.rpcError?.code).toBe(-32602);
|
|
47
|
-
});
|
|
48
|
-
it("throws rpcError -32602 when riskLevel is missing", () => {
|
|
49
|
-
let err;
|
|
50
|
-
try {
|
|
51
|
-
call({ type: "checklist" });
|
|
52
|
-
}
|
|
53
|
-
catch (e) {
|
|
54
|
-
err = e;
|
|
55
|
-
}
|
|
56
|
-
expect(err).toBeInstanceOf(Error);
|
|
57
|
-
expect(err.rpcError?.code).toBe(-32602);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
// Output structure
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
describe("handleGenerateDocument — output structure", () => {
|
|
64
|
-
it("returns required fields for all 5 types at L1", () => {
|
|
65
|
-
const types = [
|
|
66
|
-
"classification-template",
|
|
67
|
-
"threat-model-template",
|
|
68
|
-
"checklist",
|
|
69
|
-
"training-plan",
|
|
70
|
-
"secure-config"
|
|
71
|
-
];
|
|
72
|
-
for (const type of types) {
|
|
73
|
-
const result = call({ type, riskLevel: "L1" });
|
|
74
|
-
expect(result.documentType).toBe(type);
|
|
75
|
-
expect(result.riskLevel).toBe("L1");
|
|
76
|
-
expect(result.sections.length).toBeGreaterThan(0);
|
|
77
|
-
expect(result.acceptanceCriteria.length).toBeGreaterThan(0);
|
|
78
|
-
expect(result.relevantBundles.length).toBeGreaterThan(0);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
it("context field is accepted but does not change output structure", () => {
|
|
82
|
-
const withContext = call({
|
|
83
|
-
type: "checklist",
|
|
84
|
-
riskLevel: "L1",
|
|
85
|
-
context: { projectName: "Test", team: "Dev" }
|
|
86
|
-
});
|
|
87
|
-
const withoutContext = call({
|
|
88
|
-
type: "checklist",
|
|
89
|
-
riskLevel: "L1"
|
|
90
|
-
});
|
|
91
|
-
expect(withContext.sections).toEqual(withoutContext.sections);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
// ---------------------------------------------------------------------------
|
|
95
|
-
// L1/L2/L3 progression
|
|
96
|
-
// ---------------------------------------------------------------------------
|
|
97
|
-
describe("handleGenerateDocument — risk level progression", () => {
|
|
98
|
-
it("L3 has more sections than L1 for classification-template", () => {
|
|
99
|
-
const l1 = call({ type: "classification-template", riskLevel: "L1" });
|
|
100
|
-
const l3 = call({ type: "classification-template", riskLevel: "L3" });
|
|
101
|
-
expect(l3.sections.length).toBeGreaterThan(l1.sections.length);
|
|
102
|
-
});
|
|
103
|
-
it("L3 has more sections than L2 for threat-model-template", () => {
|
|
104
|
-
const l2 = call({ type: "threat-model-template", riskLevel: "L2" });
|
|
105
|
-
const l3 = call({ type: "threat-model-template", riskLevel: "L3" });
|
|
106
|
-
expect(l3.sections.length).toBeGreaterThanOrEqual(l2.sections.length);
|
|
107
|
-
});
|
|
108
|
-
it("L2 has more sections than L1 for secure-config", () => {
|
|
109
|
-
const l1 = call({ type: "secure-config", riskLevel: "L1" });
|
|
110
|
-
const l2 = call({ type: "secure-config", riskLevel: "L2" });
|
|
111
|
-
expect(l2.sections.length).toBeGreaterThan(l1.sections.length);
|
|
112
|
-
});
|
|
113
|
-
it("all types produce sections at all risk levels", () => {
|
|
114
|
-
const types = [
|
|
115
|
-
"classification-template",
|
|
116
|
-
"threat-model-template",
|
|
117
|
-
"checklist",
|
|
118
|
-
"training-plan",
|
|
119
|
-
"secure-config"
|
|
120
|
-
];
|
|
121
|
-
const levels = ["L1", "L2", "L3"];
|
|
122
|
-
for (const type of types) {
|
|
123
|
-
for (const riskLevel of levels) {
|
|
124
|
-
const result = call({ type, riskLevel });
|
|
125
|
-
expect(result.sections.length).toBeGreaterThan(0);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
// ---------------------------------------------------------------------------
|
|
131
|
-
// relevantBundles
|
|
132
|
-
// ---------------------------------------------------------------------------
|
|
133
|
-
describe("handleGenerateDocument — relevantBundles", () => {
|
|
134
|
-
it("classification-template has expected bundles", () => {
|
|
135
|
-
const result = call({ type: "classification-template", riskLevel: "L1" });
|
|
136
|
-
expect(result.relevantBundles).toContain("01-classificacao-aplicacoes");
|
|
137
|
-
expect(result.relevantBundles).toContain("02-requisitos-seguranca");
|
|
138
|
-
});
|
|
139
|
-
it("threat-model-template includes 03-threat-modeling", () => {
|
|
140
|
-
const result = call({ type: "threat-model-template", riskLevel: "L2" });
|
|
141
|
-
expect(result.relevantBundles).toContain("03-threat-modeling");
|
|
142
|
-
});
|
|
143
|
-
it("secure-config includes infrastructure bundles", () => {
|
|
144
|
-
const result = call({ type: "secure-config", riskLevel: "L1" });
|
|
145
|
-
expect(result.relevantBundles).toContain("08-iac-infraestrutura");
|
|
146
|
-
expect(result.relevantBundles).toContain("09-containers-imagens");
|
|
147
|
-
});
|
|
148
|
-
it("training-plan includes 13-formacao-onboarding", () => {
|
|
149
|
-
const result = call({ type: "training-plan", riskLevel: "L1" });
|
|
150
|
-
expect(result.relevantBundles).toContain("13-formacao-onboarding");
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
// ---------------------------------------------------------------------------
|
|
154
|
-
// Section fields
|
|
155
|
-
// ---------------------------------------------------------------------------
|
|
156
|
-
describe("handleGenerateDocument — section fields", () => {
|
|
157
|
-
it("each field has name, required, and guidance", () => {
|
|
158
|
-
const result = call({ type: "checklist", riskLevel: "L2" });
|
|
159
|
-
for (const section of result.sections) {
|
|
160
|
-
expect(typeof section.name).toBe("string");
|
|
161
|
-
expect(typeof section.mandatory).toBe("boolean");
|
|
162
|
-
for (const field of section.fields) {
|
|
163
|
-
expect(typeof field.name).toBe("string");
|
|
164
|
-
expect(["mandatory", "conditional", "optional"]).toContain(field.required);
|
|
165
|
-
expect(typeof field.guidance).toBe("string");
|
|
166
|
-
expect(field.guidance.length).toBeGreaterThan(0);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
it("guidance never contains pre-filled substantive content (only instructions)", () => {
|
|
171
|
-
const types = [
|
|
172
|
-
"classification-template",
|
|
173
|
-
"threat-model-template",
|
|
174
|
-
"checklist",
|
|
175
|
-
"training-plan",
|
|
176
|
-
"secure-config"
|
|
177
|
-
];
|
|
178
|
-
for (const type of types) {
|
|
179
|
-
const result = call({ type, riskLevel: "L2" });
|
|
180
|
-
for (const section of result.sections) {
|
|
181
|
-
for (const field of section.fields) {
|
|
182
|
-
// guidance should be instructional — check it's not suspiciously long pre-filled content
|
|
183
|
-
expect(field.guidance.length).toBeLessThan(300);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
//# sourceMappingURL=generate-document.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-document.test.js","sourceRoot":"","sources":["../../src/tools/generate-document.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|