@@ -527,4 +527,118 @@ function Create-SqlDataClassificationTestEnvironment ($testSuffix, $location = "
527
527
$connection.Close ()
528
528
}
529
529
}
530
+ }
531
+
532
+ <#
533
+ . SYNOPSIS
534
+ Tests enable and disable recommdations on columns in a SQL database.
535
+ #>
536
+ function Test-EnableDisableRecommendationsOnSqlDatabase
537
+ {
538
+ # Setup
539
+ $testSuffix = getAssetName
540
+ Create- SqlDataClassificationTestEnvironment $testSuffix
541
+ $params = Get-DataClassificationTestEnvironmentParameters $testSuffix
542
+
543
+ try
544
+ {
545
+ # Get recommended sensitivity labels, and verify.
546
+ $recommendations = Get-AzSqlDatabaseSensitivityRecommendation - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName
547
+ Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
548
+ Assert-AreEqual $params.serverName $recommendations.ServerName
549
+ Assert-AreEqual $params.databaseName $recommendations.DatabaseName
550
+
551
+ $recommendationsCount = ($recommendations.SensitivityLabels ).count
552
+ Assert-AreEqual 4 $recommendationsCount
553
+
554
+ $firstRecommendation = ($recommendations.SensitivityLabels )[0 ]
555
+ $firstSchemaName = $firstRecommendation.SchemaName
556
+ $firstTableName = $firstRecommendation.TableName
557
+ $firstColumnName = $firstRecommendation.ColumnName
558
+ $firstInformationType = $firstRecommendation.InformationType
559
+ $firstSensitivityLabel = $firstRecommendation.SensitivityLabel
560
+
561
+ Assert-AreEqual " dbo" $firstSchemaName
562
+ Assert-AreEqual " Persons" $firstTableName
563
+ Assert-NotNullOrEmpty $firstColumnName
564
+ Assert-NotNullOrEmpty $firstInformationType
565
+ Assert-NotNullOrEmpty $firstSensitivityLabel
566
+
567
+ $secondRecommendation = ($recommendations.SensitivityLabels )[1 ]
568
+ $secondSchemaName = $secondRecommendation.SchemaName
569
+ $secondTableName = $secondRecommendation.TableName
570
+ $secondColumnName = $secondRecommendation.ColumnName
571
+ $secondInformationType = $secondRecommendation.InformationType
572
+ $secondSensitivityLabel = $secondRecommendation.SensitivityLabel
573
+
574
+ Assert-AreEqual " dbo" $secondSchemaName
575
+ Assert-AreEqual " Persons" $secondTableName
576
+ Assert-NotNullOrEmpty $secondColumnName
577
+ Assert-NotNullOrEmpty $secondInformationType
578
+ Assert-NotNullOrEmpty $secondSensitivityLabel
579
+
580
+ # Disable first two recommdationsd, second recommdation is disabled using pipeline.
581
+ Disable-AzSqlDatabaseSensitivityRecommendation - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName - SchemaName $firstSchemaName - TableName $firstTableName - ColumnName $firstColumnName
582
+ Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Disable-AzSqlDatabaseSensitivityRecommendation - SchemaName $secondSchemaName - TableName $secondTableName - ColumnName $secondColumnName
583
+
584
+ # Get, using pipeline, recommended sensitivity labels, and verify.
585
+ $recommendations = Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
586
+ Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
587
+ Assert-AreEqual $params.serverName $recommendations.ServerName
588
+ Assert-AreEqual $params.databaseName $recommendations.DatabaseName
589
+ Assert-AreEqual 2 ($recommendations.SensitivityLabels ).count
590
+
591
+ # Verify disabled recommdations are not part of the new recommdations.
592
+ Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels )[0 ].ColumnName
593
+ Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels )[1 ].ColumnName
594
+ Assert-AreNotEqual $secondColumnName ($recommendations.SensitivityLabels )[0 ].ColumnName
595
+ Assert-AreNotEqual $secondColumnName ($recommendations.SensitivityLabels )[1 ].ColumnName
596
+
597
+ # Enable second disabled recommdation.
598
+ Enable-AzSqlDatabaseSensitivityRecommendation - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName - SchemaName $secondSchemaName - TableName $secondTableName - ColumnName $secondColumnName
599
+
600
+ # Get, using pipeline, recommended sensitivity labels, and verify.
601
+ $recommendations = Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
602
+ Assert-AreEqual 3 ($recommendations.SensitivityLabels ).count
603
+ Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
604
+ Assert-AreEqual $params.serverName $recommendations.ServerName
605
+ Assert-AreEqual $params.databaseName $recommendations.DatabaseName
606
+
607
+ # Verify disabled recommdation is not part of the new recommdations.
608
+ Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels )[0 ].ColumnName
609
+ Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels )[1 ].ColumnName
610
+ Assert-AreNotEqual $firstColumnName ($recommendations.SensitivityLabels )[2 ].ColumnName
611
+
612
+ # Disable, using pipeline, all recommended columns.
613
+ Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation | Disable-AzSqlDatabaseSensitivityRecommendation
614
+
615
+ # Verify no recommdations are retrieved since all are disabled.
616
+ $recommendations = Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
617
+ Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
618
+ Assert-AreEqual $params.serverName $recommendations.ServerName
619
+ Assert-AreEqual $params.databaseName $recommendations.DatabaseName
620
+ Assert-AreEqual 0 ($recommendations.SensitivityLabels ).count
621
+
622
+ # Enable, using pipeline, second disabled recommdation and verify
623
+ Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Enable-AzSqlDatabaseSensitivityRecommendation - SchemaName $secondSchemaName - TableName $secondTableName - ColumnName $secondColumnName
624
+
625
+ # Verify enabled recommdation is now part of the recommendations.
626
+ $recommendations = Get-AzSqlDatabase - ResourceGroupName $params.rgname - ServerName $params.serverName - DatabaseName $params.databaseName | Get-AzSqlDatabaseSensitivityRecommendation
627
+ Assert-AreEqual $params.rgname $recommendations.ResourceGroupName
628
+ Assert-AreEqual $params.serverName $recommendations.ServerName
629
+ Assert-AreEqual $params.databaseName $recommendations.DatabaseName
630
+ Assert-AreEqual 1 ($recommendations.SensitivityLabels ).count
631
+
632
+ $recommendation = ($recommendations.SensitivityLabels )[0 ]
633
+ Assert-AreEqual $secondSchemaName $recommendation.SchemaName
634
+ Assert-AreEqual $secondTableName $recommendation.TableName
635
+ Assert-AreEqual $secondColumnName $recommendation.ColumnName
636
+ Assert-NotNullOrEmpty $recommendation.InformationType
637
+ Assert-NotNullOrEmpty $recommendation.SensitivityLabel
638
+ }
639
+ finally
640
+ {
641
+ # Cleanup
642
+ Remove-DataClassificationTestEnvironment $testSuffix
643
+ }
530
644
}
0 commit comments