Skip to content

Commit 364c0de

Browse files
committed
SqlPermission: Simplify permission handling by using splatting for principal parameters
1 parent a28c2d6 commit 364c0de

File tree

2 files changed

+22
-32
lines changed

2 files changed

+22
-32
lines changed

source/Classes/020.SqlPermission.ps1

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,20 @@ class SqlPermission : SqlResourceBase
384384
$principalObject = $serverObject | Get-SqlDscRole -Name $this.Name -ErrorAction 'Stop'
385385
}
386386

387+
# Create splatting parameter for principal to avoid repeated if/else blocks
388+
$principalParameter = if ($isLogin)
389+
{
390+
@{
391+
Login = $principalObject
392+
}
393+
}
394+
else
395+
{
396+
@{
397+
ServerRole = $principalObject
398+
}
399+
}
400+
387401
# This holds each state and their permissions to be revoked.
388402
[ServerPermission[]] $permissionsToRevoke = @()
389403
[ServerPermission[]] $permissionsToGrantOrDeny = @()
@@ -486,14 +500,7 @@ class SqlPermission : SqlResourceBase
486500

487501
try
488502
{
489-
if ($isLogin)
490-
{
491-
Revoke-SqlDscServerPermission -Login $principalObject @revokeSqlDscServerPermissionParameters
492-
}
493-
else
494-
{
495-
Revoke-SqlDscServerPermission -ServerRole $principalObject @revokeSqlDscServerPermissionParameters
496-
}
503+
Revoke-SqlDscServerPermission @principalParameter @revokeSqlDscServerPermissionParameters
497504
}
498505
catch
499506
{
@@ -532,14 +539,7 @@ class SqlPermission : SqlResourceBase
532539
Force = $true
533540
}
534541

535-
if ($isLogin)
536-
{
537-
Grant-SqlDscServerPermission -Login $principalObject @grantParameters
538-
}
539-
else
540-
{
541-
Grant-SqlDscServerPermission -ServerRole $principalObject @grantParameters
542-
}
542+
Grant-SqlDscServerPermission @principalParameter @grantParameters
543543
}
544544

545545
'GrantWithGrant'
@@ -550,14 +550,7 @@ class SqlPermission : SqlResourceBase
550550
Force = $true
551551
}
552552

553-
if ($isLogin)
554-
{
555-
Grant-SqlDscServerPermission -Login $principalObject @grantParameters
556-
}
557-
else
558-
{
559-
Grant-SqlDscServerPermission -ServerRole $principalObject @grantParameters
560-
}
553+
Grant-SqlDscServerPermission @principalParameter @grantParameters
561554
}
562555

563556
'Deny'
@@ -567,14 +560,7 @@ class SqlPermission : SqlResourceBase
567560
Force = $true
568561
}
569562

570-
if ($isLogin)
571-
{
572-
Deny-SqlDscServerPermission -Login $principalObject @denyParameters
573-
}
574-
else
575-
{
576-
Deny-SqlDscServerPermission -ServerRole $principalObject @denyParameters
577-
}
563+
Deny-SqlDscServerPermission @principalParameter @denyParameters
578564
}
579565
}
580566
}

tests/Unit/Classes/SqlPermission.Tests.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,6 +1253,10 @@ Describe 'SqlPermission\Modify()' -Tag 'Modify' {
12531253
return $true
12541254
}
12551255

1256+
Mock -CommandName Test-SqlDscIsRole -MockWith {
1257+
return $false
1258+
}
1259+
12561260
Mock -CommandName Get-SqlDscLogin -MockWith {
12571261
$mockServerObject = New-Object -TypeName 'Microsoft.SqlServer.Management.Smo.Server'
12581262
$mockServerObject.InstanceName = 'NamedInstance'

0 commit comments

Comments
 (0)