@@ -161,11 +161,197 @@ function Test-VulnerabilityAssessmentBaseline
161
161
}
162
162
}
163
163
164
+ <#
165
+ . SYNOPSIS
166
+ Tests for vulnerability assessment scan , scan record get and list scenarios
167
+ #>
168
+ function Test-VulnerabilityAssessmentScanRecordGetListTest
169
+ {
170
+ # Setup
171
+ $testSuffix = getAssetName
172
+ Create- VulnerabilityAssessmentTestEnvironment $testSuffix
173
+ $params = Get-SqlVulnerabilityAssessmentTestEnvironmentParameters $testSuffix
174
+
175
+ try
176
+ {
177
+ # Turn on ATP
178
+ Enable-AzSynapseSqlAdvancedThreatProtection - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - DoNotConfigureVulnerabilityAssessment
179
+
180
+ Update-AzSynapseSqlPoolVulnerabilityAssessmentSetting - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - SqlPoolName $params.sqlPoolName `
181
+ - StorageAccountName $params.storageAccountName
182
+
183
+ # Trigger scan without scan IDconvert
184
+ try
185
+ {
186
+ Start-AzSynapseSqlPoolVulnerabilityAssessmentScan - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName
187
+ }
188
+ catch
189
+ {
190
+ if ((Get-SynapseTestMode ) -eq ' Playback' )
191
+ {
192
+ # This command generated a scanId of DateTime.UtcNow.ToString("yyyyMMdd_HHmmss")
193
+ # So the recording will always fail
194
+ }
195
+ else
196
+ {
197
+ throw ;
198
+ }
199
+ }
200
+
201
+ # Trigger scan as a Job with scan ID
202
+ $scanId1 = " cmdletGetListScan"
203
+ $scanJob = Start-AzSynapseSqlPoolVulnerabilityAssessmentScan - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName - ScanId $scanId1 - AsJob
204
+ $scanJob | Wait-Job
205
+ $scanRecord1 = $scanJob | Receive-Job
206
+
207
+ # Validate the scan record that we got from the scan
208
+ Assert-AreEqual $params.rgname $scanRecord1.ResourceGroupName
209
+ Assert-AreEqual $params.workspaceName $scanRecord1.WorkspaceName
210
+ Assert-AreEqual $params.sqlPoolName $scanRecord1.SqlPoolName
211
+ Assert-AreEqual $scanId1 $scanRecord1.ScanId
212
+ Assert-AreEqual " OnDemand" $scanRecord1.TriggerType
213
+
214
+ # Validate the scan record that we got from the get scan record cmdlet
215
+ $scanRecord1FromGet = Get-AzSynapseSqlPoolVulnerabilityAssessmentScanRecord - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName - ScanId $scanId1
216
+
217
+ Assert-AreEqual $scanRecord1FromGet.ResourceGroupName $scanRecord1.ResourceGroupName
218
+ Assert-AreEqual $scanRecord1FromGet.WorkspaceName $scanRecord1.WorkspaceName
219
+ Assert-AreEqual $scanRecord1FromGet.SqlPoolName $scanRecord1.SqlPoolName
220
+ Assert-AreEqual $scanRecord1FromGet.ScanId $scanRecord1.ScanId
221
+ Assert-AreEqual $scanRecord1FromGet.TriggerType $scanRecord1.TriggerType
222
+ Assert-AreEqual $scanRecord1FromGet.State $scanRecord1.State
223
+ Assert-AreEqual $scanRecord1FromGet.StartTime $scanRecord1.StartTime
224
+ Assert-AreEqual $scanRecord1FromGet.EndTime $scanRecord1.EndTime
225
+ Assert-AreEqual $scanRecord1FromGet.Errors $scanRecord1.Errors
226
+ Assert-AreEqual $scanRecord1FromGet.ScanResultsLocationPath $scanRecord1.ScanResultsLocationPath
227
+ Assert-AreEqual $scanRecord1FromGet.NumberOfFailedSecurityChecks $scanRecord1.NumberOfFailedSecurityChecks
228
+
229
+ # Validate the scan record that we got from the get scan record cmdlet with piping
230
+ $scanRecord1FromGet = Get-AzSynapseSqlPool - ResourceGroupName $params.rgname - WorkspaceName $params.WorkspaceName - Name $params.SqlPoolName | Get-AzSynapseSqlPoolVulnerabilityAssessmentScanRecord `
231
+ - ScanId $scanId1
232
+
233
+ Assert-AreEqual $scanRecord1FromGet.ResourceGroupName $scanRecord1.ResourceGroupName
234
+ Assert-AreEqual $scanRecord1FromGet.WorkspaceName $scanRecord1.WorkspaceName
235
+ Assert-AreEqual $scanRecord1FromGet.SqlPoolName $scanRecord1.SqlPoolName
236
+ Assert-AreEqual $scanRecord1FromGet.ScanId $scanRecord1.ScanId
237
+ Assert-AreEqual $scanRecord1FromGet.TriggerType $scanRecord1.TriggerType
238
+ Assert-AreEqual $scanRecord1FromGet.State $scanRecord1.State
239
+ Assert-AreEqual $scanRecord1FromGet.StartTime $scanRecord1.StartTime
240
+ Assert-AreEqual $scanRecord1FromGet.EndTime $scanRecord1.EndTime
241
+ Assert-AreEqual $scanRecord1FromGet.Errors $scanRecord1.Errors
242
+ Assert-AreEqual $scanRecord1FromGet.ScanResultsLocationPath $scanRecord1.ScanResultsLocationPath
243
+ Assert-AreEqual $scanRecord1FromGet.NumberOfFailedSecurityChecks $scanRecord1.NumberOfFailedSecurityChecks
244
+
245
+ # Verify list scans
246
+ $excpectedScanCount = 2
247
+ $scanRecordList = Get-AzSynapseSqlPoolVulnerabilityAssessmentScanRecord - ResourceGroupName $params.rgname - WorkspaceName $params.WorkspaceName - Name $params.SqlPoolName
248
+ Assert-AreEqual $excpectedScanCount $scanRecordList.Count
249
+
250
+ $scanRecord1FromListCmdlet = $scanRecordList [$excpectedScanCount - 1 ]
251
+ Assert-AreEqual $scanRecord1FromListCmdlet.ResourceGroupName $scanRecord1.ResourceGroupName
252
+ Assert-AreEqual $scanRecord1FromListCmdlet.WorkspaceName $scanRecord1.WorkspaceName
253
+ Assert-AreEqual $scanRecord1FromListCmdlet.SqlPoolName $scanRecord1.SqlPoolName
254
+ Assert-AreEqual $scanRecord1FromListCmdlet.ScanId $scanRecord1.ScanId
255
+ Assert-AreEqual $scanRecord1FromListCmdlet.TriggerType $scanRecord1.TriggerType
256
+ Assert-AreEqual $scanRecord1FromListCmdlet.State $scanRecord1.State
257
+ Assert-AreEqual $scanRecord1FromListCmdlet.StartTime $scanRecord1.StartTime
258
+ Assert-AreEqual $scanRecord1FromListCmdlet.EndTime $scanRecord1.EndTime
259
+ Assert-AreEqual $scanRecord1FromListCmdlet.Errors $scanRecord1.Errors
260
+ Assert-AreEqual $scanRecord1FromListCmdlet.ScanResultsLocationPath $scanRecord1.ScanResultsLocationPath
261
+ Assert-AreEqual $scanRecord1FromListCmdlet.NumberOfFailedSecurityChecks $scanRecord1.NumberOfFailedSecurityChecks
262
+
263
+ # Run scan with piping
264
+ $excpectedScanCount = $excpectedScanCount + 1
265
+ Get-AzSynapseSqlPool - ResourceGroupName $params.rgname - WorkspaceName $params.WorkspaceName - Name $params.SqlPoolName `
266
+ | Start-AzSynapseSqlPoolVulnerabilityAssessmentScan - ScanId $scanId1
267
+
268
+ # Verify list scans with piping
269
+ $scanRecordList = Get-AzSynapseSqlPool - ResourceGroupName $params.rgname - WorkspaceName $params.WorkspaceName - Name $params.SqlPoolName | Get-AzSynapseSqlPoolVulnerabilityAssessmentScanRecord
270
+ Assert-AreEqual $excpectedScanCount $scanRecordList.Count
271
+
272
+ $scanRecord1FromListCmdlet = $scanRecordList [$excpectedScanCount - 1 ]
273
+ Assert-AreEqual $scanRecord1FromListCmdlet.ResourceGroupName $scanRecord1.ResourceGroupName
274
+ Assert-AreEqual $scanRecord1FromListCmdlet.WorkspaceName $scanRecord1.WorkspaceName
275
+ Assert-AreEqual $scanRecord1FromListCmdlet.SqlPoolName $scanRecord1.SqlPoolName
276
+ Assert-AreEqual $scanRecord1FromListCmdlet.ScanId $scanRecord1.ScanId
277
+ Assert-AreEqual $scanRecord1FromListCmdlet.TriggerType $scanRecord1.TriggerType
278
+ Assert-AreEqual $scanRecord1FromListCmdlet.State $scanRecord1.State
279
+ }
280
+ finally
281
+ {
282
+ # Cleanup
283
+ Remove-VulnerabilityAssessmentTestEnvironment $testSuffix
284
+ }
285
+ }
286
+
287
+ <#
288
+ . SYNOPSIS
289
+ Tests for vulnerability assessment scan Convert scenarios
290
+ #>
291
+ function Test-VulnerabilityAssessmentScanConvertTest
292
+ {
293
+ # Setup
294
+ $testSuffix = getAssetName
295
+ Create- VulnerabilityAssessmentTestEnvironment $testSuffix
296
+ $params = Get-SqlVulnerabilityAssessmentTestEnvironmentParameters $testSuffix
297
+
298
+ try
299
+ {
300
+ # Turn on ATP
301
+ Enable-AzSynapseSqlAdvancedThreatProtection - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - DoNotConfigureVulnerabilityAssessment
302
+
303
+ Update-AzSynapseSqlPoolVulnerabilityAssessmentSetting - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - SqlPoolName $params.sqlPoolName `
304
+ - StorageAccountName $params.storageAccountName
305
+
306
+ # Trigger a new scan
307
+ $scanId = " cmdletConvertScan"
308
+ Start-AzSynapseSqlPoolVulnerabilityAssessmentScan - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName - ScanId $scanId
309
+
310
+ # Convert the scan
311
+ $convertScanObject = Convert-AzSynapseSqlPoolVulnerabilityAssessmentScan - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName `
312
+ - ScanId $scanId
313
+
314
+ Assert-AreEqual $params.rgname $convertScanObject.ResourceGroupName
315
+ Assert-AreEqual $params.WorkspaceName $convertScanObject.WorkspaceName
316
+ Assert-AreEqual $params.SqlPoolName $convertScanObject.SqlPoolName
317
+ Assert-True - script { $convertScanObject.ExportedReportLocation.Contains ($scanId ) }
318
+ Assert-True - script { $convertScanObject.ExportedReportLocation.Contains ($params.storageAccountName ) }
319
+
320
+ # Convert the scan (piping scenario)
321
+ $scanId = " cmdletConvertScan1"
322
+ Start-AzSynapseSqlPoolVulnerabilityAssessmentScan - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName - ScanId $scanId
323
+
324
+ $convertScanObject = Get-AzSynapseSqlPoolVulnerabilityAssessmentScanRecord - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName `
325
+ - ScanId $scanId | Convert-AzSynapseSqlPoolVulnerabilityAssessmentScan
326
+
327
+ Assert-AreEqual $params.rgname $convertScanObject.ResourceGroupName
328
+ Assert-AreEqual $params.WorkspaceName $convertScanObject.WorkspaceName
329
+ Assert-AreEqual $params.SqlPoolName $convertScanObject.SqlPoolName
330
+ Assert-True - script { $convertScanObject.ExportedReportLocation.Contains ($scanId ) }
331
+ Assert-True - script { $convertScanObject.ExportedReportLocation.Contains ($params.storageAccountName ) }
332
+
333
+
334
+ # Clear SqlPool settings and define Workspace settings
335
+ Clear-AzSynapseSqlPoolVulnerabilityAssessmentSetting - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - SqlPoolName $params.sqlPoolName
336
+
337
+ Update-AzSynapseSqlPoolVulnerabilityAssessmentSetting - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - SqlPoolName $params.sqlPoolName `
338
+ - StorageAccountName $params.storageAccountName
339
+
340
+ # Run a scan and see that no exception is thrown
341
+ Start-AzSynapseSqlPoolVulnerabilityAssessmentScan - ResourceGroupName $params.rgname - WorkspaceName $params.workspaceName - Name $params.sqlPoolName - ScanId $scanId
342
+ }
343
+ finally
344
+ {
345
+ # Cleanup
346
+ Remove-VulnerabilityAssessmentTestEnvironment $testSuffix
347
+ }
348
+ }
349
+
164
350
<#
165
351
. SYNOPSIS
166
352
Creates the test environment needed to perform the tests
167
353
#>
168
- function Create-VulnerabilityAssessmentTestEnvironment ($testSuffix , $location = " West Central US " )
354
+ function Create-VulnerabilityAssessmentTestEnvironment ($testSuffix , $location = " North Europe " )
169
355
{
170
356
$params = Get-SqlVulnerabilityAssessmentTestEnvironmentParameters $testSuffix
171
357
Create- TestEnvironmentWithParams $params $location
0 commit comments