testcases/deploymentTemplate/DependsOn-Best-Practices.test.ps1

<#
.Synopsis
    Ensures DependsOn does not use if()
.Description
    Ensures resources with DependsOn do not use 'if' in their subexpression.
#>

param(
# The Template Object
[Parameter(Mandatory)]
[PSObject]
$TemplateObject
)

$resourcesWithDependencies = $TemplateObject.resources | 
    Find-JsonContent -Key dependsOn -Value '*' -Like

foreach ($dependentResource in $resourcesWithDependencies) {
    if ($dependentResource.DependsOn -match '^\s{0,}\[') {
        if ($dependentResource.DependsOn -like '*if(*') {
            Write-Error "Resource Dependencies must not use if()" -TargetObject $dependentResource -ErrorId "Resource.DependsOn.Conditional"    
        }
        if ($dependentResource.DependsOn -match '^\s{0,}\[\s{0,}concat\s{0,}\(') {
            Write-Error "Depends On Must not start with [concat(" -TargetObject $dependentResource -ErrorId "Resource.DependsOn.StartsWithConcat"
        }
    }
}