Testcases voor createUiDefinition.json

In dit artikel worden de tests beschreven die worden uitgevoerd met de sjabloontest-toolkit voor createUiDefinition.json-bestanden . De voorbeelden omvatten de testnamen en codevoorbeelden die de tests wel of niet doorstaan .

De toolkit bevat testcases voor Azure Resource Manager-sjablonen (ARM-sjablonen) en de hoofdsjabloonbestanden met de naam azuredeploy.json of maintemplate.json. Wanneer de map een createUiDefinition.json-bestand bevat, worden specifieke tests uitgevoerd voor UI-besturingselementen. Zie Testparameters voor meer informatie over het uitvoeren van tests of het uitvoeren van een specifieke test.

Het bestand createUiDefinition.json maakt aangepaste besturingselementen voor de gebruikersinterface (UI) met behulp van elementen en functies.

Controleer of de sjabloonparameter waarden toestaat

Testnaam: toegestane waarden moeten daadwerkelijk worden toegestaan

Met deze test wordt gecontroleerd of waarden voor elk besturingselement in createUiDefinition.json zijn toegestaan in de parameters van de hoofdsjabloon. De parameters worden op naam toegewezen tussen de hoofdsjabloon en het bestand createUiDefinition.json .

De parameter van de hoofdsjabloon moet de waarden van de van het besturingselement allowedValuesaccepteren. De test controleert ook of naar het besturingselement wordt verwezen in de sectie createUiDefinition.jsonoutputs .

Met deze test worden de hoofdsjabloon en het bestand createUiDefinition.json gecontroleerd. Een voorbeeld van het bestand createUiDefinition.json wordt weergegeven na de belangrijkste sjabloonvoorbeelden.

Het volgende voorbeeld mislukt omdat de parameternaam combo van de hoofdsjabloon niet overeenkomt met de parameternaam comboBoxvan het besturingselement.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "combo": {
      "type": "string",
      "defaultValue": "two"
    }
  },
  "resources": [],
  "outputs": {
    "comboBoxOutput": {
      "type": "string",
      "value": "[parameters('combo')]"
    }
  }
}

Het volgende voorbeeld mislukt omdat het parametertype int van de hoofdsjabloon de waarde van string het besturingselement niet accepteert. En als de parameter van een hoofdsjabloon een defaultValue definieert, moet deze een geldig value zijn in de van allowedValueshet besturingselement.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "int",
      "defaultValue": 4
    }
  },
  "resources": [],
  "outputs": {
    "comboBoxOutput": {
      "type": "string",
      "value": "[parameters('combo')]"
    }
  }
}

In het volgende voorbeeld wordt doorgegeven omdat de parameternaam van de hoofdsjabloon overeenkomt met de parameternaam van het besturingselement. En het parametertype van de sjabloon is een string met een defaultValue die is opgegeven in de van allowedValueshet besturingselement .

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "string",
      "defaultValue": "two"
    }
  },
  "resources": [],
  "outputs": {
    "comboBoxOutput": {
      "type": "string",
      "value": "[parameters('comboBox')]"
    }
  }
}

Het bestand createUiDefinition.json voor dit voorbeeld:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [],
    "steps": [
      {
        "name": "demoComboBox",
        "label": "demoComboBoxLabel",
        "elements": [
          {
            "name": "comboBox",
            "type": "Microsoft.Common.DropDown",
            "label": "Example drop down",
            "defaultValue": "Value two",
            "toolTip": "This is a tool tip",
            "constraints": {
              "allowedValues": [
                {
                  "label": "Value one",
                  "description": "The value to select for option 1.",
                  "value": "one"
                },
                {
                  "label": "Value two",
                  "description": "The value to select for option 2.",
                  "value": "two"
                }
              ],
              "required": true
            },
            "visible": true
          }
        ]
      }
    ],
    "outputs": {
      "comboBox": "[steps('demoComboBox').comboBox]"
    }
  }
}

Uitvoerbesturingselementen moeten bestaan

Testnaam: besturingselementen in uitvoer moeten bestaan

Besturingselementen die in de outputs sectie worden gebruikt, moeten aanwezig zijn in een element elders in createUiDefinition.json. De naam waarnaar wordt verwezen in outputs moet overeenkomen met een naam die wordt gebruikt in basics[] of steps[].

Het volgende voorbeeld mislukt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "nameDoesNotMatchOutput",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

Eigenschappen moeten waarden bevatten

Testnaam: CreateUIDefinition mag geen lege waarden bevatten

Eigenschappen moeten waarden bevatten. Vereiste eigenschappen moeten geldige waarden gebruiken. Optionele eigenschappen die leeg zijn, moeten worden verwijderd. De test staat lege "basics": [], "steps": []of defaultValue.

Het volgende voorbeeld mislukt omdat label, placeholderen toolTip leeg zijn.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "",
        "placeholder": "",
        "defaultValue": "",
        "toolTip": ""
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

In het volgende voorbeeld wordt doorgegeven omdat label en toolTip waarden hebben, en placeholder is verwijderd.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "defaultValue": "",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

Geldig schema en geldige versie gebruiken

Testnaam: CreateUIDefinition should have Schema

Het bestand createUiDefinition.json moet een $schema eigenschap bevatten en een geldige $schema en versiongebruiken. De versienummers in $schema en version moeten overeenkomen.

Het volgende voorbeeld mislukt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.9.9-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.9.9-preview"
}

Het volgende voorbeeld wordt doorgegeven omdat de meest recente $schema en versionworden gebruikt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview"
}

Referentiebevestiging niet verbergen

Testnaam: referentiebevestiging mag niet worden verborgen

Deze test controleert of referenties zijn bevestigd voor Microsoft.Common.PasswordBox of Microsoft.Compute.CredentialsCombo. De hideConfirmation eigenschap moet worden ingesteld op false zodat de bevestiging zichtbaar is.

Het volgende voorbeeld mislukt omdat hideConfirmation is true.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "credentials",
        "type": "Microsoft.Compute.CredentialsCombo",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": {
          "password": "Type your credentials"
        },
        "constraints": {
          "required": true,
          "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{12,}$",
          "customValidationMessage": "The password must be alphanumeric, contain at least 12 characters, and have at least 1 letter and 1 number."
        },
        "options": {
          "hideConfirmation": true
        },
        "osPlatform": "Windows",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "credentials": "[basics('credentials')]"
    }
  }
}

In het volgende voorbeeld wordt doorgegeven omdat hideConfirmation is false.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "credentials",
        "type": "Microsoft.Compute.CredentialsCombo",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": {
          "password": "Type your credentials"
        },
        "constraints": {
          "required": true,
          "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{12,}$",
          "customValidationMessage": "The password must be alphanumeric, contain at least 12 characters, and have at least 1 letter and 1 number."
        },
        "options": {
          "hideConfirmation": false
        },
        "osPlatform": "Windows",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "credentials": "[basics('credentials')]"
    }
  }
}

De juiste handler gebruiken

Testnaam: Handler moet juist zijn

Gebruik Microsoft.Azure.CreateUIDef of Microsoft.Compute.MultiVm in het bestand createUiDefinition.json .

Het volgende voorbeeld mislukt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.",
  "version": "0.1.2-preview"
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview"
}

Bestaande resources niet verbergen

Testnaam: HideExisting moet correct worden verwerkt

Als hideExisting is ingesteld op false of weggelaten, outputs moet en newOrExistingbevattenresourceGroup. De standaardwaarde voor hideExisting is false.

Voorbeelden van besturingstypen die microsoft.storage.storageaccountselector, Microsoft.Network.PublicIpAddressCombo of Microsoft.Network.VirtualNetworkCombo bevattenhideExisting.

Het volgende voorbeeld mislukt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "storage",
        "type": "Microsoft.Storage.StorageAccountSelector",
        "label": "Storage account",
        "toolTip": "This is a demo storage account",
        "defaultValue": {
          "name": "storageaccount01",
          "type": "Premium_LRS"
        },
        "options": {
          "hideExisting": false
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "storage",
        "type": "Microsoft.Storage.StorageAccountSelector",
        "label": "Storage account",
        "toolTip": "This is a demo storage account",
        "defaultValue": {
          "name": "storageaccount01",
          "type": "Premium_LRS"
        },
        "options": {
          "hideExisting": false
        },
        "visible": false
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "resourceGroup": "[basics('storage').resourceGroup]",
      "newOrExisting": "[basics('storage').newOrExisting]"
    }
  }
}

Locatie in uitvoer gebruiken

Testnaam: locatie moet in uitvoer zijn

De outputs sectie moet een locatie bevatten met behulp van de locatiefunctie .

Het volgende voorbeeld mislukt omdat outputs er geen locatie is.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]",
      "location": "[location()]"
    }
  }
}

Uitvoer van besturingselementen opnemen in sjabloonparameters

Testnaam: uitvoer moet aanwezig zijn in sjabloonparameters

De test controleert of createUiDefinition.json een outputs sectie bevat. De test controleert ook of deze outputs zijn gedefinieerd in de sectie van parameters de hoofdsjabloon. De namen moeten overeenkomen omdat parameters zijn toegewezen op naam tussen de createUiDefinition.json en de hoofdsjabloon.

Met deze test worden de hoofdsjabloon en het bestand createUiDefinition.json gecontroleerd. Een voorbeeld van het bestand createUiDefinition.json wordt weergegeven na de belangrijkste sjabloonvoorbeelden.

Het volgende voorbeeld mislukt omdat de hoofdsjabloon de parameter uit de comboBox sectie createUiDefinition.jsonoutputs niet bevat.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven omdat de hoofdsjabloon de comboBox parameter bevat.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "string",
      "defaultValue": "two"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [],
  "outputs": {
    "comboBox": {
      "type": "string",
      "value": "[parameters('comboBox')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

Het bestand createUiDefinition.json voor dit voorbeeld:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]",
      "location": "[location()]"
    }
  }
}

Parameters zonder standaard moeten aanwezig zijn in uitvoer

Testnaam: Parameters zonder standaard moeten bestaan in CreateUIDefinition

Parameters in de hoofdsjabloon zonder standaardwaarde moeten aanwezig zijn in de sectie createUiDefinition.jsonoutputs.

Met deze test worden de hoofdsjabloon en het bestand createUiDefinition.json gecontroleerd. Een voorbeeld van het bestand azuredeploy.json wordt weergegeven na de voorbeelden van het besturingselement.

Het volgende voorbeeld mislukt omdat het bestand outputscreateUiDefinition.json de parameter comboBoxvan de hoofdsjabloon niet bevat.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]"
    }
  }
}

In het volgende voorbeeld wordt doorgegeven omdat createUiDefinition.json de comboBox in outputsbevat.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]",
      "location": "[location()]"
    }
  }
}

Het bestand azuredeploy.json voor dit voorbeeld. De comboBox parameter heeft geen standaardwaarde.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "string"
    },
    "location": {
      "type": "string"
    }
  },
  "resources": [],
  "outputs": {
    "comboBox": {
      "type": "string",
      "value": "[parameters('comboBox')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

Het vak Veilige parameter met wachtwoord gebruiken

Testnaam: Wachtwoordtekstvakken moeten worden gebruikt voor wachtwoordparameters

Deze test controleert of een Microsoft.Common.PasswordBox-element is gedefinieerd in de hoofdsjabloon parameters en de createUiDefinition.jsonoutputs. Het parametertype van de hoofdsjabloon voor een wachtwoordvak moet of secureObjectzijnsecureString.

Met deze test worden de hoofdsjabloon en het bestand createUiDefinition.json gecontroleerd. Een voorbeeld van het bestand createUiDefinition.json wordt weergegeven na de belangrijkste sjabloonvoorbeelden.

Het volgende voorbeeld mislukt omdat de parameter van passwordBox de hoofdsjabloon een stringis.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "passwordBox": {
      "type": "string"
    },
    "location": {
      "type": "string"
    }
  },
  "resources": [],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

In het volgende voorbeeld wordt doorgegeven omdat de parameter van passwordBox de hoofdsjabloon een secureStringis.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "passwordBox": {
      "type": "secureString"
    },
    "location": {
      "type": "string"
    }
  },
  "resources": [],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

Het bestand createUiDefinition.json voor dit voorbeeld:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "passwordBox",
        "type": "Microsoft.Common.PasswordBox",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": "Type a password"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "passwordBox": "[basics('passwordBox')]"
    }
  }
}

Wachtwoordvak vereist minimale lengte

Testnaam: PasswordBoxes moeten een minimale lengte hebben

De test controleert of het element Microsoft.Common.PasswordBox wordt gebruikt constraints met een regex die ten minste 12 tekens vereist.

Het volgende voorbeeld mislukt omdat er geen constraintszijn.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "passwordBox",
        "type": "Microsoft.Common.PasswordBox",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": "Type a password"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "passwordBox": "[basics('passwordBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven omdat de regex minimaal 12 tekens vereist.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "passwordBox",
        "type": "Microsoft.Common.PasswordBox",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": "Type a password",
        "constraints": {
          "required": true,
          "regex": "^[a-zA-Z0-9]{12,}$",
          "validationMessage": "Password must be at least 12 characters long, contain only numbers and letters"
        }
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "passwordBox": "[basics('passwordBox')]"
    }
  }
}

Voor het tekstvak moet validatie worden gebruikt

Testnaam: Tekstvakken zijn goed gevormd

Gebruik validatie met tekstvakken om te controleren of constraints deze een regex en messagebevatten.

Het volgende voorbeeld mislukt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "constraints": {
          "required": true,
          "validations": [
            {
              "regex": "^[a-z0-9A-Z]{1,30}$",
              "message": "Only 1-30 characters alphanumeric characters are allowed."
            }
          ]
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

knopinfo moet bestaan met een waarde

Testnaam: knopinfo moet aanwezig zijn

Met deze test wordt gecontroleerd of de toolTip eigenschap bestaat en een waarde bevat.

Het volgende voorbeeld mislukt.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": ""
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "comboBox": "[basics('comboBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "comboBox": "[basics('comboBox')]"
    }
  }
}

Geen standaardgebruikersnaam instellen

Testnaam: Gebruikersnamen mogen geen standaardwaarde hebben

Tijdens de test wordt gecontroleerd of er een defaultValue set is voor Microsoft.Compute.UserNameTextBox.

Het volgende voorbeeld mislukt omdat er een defaultValue is opgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "userNameBox",
        "type": "Microsoft.Compute.UserNameTextBox",
        "label": "User name",
        "defaultValue": "admin",
        "toolTip": "Enter your user name",
        "osPlatform": "Windows"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "userNameBox": "[basics('userNameBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "userNameBox",
        "type": "Microsoft.Compute.UserNameTextBox",
        "label": "User name",
        "toolTip": "Enter your user name",
        "osPlatform": "Windows"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "userNameBox": "[basics('userNameBox')]"
    }
  }
}

Bericht gebruiken met validaties

Testnaam: validaties moeten bericht bevatten

Met deze test wordt gecontroleerd of alle validations in createUiDefinition.json een messagebevatten.

Het volgende voorbeeld mislukt omdat de regex validatie geen heeft.message

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "constraints": {
          "required": true,
          "validations": [
            {
              "regex": "^[a-z0-9A-Z]{1,30}$"
            }
          ]
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

Het volgende voorbeeld wordt doorgegeven.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "constraints": {
          "required": true,
          "validations": [
            {
              "regex": "^[a-z0-9A-Z]{1,30}$",
              "message": "Only 1-30 characters alphanumeric characters are allowed."
            }
          ]
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

De grootte van de virtuele machine moet overeenkomen

Testnaam: VM-grootten moeten overeenkomen met sjabloon

Met deze test wordt gecontroleerd of de Microsoft.Compute.SizeSelector zich in de sectie createUiDefinition.jsonoutputs en de sectie van parameters de hoofdsjabloon bevindt. Hoofdsjabloonparameters die een defaultValue opgeven, moeten overeenkomen met een waarde in de van het besturingselement allowedSizes.

Met deze test worden de hoofdsjabloon en het bestand createUiDefinition.json gecontroleerd. Een voorbeeld van het bestand createUiDefinition.json wordt weergegeven na de belangrijkste sjabloonvoorbeelden.

Het volgende voorbeeld mislukt omdat de hoofdsjabloon defaultValue niet overeenkomt met een waarde in allowedSizes.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string"
    },
    "vmSize": {
      "type": "string",
      "defaultValue": "Standard_D9"
    }
  },
  "resources": [],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "vmSize": {
      "type": "string",
      "value": "[parameters('vmSize')]"
    }
  }
}

In het volgende voorbeeld wordt doorgegeven omdat de hoofdsjabloon defaultValue overeenkomt met een waarde in allowedSizes.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string"
    },
    "vmSize": {
      "type": "string",
      "defaultValue": "Standard_D3"
    }
  },
  "resources": [],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "vmSize": {
      "type": "string",
      "value": "[parameters('vmSize')]"
    }
  }
}

Het bestand createUiDefinition.json voor dit voorbeeld:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "vmSize",
        "type": "Microsoft.Compute.SizeSelector",
        "label": "VM Size",
        "toolTip": "Select a virtual machine size",
        "recommendedSizes": [
          "Standard_D1"
        ],
        "constraints": {
          "allowedSizes": [
            "Standard_D1",
            "Standard_D2",
            "Standard_D3"
          ]
        },
        "osPlatform": "Windows",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "vmSize": "[basics('vmSize')]"
    }
  }
}

Volgende stappen