Path: blob/main/src/vs/workbench/contrib/chat/test/common/annotations.test.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { MarkdownString } from '../../../../../base/common/htmlContent.js';6import { assertSnapshot } from '../../../../../base/test/common/snapshot.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';8import { IChatMarkdownContent } from '../../common/chatService.js';9import { annotateSpecialMarkdownContent, extractVulnerabilitiesFromText } from '../../common/annotations.js';1011function content(str: string): IChatMarkdownContent {12return { kind: 'markdownContent', content: new MarkdownString(str) };13}1415suite('Annotations', function () {16ensureNoDisposablesAreLeakedInTestSuite();1718suite('extractVulnerabilitiesFromText', () => {19test('single line', async () => {20const before = 'some code ';21const vulnContent = 'content with vuln';22const after = ' after';23const annotatedResult = annotateSpecialMarkdownContent([content(before), { kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] }, content(after)]);24await assertSnapshot(annotatedResult);2526const markdown = annotatedResult[0] as IChatMarkdownContent;27const result = extractVulnerabilitiesFromText(markdown.content.value);28await assertSnapshot(result);29});3031test('multiline', async () => {32const before = 'some code\nover\nmultiple lines ';33const vulnContent = 'content with vuln\nand\nnewlines';34const after = 'more code\nwith newline';35const annotatedResult = annotateSpecialMarkdownContent([content(before), { kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] }, content(after)]);36await assertSnapshot(annotatedResult);3738const markdown = annotatedResult[0] as IChatMarkdownContent;39const result = extractVulnerabilitiesFromText(markdown.content.value);40await assertSnapshot(result);41});4243test('multiple vulns', async () => {44const before = 'some code\nover\nmultiple lines ';45const vulnContent = 'content with vuln\nand\nnewlines';46const after = 'more code\nwith newline';47const annotatedResult = annotateSpecialMarkdownContent([48content(before),49{ kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] },50content(after),51{ kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] },52]);53await assertSnapshot(annotatedResult);5455const markdown = annotatedResult[0] as IChatMarkdownContent;56const result = extractVulnerabilitiesFromText(markdown.content.value);57await assertSnapshot(result);58});59});60});616263