Przypadki testowe dla pliku createUiDefinition.json
W tym artykule opisano testy uruchamiane przy użyciu zestawu narzędzi do testowania szablonu dla plików createUiDefinition.json . Przykłady obejmują nazwy testów i przykłady kodu, które kończą się powodzeniem lub niepowodzeniem testów.
Zestaw narzędzi zawiera przypadki testowe szablonów usługi Azure Resource Manager (szablony usługi ARM) oraz główne pliki szablonów o nazwie azuredeploy.json lub maintemplate.json. Gdy katalog zawiera plik createUiDefinition.json , określone testy są uruchamiane dla kontrolek interfejsu użytkownika. Aby uzyskać więcej informacji na temat uruchamiania testów lub uruchamiania określonego testu, zobacz Parametry testu.
Plik createUiDefinition.json tworzy niestandardowe kontrolki interfejsu użytkownika (UI) przy użyciu elementów i funkcji.
Sprawdzanie, czy parametr szablonu zezwala na wartości
Nazwa testu: dozwolone wartości powinny być dozwolone
Ten test sprawdza, czy wartości dla każdej kontrolki w pliku createUiDefinition.json są dozwolone w parametrach szablonu głównego. Parametry są mapowane według nazwy między głównym szablonem a plikiem createUiDefinition.json .
Parametr szablonu głównego musi akceptować wartości z kontrolki allowedValues
. Test sprawdza również, czy kontrolka jest przywołyana w sekcji createUiDefinition.jsonoutputs
.
Ten test sprawdza główny szablon i plik createUiDefinition.json . Przykładowy plik createUiDefinition.json jest wyświetlany po głównych przykładach szablonów.
Poniższy przykład kończy się niepowodzeniem , ponieważ nazwa combo
parametru głównego szablonu jest niezgodna z nazwą comboBox
parametru kontrolki .
{
"$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')]"
}
}
}
Poniższy przykład kończy się niepowodzeniem , ponieważ typ int
parametru szablonu głównego nie akceptuje wartości kontrolki string
. A jeśli parametr szablonu głównego definiuje parametr defaultValue
, musi być prawidłowy value
w kontrolce 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')]"
}
}
}
Poniższy przykład przechodzi, ponieważ nazwa parametru szablonu głównego jest zgodna z nazwą parametru kontrolki. Typ parametru szablonu jest string
elementem z wartością defaultValue
określoną w kontrolce 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')]"
}
}
}
Plik createUiDefinition.json dla tego przykładu:
{
"$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]"
}
}
}
Kontrolki wyjściowe muszą istnieć
Nazwa testu: kontrolki w danych wyjściowych muszą istnieć
Kontrolki używane w outputs
sekcji muszą istnieć w elememencie w innym miejscu w pliku createUiDefinition.json. Nazwa, do którego się odwołujesz outputs
, musi być zgodna z nazwą używaną w elemencie basics[]
lub steps[]
.
Poniższy przykład kończy się niepowodzeniem.
{
"$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')]"
}
}
}
Poniższy przykład przekazuje.
{
"$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')]"
}
}
}
Właściwości muszą zawierać wartości
Nazwa testu: CreateUIDefinition nie może zawierać wartości pustych
Właściwości muszą zawierać wartości. Wymagane właściwości muszą używać prawidłowych wartości. Opcjonalne właściwości, które są puste, powinny zostać usunięte. Test umożliwia użycie pustego "basics": []
elementu , "steps": []
lub defaultValue
.
Poniższy przykład kończy się niepowodzeniem , ponieważ label
wartości , placeholder
i toolTip
są puste.
{
"$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')]"
}
}
}
Poniższy przykład przekazuje dane , ponieważ label
i toolTip
mają wartości i placeholder
zostały usunięte.
{
"$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')]"
}
}
}
Użyj prawidłowego schematu i wersji
Nazwa testu: CreateUIDefinition powinien mieć schemat
Plik createUiDefinition.json musi zawierać $schema
właściwość i używać prawidłowej wartości $schema
i version
. Numery wersji w $schema
pliku i version
muszą być zgodne.
Poniższy przykład kończy się niepowodzeniem.
{
"$schema": "https://schema.management.azure.com/schemas/0.9.9-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.9.9-preview"
}
Poniższy przykład przekazuje kod , ponieważ używa najnowszych $schema
elementów i version
.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview"
}
Nie ukrywaj potwierdzenia poświadczeń
Nazwa testu: Potwierdzenie poświadczeń nie powinno być ukryte
Ten test sprawdza, czy poświadczenia są potwierdzane dla microsoft.Common.PasswordBox lub Microsoft.Compute.CredentialsCombo. Właściwość powinna być ustawiona hideConfirmation
na false
wartość , aby potwierdzenie było widoczne.
Poniższy przykład kończy się niepowodzeniem z powodu hideConfirmation
błędu .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')]"
}
}
}
Poniższy przykład przekazuje element , ponieważ hideConfirmation
ma wartość 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')]"
}
}
}
Używanie poprawnej procedury obsługi
Nazwa testu: Program obsługi musi być poprawny
Użyj polecenia Microsoft.Azure.CreateUIDef
lub Microsoft.Compute.MultiVm
w pliku createUiDefinition.json .
Poniższy przykład kończy się niepowodzeniem.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.",
"version": "0.1.2-preview"
}
Poniższy przykład przekazuje.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview"
}
Nie ukrywaj istniejących zasobów
Nazwa testu: HideExisting musi być poprawnie obsłużony
Jeśli hideExisting
parametr jest ustawiony na false
wartość lub pominięty, outputs
musi zawierać resourceGroup
wartości i newOrExisting
. Wartość domyślna to hideExisting
false
.
Przykłady typów kontrolek, które obejmują hideExisting
: Microsoft.Storage.StorageAccountSelector, Microsoft.Network.PublicIpAddressCombo lub Microsoft.Network.VirtualNetworkCombo.
Poniższy przykład kończy się niepowodzeniem.
{
"$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()]"
}
}
}
Poniższy przykład przekazuje.
{
"$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]"
}
}
}
Używanie lokalizacji w danych wyjściowych
Nazwa testu: lokalizacja powinna znajdować się w danych wyjściowych
Sekcja outputs
powinna zawierać lokalizację przy użyciu funkcji location .
Poniższy przykład kończy się niepowodzeniem , ponieważ outputs
nie zawiera lokalizacji.
{
"$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')]"
}
}
}
Poniższy przykład przekazuje.
{
"$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()]"
}
}
}
Uwzględnij dane wyjściowe kontrolki w parametrach szablonu
Nazwa testu: dane wyjściowe muszą być obecne w parametrach szablonu
Test sprawdza, czy plik createUiDefinition.json zawiera sekcję outputs
. Test sprawdza również, czy są one outputs
zdefiniowane w sekcji głównego szablonu parameters
. Nazwy muszą być zgodne, ponieważ parametry są mapowane według nazwy między plikiem createUiDefinition.json i głównym szablonem.
Ten test sprawdza główny szablon i plik createUiDefinition.json . Przykładowy plik createUiDefinition.json jest wyświetlany po głównych przykładach szablonów.
Poniższy przykład kończy się niepowodzeniem, ponieważ główny szablon nie zawiera parametru comboBox
z sekcji pliku 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')]"
}
}
}
Poniższy przykład przekazuje, ponieważ główny szablon zawiera comboBox
parametr .
{
"$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')]"
}
}
}
Plik createUiDefinition.json dla tego przykładu:
{
"$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()]"
}
}
}
Parametry bez wartości domyślnej muszą istnieć w danych wyjściowych
Nazwa testu: parametry bez wartości domyślnej muszą istnieć w parametrach CreateUIDefinition
Parametry w głównym szablonie bez wartości domyślnej muszą istnieć w sekcji pliku outputs
createUiDefinition.json.
Ten test sprawdza główny szablon i plik createUiDefinition.json . Przykładowy plik azuredeploy.json jest wyświetlany po przykładach kontrolki.
Poniższy przykład kończy się niepowodzeniem, ponieważ plik outputs
createUiDefinition.json nie zawiera parametru comboBox
głównego szablonu .
{
"$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()]"
}
}
}
Poniższy przykład przekazuje element , ponieważ plik createUiDefinition.json zawiera element comboBox
w pliku 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()]"
}
}
}
W tym przykładzie plik azuredeploy.json . Parametr comboBox
nie ma wartości domyślnej.
{
"$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')]"
}
}
}
Używanie bezpiecznego parametru z polem hasła
Nazwa testu: Pola tekstowe haseł muszą być używane dla parametrów hasła
Ten test sprawdza, czy element Microsoft.Common.PasswordBox jest zdefiniowany w szablonach parameters
głównych i pliku createUiDefinition.jsonoutputs
. Typ parametru szablonu głównego dla pola hasła musi mieć secureString
wartość lub secureObject
.
Ten test sprawdza główny szablon i plik createUiDefinition.json . Przykładowy plik createUiDefinition.json jest wyświetlany po głównych przykładach szablonów.
Poniższy przykład kończy się niepowodzeniem , ponieważ parametr głównego szablonu passwordBox
to 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')]"
}
}
}
Poniższy przykład przekazuje element , ponieważ parametr głównego szablonu passwordBox
to 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')]"
}
}
}
Plik createUiDefinition.json dla tego przykładu:
{
"$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')]"
}
}
}
Pole hasła wymaga minimalnej długości
Nazwa testu: PasswordBoxes musi mieć minimalną długość
Test sprawdza, czy element Microsoft.Common.PasswordBox używa elementu constraints
z znakiem regex
, który wymaga co najmniej 12 znaków.
Poniższy przykład kończy się niepowodzeniem , ponieważ nie ma constraints
pliku .
{
"$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')]"
}
}
}
Poniższy przykład przechodzi, ponieważ wymaga regex
co najmniej 12 znaków.
{
"$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')]"
}
}
}
Pole tekstowe musi używać walidacji
Nazwa testu: pola tekstowe są dobrze sformułowane
Użyj walidacji z polami tekstowymi, aby sprawdzić, czy constraints
zawierają element regex
i message
.
Poniższy przykład kończy się niepowodzeniem.
{
"$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')]"
}
}
}
Poniższy przykład przechodzi.
{
"$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')]"
}
}
}
etykietka narzędzia musi istnieć z wartością
Nazwa testu: Etykietki narzędzi powinny być obecne
Ten test sprawdza, czy toolTip
właściwość istnieje i zawiera wartość.
Poniższy przykład kończy się niepowodzeniem.
{
"$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')]"
}
}
}
Poniższy przykład przechodzi.
{
"$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')]"
}
}
}
Nie ustawiaj domyślnej nazwy użytkownika
Nazwa testu: Nazwy użytkowników nie powinny mieć wartości domyślnej
Test sprawdza, czy istnieje defaultValue
zestaw dla elementu Microsoft.Compute.UserNameTextBox.
Poniższy przykład kończy się niepowodzeniem , ponieważ podano element 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')]"
}
}
}
Poniższy przykład przechodzi.
{
"$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')]"
}
}
}
Używanie komunikatu z walidacjami
Nazwa testu: Walidacje muszą mieć komunikat
Ten test sprawdza, czy dowolny validations
element w pliku createUiDefinition.json zawiera element message
.
Poniższy przykład kończy się niepowodzeniem, ponieważ walidacja regex
nie ma .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')]"
}
}
}
Poniższy przykład przechodzi.
{
"$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')]"
}
}
}
Rozmiary maszyn wirtualnych muszą być zgodne
Nazwa testu: Rozmiary maszyn wirtualnych muszą być zgodne z szablonem
Ten test sprawdza, czy plik Microsoft.Compute.SizeSelector znajduje się w pliku createUiDefinition.jsonoutputs
i sekcji głównego szablonu parameters
. Główne parametry szablonu, które określają defaultValue
wartość musi być zgodna z wartością w kontrolce allowedSizes
.
Ten test sprawdza główny szablon i plik createUiDefinition.json . Przykład pliku createUiDefinition.json jest wyświetlany po przykładach głównego szablonu.
Poniższy przykład kończy się niepowodzeniem, ponieważ szablon defaultValue
główny nie jest zgodny z wartością w elemecie 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')]"
}
}
}
Poniższy przykład przechodzi, ponieważ szablon defaultValue
główny pasuje do wartości w pliku 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')]"
}
}
}
Plik createUiDefinition.json dla tego przykładu:
{
"$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')]"
}
}
}
Następne kroki
- Aby utworzyć interfejs użytkownika Azure Portal, zobacz CreateUiDefinition.json dla środowiska tworzenia aplikacji zarządzanej platformy Azure.
- Aby użyć piaskownicy tworzenia definicji interfejsu użytkownika, zobacz Testowanie interfejsu portalu dla aplikacji zarządzanych platformy Azure.
- Aby uzyskać więcej informacji na temat kontrolek interfejsu użytkownika, zobacz CreateUiDefinition elements and CreateUiDefinition functions (Funkcje CreateUiDefinition).
- Aby dowiedzieć się więcej na temat testów szablonów usługi ARM, zobacz Przypadki testowe szablonów usługi ARM.