Тестовые случаи для createUiDefinition.js
В этой статье описываются тесты, выполняемые набором средств тестирования шаблона для файлов createUiDefinition.json. Примеры включают тестовые имена и примеры кода, которые влияют на результат прохождения тестов (пройден или не пройден).
Набор средств включает тестовые случаи для шаблонов Azure Resource Manager (шаблонов ARM) и основные файлы шаблона — azuredeploy.json или maintemplate.json. Если в каталоге имеется файл createUiDefinition.json, в отношении элементов управления пользовательского интерфейса выполняются определенные тесты. Дополнительные сведения о выполнении тестов или какого-то определенного теста см. в разделе Параметры тестирования.
Файл createUiDefinition.json создает настраиваемые элементы управления пользовательского интерфейса с помощью элементов и функций.
Проверка допустимых значений параметра шаблона
Имя теста: Допустимые значения должны быть фактически разрешены
Данный тест проверяет, что значения для каждого элемента управления в файле createUiDefinition.json разрешены в параметрах основного шаблона. Параметры сопоставляются по имени между основным шаблоном и файлом createUiDefinition.json.
Параметр основного шаблона должен принимать значения из allowedValues
элемента управления. Данный тест также проверяет, что в разделе outputs
файла createUiDefinition.json имеется ссылка на элемент управления.
Этот тест проверяет основной шаблон и файл createUiDefinition.json. Пример файла createUiDefinition.json представлен после примеров основного шаблона.
Следующий пример не проходит тест, поскольку имя параметра combo
в основном шаблоне не соответствует имени параметра 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')]"
}
}
}
Следующий пример не проходит тест, поскольку тип параметра int
в основном шаблоне не принимает значение string
элемента управления. И если параметр основного шаблона определяет defaultValue
, это должно быть действительное value
в allowedValues
элемента управления.
{
"$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')]"
}
}
}
Следующий пример проходит тест, поскольку имя параметра в основном шаблоне соответствует имени параметра элемента управления. И тип параметра шаблона — string
с defaultValue
, которое указано в allowedValues
элемента управления.
{
"$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')]"
}
}
}
Файл createUiDefinition.json для этого примера:
{
"$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]"
}
}
}
Должны существовать элементы управления выводом
Имя теста: В выводе должны существовать элементы управления
Элементы управления, используемые в разделе outputs
, должны существовать в элементе в файле createUiDefinition.json. Имя, указанное в outputs
, должно соответствовать имени, которое используется в basics[]
или steps[]
.
Следующий пример не проходит тест.
{
"$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')]"
}
}
}
Следующий пример проходит тест.
{
"$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')]"
}
}
}
Свойства должны включать значения
Имя теста: В CreateUIDefinition не должно быть пустых значений
Свойства должны включать значения. Обязательные свойства должны использовать допустимые значения. Необязательные свойства, которые являются пустыми, должны быть удалены. Тест допускает пустое значение "basics": []
, "steps": []
или defaultValue
.
Следующий пример не проходит тест, поскольку label
, placeholder
и toolTip
имеют пустые значения.
{
"$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')]"
}
}
}
Следующий пример проходит тест, поскольку label
и toolTip
имеют значения, а параметр placeholder
удален.
{
"$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')]"
}
}
}
Использование допустимых схемы и версии
Имя теста: В CreateUIDefinition должна иметься схема
В файле createUiDefinition.json должно иметься свойство $schema
с допустимыми $schema
и version
. Номера версий в $schema
и version
должны совпадать.
Следующий пример не проходит тест.
{
"$schema": "https://schema.management.azure.com/schemas/0.9.9-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.9.9-preview"
}
Следующий пример проходит тест, поскольку в нем используются последние $schema
и version
.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview"
}
Отображение подтверждения учетных данных
Имя теста: Подтверждение учетных данных не должно быть скрыто
Этот тест проверяет, что учетные данные подтверждены для Microsoft.Common.PasswordBox или Microsoft.Compute.CredentialsCombo. Свойству hideConfirmation
должно быть присвоено значение false
, чтобы подтверждение отображалось.
Следующий пример не проходит тест, поскольку hideConfirmation
имеет значение 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')]"
}
}
}
Следующий пример проходит тест, поскольку hideConfirmation
имеет значение 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')]"
}
}
}
Использование правильного обработчика
Имя теста: Имя обработчика должно быть правильным
Используйте Microsoft.Azure.CreateUIDef
или Microsoft.Compute.MultiVm
в файле createUiDefinition.json.
Следующий пример не проходит тест.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.",
"version": "0.1.2-preview"
}
Следующий пример проходит тест.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview"
}
Отображение существующих ресурсов
Имя теста: Параметр HideExisting должен правильно обрабатываться
Если параметру hideExisting
присвоено значение false
или если он опущен, параметр outputs
должен содержать resourceGroup
и newOrExisting
. Значение hideExisting
по умолчанию — false
.
Примеры типов элементов управления, которые включают hideExisting
: Microsoft.Storage.StorageAccountSelector, Microsoft.Network.PublicIpAddressCombo и Microsoft.Network.VirtualNetworkCombo.
Следующий пример не проходит тест.
{
"$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()]"
}
}
}
Следующий пример проходит тест.
{
"$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]"
}
}
}
Использование расположения в выходных данных
Имя теста: Расположение должно быть указано в выходных данных
В разделе outputs
должно быть указано расположение с помощью функции location.
Следующий пример не проходит тест, поскольку в 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')]"
}
}
}
Следующий пример проходит тест.
{
"$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()]"
}
}
}
Включение выходных данных элемента управления в параметры шаблона
Имя теста: В параметрах шаблона должны иметься выходные данные
Тест проверяет, что в файле createUiDefinition.json имеется раздел outputs
. Тест также проверяет, что эти outputs
определены в разделе parameters
основного шаблона. Имена должны совпадать, поскольку параметры сопоставляются по имени между основным шаблоном и файлом createUiDefinition.json.
Этот тест проверяет основной шаблон и файл createUiDefinition.json. Пример файла createUiDefinition.json представлен после примеров основного шаблона.
Следующий пример не проходит тест, поскольку в основном шаблоне отсутствует параметр comboBox
из раздела outputs
файла 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')]"
}
}
}
Следующий пример проходит тест, поскольку в основном шаблоне имеется параметр 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')]"
}
}
}
Файл createUiDefinition.json для этого примера:
{
"$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()]"
}
}
}
В выходных данных должны существовать параметры без значений по умолчанию
Имя теста: В CreateUIDefinition должны существовать параметры без значений по умолчанию
Параметры в основном шаблоне, у которых нет значений по умолчанию, должны существовать в разделе outputs
файла createUiDefinition.json.
Этот тест проверяет основной шаблон и файл createUiDefinition.json. Пример файла azuredeploy.json показан после примеров элемента управления.
Следующий пример не проходит тест, поскольку в разделе outputs
файла createUiDefinition.json отсутствует параметр comboBox
, который имеется в основном шаблоне.
{
"$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()]"
}
}
}
Следующий пример проходит тест, поскольку в файле createUiDefinition.json в разделе outputs
имеется comboBox
.
{
"$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()]"
}
}
}
Файл azuredeploy.json для этого примера. Параметр comboBox
не имеет значения по умолчанию.
{
"$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')]"
}
}
}
Использование защищенных параметров с полем пароля
Имя теста: Для параметров пароля должны использоваться текстовые поля пароля
Этот тест проверяет, что в разделе parameters
основного шаблона и в разделе outputs
файла createUiDefinition.json определен элемент Microsoft.Common.PasswordBox. Тип параметра основного шаблона для поля пароля должен быть secureString
или secureObject
.
Этот тест проверяет основной шаблон и файл createUiDefinition.json. Пример файла createUiDefinition.json представлен после примеров основного шаблона.
Следующий пример не проходит тест, поскольку параметру passwordBox
в основном шаблоне присвоено значение 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')]"
}
}
}
Следующий пример проходит тест, поскольку параметру passwordBox
в основном шаблоне присвоено значение 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')]"
}
}
}
Файл createUiDefinition.json для этого примера:
{
"$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')]"
}
}
}
Требование минимальной длины для поля пароля
Имя теста: Для поля пароля должна быть задана минимальная длина
Тест проверяет, что для элемента Microsoft.Common.PasswordBox используется параметр constraints
с regex
длиной не менее 12 символов.
Следующий пример не проходит тест, поскольку отсутствует 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')]"
}
}
}
Следующий пример проходит тест, поскольку для regex
требуется не менее 12 символов.
{
"$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')]"
}
}
}
Текстовое поле должно использовать проверку
Имя теста: Текстовые поля сформированы правильно
Используйте проверку текстовых полей для проверки constraints
с regex
и 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",
"visible": true
}
],
"steps": [],
"outputs": {
"location": "[location()]",
"textBox": "[basics('textBox')]"
}
}
}
Следующий пример проходит тест.
{
"$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')]"
}
}
}
Должен иметься параметр toolTip со значением
Имя теста: Должны иметься подсказки
Этот тест проверяет, что свойство toolTip
существует и содержит значение.
Следующий пример не проходит тест.
{
"$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')]"
}
}
}
Следующий пример проходит тест.
{
"$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')]"
}
}
}
Запрет использования имен пользователей по умолчанию
Имя теста: Имена пользователей не должны иметь значения по умолчанию
Тест проверяет, задано ли для параметра Microsoft.Compute.UserNameTextBox значение defaultValue
.
Следующий пример не проходит тест, поскольку указано defaultValue
.
{
"$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')]"
}
}
}
Следующий пример проходит тест.
{
"$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')]"
}
}
}
Использование сообщения с проверками
Имя теста: Проверки должны быть с сообщениями
Тест проверяет, что любые validations
в файле createUiDefinition.json включают message
.
Следующий пример не проходит тест, поскольку проверка regex
не содержит 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')]"
}
}
}
Следующий пример проходит тест.
{
"$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')]"
}
}
}
Размеры виртуальных машин должны совпадать
Имя теста: Размеры виртуальных машин должны соответствовать шаблону
Этот тест проверяет, что в разделе outputs
в createUiDefinition.json и в разделе parameters
основного шаблона имеется Microsoft.Compute.SizeSelector. Параметры основного шаблона, задающие defaultValue
, должны соответствовать значению в allowedSizes
элемента управления.
Этот тест проверяет основной шаблон и файл createUiDefinition.json. Пример файла createUiDefinition.json представлен после примеров основного шаблона.
Следующий пример не проходит тест, поскольку значение параметра defaultValue
в основном шаблоне не соответствует значению в 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')]"
}
}
}
Следующий пример проходит тест, поскольку значение параметра defaultValue
в основном шаблоне соответствует значению в 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')]"
}
}
}
Файл createUiDefinition.json для этого примера:
{
"$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')]"
}
}
}
Следующие шаги
- Сведения о создании интерфейса портала Azure см. в статье Использование файла CreateUiDefinition.json для создания управляемого приложения Azure.
- Сведения об использовании песочницы определения создания пользовательского интерфейса см. в статье Тестирование интерфейса портала для управляемых приложений Azure.
- Дополнительные сведения об элементах управления пользовательского интерфейса см. в статьях Элементы CreateUiDefinition и Функции CreateUiDefinition.
- Подробнее о тестах шаблонов ARM см. в разделе Тестовые случаи для шаблонов ARM.