Cas de test pour createUiDefinition.json
Cet article décrit les tests exécutés avec le kit de ressources de test de modèle pour les fichiers createUiDefinition.json. Les exemples incluent les noms des tests et des exemples de code avec lesquels les tests réussissent ou échouent.
La boîte à outils inclut les cas de test pour les modèles Azure Resource Manager (modèles ARM) et les fichiers de modèles principaux nommés azuredeploy.json ou maintemplate.json. Lorsque le répertoire contient un fichier createUiDefinition.json, des tests spécifiques sont exécutés pour les contrôles d’interface utilisateur. Pour plus d’informations sur l’exécution de tests ou sur l’exécution d’un test spécifique, consultez Paramètres de test.
Le fichier createUiDefinition.json crée des contrôles d’interface utilisateur (IU) personnalisés à l’aide d’éléments et de fonctions.
Vérifier que le paramètre de modèle autorise les valeurs
Nom du test : Allowed Values Should Actually Be Allowed
Ce test vérifie que les valeurs de chaque contrôle dans createUiDefinition.json sont autorisées dans les paramètres du modèle principal. Les paramètres sont mappés par nom entre le modèle principal et le fichier createUiDefinition.json.
Le paramètre du modèle principal doit accepter les valeurs allowedValues
du contrôle. Le test vérifie également que le contrôle est référencé dans la section du fichier createUiDefinition.jsonoutputs
.
Ce test vérifie le modèle principal et le fichier createUiDefinition.json. Un exemple du fichier createUiDefinition.json est présenté après les exemples de modèles principaux.
Dans l’exemple suivant, le test échoue parce que le nom de paramètre du modèle principal combo
ne correspond pas au nom de paramètre du contrôle comboBox
.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test échoue parce que le type de paramètre du modèle principal int
n’accepte pas la valeur string
du contrôle. Et si le paramètre d’un modèle principal définit une defaultValue
, celle-ci doit être une value
valide dans les allowedValues
du contrôle.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que le nom de paramètre du modèle principal correspond pas au nom de paramètre du contrôle. Et le type de paramètre du modèle est une string
avec une defaultValue
qui est spécifiés dans les allowedValues
du contrôle.
{
"$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')]"
}
}
}
Fichier createUiDefinition.json pour cet exemple :
{
"$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]"
}
}
}
Des contrôles de sortie doivent exister
Nom du test : Controls In Outputs Must Exist
Les contrôles utilisés dans la section outputs
doivent exister dans un élément situé ailleurs dans le fichier createUiDefinition.json. Le nom référencé dans outputs
doit correspondre à un nom utilisé dans basics[]
ou steps[]
.
Dans l’exemple suivant, le test échoue.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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')]"
}
}
}
Les propriétés doivent inclure des valeurs
Nom du test : CreateUIDefinition Must Not Have Blanks
Les propriétés doivent inclure des valeurs. Les propriétés requises doivent utiliser des valeurs valides. Les propriétés facultatives qui sont vides doivent être supprimées. Le test autorise que les valeurs "basics": []
, "steps": []
ou defaultValue
soient vides.
Dans l’exemple suivant, le test échoue parce que les valeurs label
, placeholder
et toolTip
sont vides.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que les valeurs label
et toolTip
sont définies et que la valeur placeholder
a été supprimée.
{
"$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')]"
}
}
}
Utiliser un schéma et une version valides
Nom du test : CreateUIDefinition Should Have Schema
Le fichier createUiDefinition.json doit inclure une propriété $schema
et utiliser des valeurs $schema
et version
valides. Les numéros de version dans $schema
et version
doivent correspondre.
Dans l’exemple suivant, le test échoue.
{
"$schema": "https://schema.management.azure.com/schemas/0.9.9-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.9.9-preview"
}
Dans l’exemple suivant, le test réussit parce qu’il utilise les dernière valeurs $schema
et version
.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview"
}
Ne pas masquer la confirmation des informations d’identification
Nom du test : Credential Confirmation Should Not Be Hidden
Ce test vérifie que les informations d’identification sont confirmées pour Microsoft.Common.PasswordBox ou Microsoft.Compute.CredentialsCombo. La propriété hideConfirmation
doit être définie sur false
afin que la confirmation soit visible.
Dans l’exemple suivant, le test échoue parce que la valeur hideConfirmation
est 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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que la valeur hideConfirmation
est 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')]"
}
}
}
Utiliser le gestionnaire approprié
Nom du test : Handler Must Be Correct
Utilisez Microsoft.Azure.CreateUIDef
ou Microsoft.Compute.MultiVm
dans le fichier createUiDefinition.json.
Dans l’exemple suivant, le test échoue.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.",
"version": "0.1.2-preview"
}
Dans l’exemple suivant, le test réussit.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview"
}
Ne pas masquer les ressources existantes
Nom du test : HideExisting Must Be Correctly Handled
Si la valeur hideExisting
est définie sur false
ou omise, outputs
doit contenir resourceGroup
et newOrExisting
. La valeur par défaut de hideExisting
est false
.
Des exemples de types de contrôles incluant hideExisting
sont Microsoft.Storage.StorageAccountSelector, Microsoft.Network.PublicIpAddressCombo ou Microsoft.Network.VirtualNetworkCombo.
Dans l’exemple suivant, le test échoue.
{
"$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()]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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]"
}
}
}
Utiliser une emplacement dans les sorties
Nom du test : Location Should Be In Outputs
La section outputs
doit contenir un emplacement utilisant la fonction location.
Dans l’exemple suivant, le test échoue parce que outputs
n’inclut pas d’emplacement.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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()]"
}
}
}
Inclure des sorties de contrôle dans les paramètres du modèle
Nom du test : Outputs Must Be Present In Template Parameters
Le test vérifie que le fichier createUiDefinition.json inclut une section outputs
. Le test vérifie également que ces outputs
sont définies dans la section parameters
du modèle principal. Les noms doivent correspondre parce que les paramètres sont mappés par nom entre le fichier createUiDefinition.json et le modèle principal.
Ce test vérifie le modèle principal et le fichier createUiDefinition.json. Un exemple du fichier createUiDefinition.json est présenté après les exemples de modèles principaux.
Dans l’exemple suivant, le test échoue parce que modèle principal n’inclut pas le paramètre comboBox
de la section outputs
du fichier createUiDefinition.json.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que le modèle principal inclut le paramètre comboBox
.
{
"$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')]"
}
}
}
Fichier createUiDefinition.json pour cet exemple :
{
"$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()]"
}
}
}
Des paramètres sans valeur par défaut doivent exister dans les sorties
Nom du test : Parameters Without Default Must Exist In CreateUIDefinition
Dans le modèle principal, des paramètres sans valeur par défaut doivent exister dans la section outputs
du fichier createUiDefinition.json.
Ce test vérifie le modèle principal et le fichier createUiDefinition.json. Un exemple de fichier azuredeploy.jsson est présenté après les exemples du contrôle.
Dans l’exemple suivant, le test échoue parce que les outputs
du fichier createUiDefinition.json n’incluent pas le paramètre comboBox
du modèle principal.
{
"$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()]"
}
}
}
Dans l’exemple suivant, le test réussit parce que le fichier createUiDefinition.json inclut comboBox
dans les outputs
.
{
"$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()]"
}
}
}
Le fichier azuredeploy.json pour cet exemple. Le paramètre comboBox
ne doit pas nécessairement avoir une valeur par défaut.
{
"$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')]"
}
}
}
Utiliser un paramètre sécurisé avec la zone mot de passe
Nom du test : Password Textboxes Must Be Used For Password Parameters
Ce test vérifie qu’un élément Microsoft.Common.PasswordBox est défini dans les parameters
du modèle principal et le createUiDefinition.jsonoutputs
. Le type de paramètre du modèle principal pour une zone de mot de passe doit être secureString
ou secureObject
.
Ce test vérifie le modèle principal et le fichier createUiDefinition.json. Un exemple du fichier createUiDefinition.json est présenté après les exemples de modèles principaux.
Dans l’exemple suivant, le test échoue parce que le paramètre passwordBox
du modèle principal est une string
.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que le paramètre passwordBox
du modèle principal est une secureString
.
{
"$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')]"
}
}
}
Fichier createUiDefinition.json pour cet exemple :
{
"$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')]"
}
}
}
La zone de mot de passe requiert une longueur minimale
Nom du test : PasswordBoxes Must Have Min Length
Le test vérifie que l’élément Microsoft.Common.PasswordBox utilise des constraints
avec une regex
requérant au moins 12 caractères.
Dans l’exemple suivant, le test échoue parce qu’il n’y a pas de constraints
.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que la regex
requiert au moins 12 caractères.
{
"$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')]"
}
}
}
La zone de texte doit utiliser une validation
Nom du test : Textboxes Are Well Formed
Utilisez une validation avec des zones de texte pour vérifier la présence de constraints
contenant une regex
et un message
.
Dans l’exemple suivant, le test échoue.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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')]"
}
}
}
La propriété toolTip doit exister avec une valeur
Nom du test : Tooltips Should Be Present
Ce test vérifie que la propriété toolTip
existe et contient une valeur.
Dans l’exemple suivant, le test échoue.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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')]"
}
}
}
Ne pas définir de nom d’utilisateur par défaut
Nom du test : Usernames Should Not Have A Default
Le test vérifie s’il y a une defaultValue
définie pour Microsoft.Compute.UsernameTextBox.
Dans l’exemple suivant, le test échoueparce qu’une defaultValue
est fournie.
{
"$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')]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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')]"
}
}
}
Utiliser un message avec des validations
Nom du test : Validations Must Have Message
Ce test vérifie que toutes les validations
dans le fichier createUiDefinition.json incluent un message
.
Dans l’exemple suivant, le test échoue parce que la validation regex
n’a pas de 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')]"
}
}
}
Dans l’exemple suivant, le test réussit.
{
"$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')]"
}
}
}
Les tailles de machine virtuelle doivent correspondre
Nom du test : VM Sizes Must Match Template
Ce test vérifie que Microsoft.Compute.SizeSelector figure dans le createUiDefinition.jsonoutputs
et la section parameters
du modèle principal. Les paramètres du modèle principal qui spécifient une defaultValue
doivent correspondre à une valeur dans les allowedSizes
du contrôle.
Ce test vérifie le modèle principal et le fichier createUiDefinition.json. Un exemple du fichier createUiDefinition.json est présenté après les exemples de modèles principaux.
Dans l’exemple suivant, le test échoue parce que la defaultValue
du modèle principal correspond à une valeur dans 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')]"
}
}
}
Dans l’exemple suivant, le test réussit parce que la defaultValue
du modèle principal correspond à une valeur dans 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')]"
}
}
}
Fichier createUiDefinition.json pour cet exemple :
{
"$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')]"
}
}
}
Étapes suivantes
- Pour créer une interface utilisateur du portail Azure, consultez CreateUiDefinition.json pour une expérience de création d’applications managées Azure.
- Pour utiliser le bac à sable Créer une définition d’interface utilisateur, consultez Tester votre interface de portail pour Applications managées Azure.
- Pour plus d’informations sur les contrôles d’interface utilisateur, consultez Éléments CreateUiDefinition et Fonctions CreateUiDefinition.
- Pour en savoir plus sur les tests de modèle ARM, consultez Cas de test pour les modèles ARM.