testcases/CreateUIDefinition/CreateUIDefinition-Should-Have-Schema.test.ps1

param(
[Parameter(Mandatory=$true,Position=0)]
[PSObject]
$CreateUIDefinitionObject
)

if (-not $CreateUIDefinitionObject.'$Schema') {
    Write-Error -Message "CreateUIDefinition is missing a `$schema property" -ErrorId CreateUIDef.Must.Have.Schema
}

if ($CreateUIDefinitionObject.'$schema' -cne 'https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#') {
    Write-Error -Message "CreateUIDefintion has an incorrect schema. Schema must be https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#, and is '$($CreateUIDefinitionObject.'$schema')'" -ErrorId CreateUIDef.Incorrect.Schema
}

if (-not $CreateUIDefinitionObject.version) {
    Write-Error -Message "CreateUIDefinition is missing a version" -ErrorId CreateUIDef.Must.Have.Version
}

# Remove any preview chunk and cast the remaining portion as a version (make clearer)
$schemaVersion = $CreateUIDefinitionObject.'$Schema' -split '/' -ne '' |
    ? { 
        $str = $_
        $firstPart, $rest = $_ -split '-'
        $firstPart -as [Version] -gt '0.0' 
    } |
    Select-Object -First 1

if ($CreateUIDefinitionObject.version -ne $schemaVersion) {
    Write-Error -Message "CreateUIDefinition version ($($CreateUIDefinitionObject.version)) is different from schema version ($schemaVersion)" -ErrorId CreateUIDef.Version.Mismatch
}