@@ -7,130 +7,28 @@ import assert from 'assert'
77import * as vscode from 'vscode'
88import * as sinon from 'sinon'
99import * as semver from 'semver'
10- import { DefaultCodeWhispererClient } from '../../../codewhisperer/client/codewhisperer'
11- import * as startSecurityScan from '../../../codewhisperer/commands/startSecurityScan'
12- import { SecurityPanelViewProvider } from '../../../codewhisperer/views/securityPanelViewProvider'
13- import { FakeExtensionContext } from '../../fakeExtensionContext'
14- import * as diagnosticsProvider from '../../../codewhisperer/service/diagnosticsProvider'
15- import { getTestWorkspaceFolder } from '../../../testInteg/integrationTestsUtilities'
10+ import * as startSecurityScan from '../../codewhisperer/commands/startSecurityScan'
11+ import { SecurityPanelViewProvider } from '../../codewhisperer/views/securityPanelViewProvider'
12+ import { FakeExtensionContext } from '../fakeExtensionContext'
13+ import * as diagnosticsProvider from '../../codewhisperer/service/diagnosticsProvider'
14+ import { getTestWorkspaceFolder } from '../../testInteg/integrationTestsUtilities'
1615import { join } from 'path'
17- import {
18- assertTelemetry ,
19- closeAllEditors ,
20- createTestWorkspaceFolder ,
21- getFetchStubWithResponse ,
22- toFile ,
23- } from '../../testUtil'
24- import { stub } from '../../utilities/stubber'
25- import { AWSError , HttpResponse } from 'aws-sdk'
26- import { getTestWindow } from '../../shared/vscode/window'
27- import { SeverityLevel } from '../../shared/vscode/message'
28- import { cancel } from '../../../shared/localizedText'
16+ import { assertTelemetry , closeAllEditors , getFetchStubWithResponse } from '../testUtil'
17+ import { AWSError } from 'aws-sdk'
18+ import { getTestWindow } from '../shared/vscode/window'
19+ import { SeverityLevel } from '../shared/vscode/message'
20+ import { cancel } from '../../shared/localizedText'
2921import {
3022 showScannedFilesMessage ,
3123 stopScanMessage ,
3224 CodeAnalysisScope ,
3325 projectScansLimitReached ,
34- } from '../../../codewhisperer/models/constants'
35- import * as model from '../../../codewhisperer/models/model'
36- import { CodewhispererSecurityScan } from '../../../shared/telemetry/telemetry.gen'
37- import * as errors from '../../../shared/errors'
38- import * as timeoutUtils from '../../../shared/utilities/timeoutUtils'
39- import { performanceTest } from '../../../shared/performance/performance'
40-
41- const mockCreateCodeScanResponse = {
42- $response : {
43- data : {
44- jobId : 'jobId' ,
45- status : 'Pending' ,
46- } ,
47- requestId : 'requestId' ,
48- hasNextPage : ( ) => false ,
49- error : undefined ,
50- nextPage : ( ) => undefined ,
51- redirectCount : 0 ,
52- retryCount : 0 ,
53- httpResponse : new HttpResponse ( ) ,
54- } ,
55- jobId : 'jobId' ,
56- status : 'Pending' ,
57- }
58-
59- const mockCreateUploadUrlResponse = {
60- $response : {
61- data : {
62- uploadId : 'uploadId' ,
63- uploadUrl : 'uploadUrl' ,
64- } ,
65- requestId : 'requestId' ,
66- hasNextPage : ( ) => false ,
67- error : undefined ,
68- nextPage : ( ) => undefined ,
69- redirectCount : 0 ,
70- retryCount : 0 ,
71- httpResponse : new HttpResponse ( ) ,
72- } ,
73- uploadId : 'uploadId' ,
74- uploadUrl : 'https://test.com' ,
75- }
76-
77- const mockGetCodeScanResponse = {
78- $response : {
79- data : {
80- status : 'Completed' ,
81- } ,
82- requestId : 'requestId' ,
83- hasNextPage : ( ) => false ,
84- error : undefined ,
85- nextPage : ( ) => undefined ,
86- redirectCount : 0 ,
87- retryCount : 0 ,
88- httpResponse : new HttpResponse ( ) ,
89- } ,
90- status : 'Completed' ,
91- }
92-
93- const mockCodeScanFindings = JSON . stringify ( [
94- {
95- filePath : 'workspaceFolder/python3.7-plain-sam-app/hello_world/app.py' ,
96- startLine : 1 ,
97- endLine : 1 ,
98- title : 'title' ,
99- description : {
100- text : 'text' ,
101- markdown : 'markdown' ,
102- } ,
103- detectorId : 'detectorId' ,
104- detectorName : 'detectorName' ,
105- findingId : 'findingId' ,
106- relatedVulnerabilities : [ ] ,
107- severity : 'High' ,
108- remediation : {
109- recommendation : {
110- text : 'text' ,
111- url : 'url' ,
112- } ,
113- suggestedFixes : [ ] ,
114- } ,
115- codeSnippet : [ ] ,
116- } satisfies model . RawCodeScanIssue ,
117- ] )
118-
119- const mockListCodeScanFindingsResponse = {
120- $response : {
121- data : {
122- codeScanFindings : mockCodeScanFindings ,
123- } ,
124- requestId : 'requestId' ,
125- hasNextPage : ( ) => false ,
126- error : undefined ,
127- nextPage : ( ) => undefined ,
128- redirectCount : 0 ,
129- retryCount : 0 ,
130- httpResponse : new HttpResponse ( ) ,
131- } ,
132- codeScanFindings : mockCodeScanFindings ,
133- }
26+ } from '../../codewhisperer/models/constants'
27+ import * as model from '../../codewhisperer/models/model'
28+ import { CodewhispererSecurityScan } from '../../shared/telemetry/telemetry.gen'
29+ import * as errors from '../../shared/errors'
30+ import * as timeoutUtils from '../../shared/utilities/timeoutUtils'
31+ import { createClient , mockGetCodeScanResponse } from './testUtil'
13432
13533let extensionContext : FakeExtensionContext
13634let mockSecurityPanelViewProvider : SecurityPanelViewProvider
@@ -155,15 +53,6 @@ describe('startSecurityScan', function () {
15553 after ( async function ( ) {
15654 await closeAllEditors ( )
15755 } )
158- const createClient = ( ) => {
159- const mockClient = stub ( DefaultCodeWhispererClient )
160-
161- mockClient . createCodeScan . resolves ( mockCreateCodeScanResponse )
162- mockClient . createUploadUrl . resolves ( mockCreateUploadUrlResponse )
163- mockClient . getCodeScan . resolves ( mockGetCodeScanResponse )
164- mockClient . listCodeScanFindings . resolves ( mockListCodeScanFindingsResponse )
165- return mockClient
166- }
16756
16857 const openTestFile = async ( filePath : string ) => {
16958 const doc = await vscode . workspace . openTextDocument ( filePath )
@@ -454,78 +343,3 @@ describe('startSecurityScan', function () {
454343 } as unknown as CodewhispererSecurityScan )
455344 } )
456345} )
457-
458- describe ( 'startSecurityScanPerformanceTest' , function ( ) {
459- beforeEach ( async function ( ) {
460- extensionContext = await FakeExtensionContext . create ( )
461- mockSecurityPanelViewProvider = new SecurityPanelViewProvider ( extensionContext )
462- const folder = await createTestWorkspaceFolder ( )
463- const mockFilePath = join ( folder . uri . fsPath , 'app.py' )
464- await toFile ( 'hello_world' , mockFilePath )
465- appCodePath = mockFilePath
466- editor = await openTestFile ( appCodePath )
467- await model . CodeScansState . instance . setScansEnabled ( false )
468- sinon . stub ( timeoutUtils , 'sleep' )
469- } )
470-
471- afterEach ( function ( ) {
472- sinon . restore ( )
473- } )
474-
475- after ( async function ( ) {
476- await closeAllEditors ( )
477- } )
478-
479- const createClient = ( ) => {
480- const mockClient = stub ( DefaultCodeWhispererClient )
481- mockClient . createCodeScan . resolves ( mockCreateCodeScanResponse )
482- mockClient . createUploadUrl . resolves ( mockCreateUploadUrlResponse )
483- mockClient . getCodeScan . resolves ( mockGetCodeScanResponse )
484- mockClient . listCodeScanFindings . resolves ( mockListCodeScanFindingsResponse )
485- return mockClient
486- }
487-
488- const openTestFile = async ( filePath : string ) => {
489- const doc = await vscode . workspace . openTextDocument ( filePath )
490- return await vscode . window . showTextDocument ( doc , {
491- selection : new vscode . Range ( new vscode . Position ( 0 , 0 ) , new vscode . Position ( 0 , 1 ) ) ,
492- } )
493- }
494-
495- performanceTest ( { } , 'Should calculate cpu and memory usage for file scans' , function ( ) {
496- return {
497- setup : async ( ) => {
498- getFetchStubWithResponse ( { status : 200 , statusText : 'testing stub' } )
499- const commandSpy = sinon . spy ( vscode . commands , 'executeCommand' )
500- const securityScanRenderSpy = sinon . spy ( diagnosticsProvider , 'initSecurityScanRender' )
501- await model . CodeScansState . instance . setScansEnabled ( true )
502- return { commandSpy, securityScanRenderSpy }
503- } ,
504- execute : async ( ) => {
505- await startSecurityScan . startSecurityScan (
506- mockSecurityPanelViewProvider ,
507- editor ,
508- createClient ( ) ,
509- extensionContext ,
510- CodeAnalysisScope . FILE
511- )
512- } ,
513- verify : ( {
514- commandSpy,
515- securityScanRenderSpy,
516- } : {
517- commandSpy : sinon . SinonSpy
518- securityScanRenderSpy : sinon . SinonSpy
519- } ) => {
520- assert . ok ( commandSpy . neverCalledWith ( 'workbench.action.problems.focus' ) )
521- assert . ok ( securityScanRenderSpy . calledOnce )
522- const warnings = getTestWindow ( ) . shownMessages . filter ( ( m ) => m . severity === SeverityLevel . Warning )
523- assert . strictEqual ( warnings . length , 0 )
524- assertTelemetry ( 'codewhisperer_securityScan' , {
525- codewhispererCodeScanScope : 'FILE' ,
526- passive : true ,
527- } )
528- } ,
529- }
530- } )
531- } )
0 commit comments