Przypadki testowe dla 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 przechodzą testy lub kończą się niepowodzeniem.
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 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 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łyowana 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 nie jest zgodna 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 głównego szablonu nie akceptuje wartości kontrolki string
. A jeśli parametr szablonu głównego definiuje, 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 przekazuje dane, ponieważ nazwa parametru szablonu głównego jest zgodna z nazwą parametru kontrolki. A typ parametru szablonu jest string
elementem, który defaultValue
jest określony 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 elemecie w innym miejscu w createUiDefinition.json. Nazwa, do którego się odwołuje, 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, należy usunąć. Test zezwala na puste "basics": []
wartości , "steps": []
lub defaultValue
.
Poniższy przykład kończy się niepowodzeniem , ponieważ label
, 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żyć prawidłowego $schema
elementu 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 jest przekazywana , 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 elementu Microsoft.Common.PasswordBox lub Microsoft.Compute.CredentialsCombo. Właściwość powinna być ustawiona hideConfirmation
na false
tak, 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żyj poprawnej procedury obsługi
Nazwa testu: Program obsługi musi być poprawny
Użyj 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żona
Jeśli hideExisting
jest ustawiona wartość false
lub pominięta, 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ę używającą 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 createUiDefinition.json zawiera sekcję outputs
. Test sprawdza również, czy są one outputs
zdefiniowane w sekcji szablonu parameters
głównego. Nazwy muszą być zgodne, ponieważ parametry są mapowane według nazwy między createUiDefinition.json a 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 comboBox
parametru z sekcji createUiDefinition.json pliku outputs
.
{
"$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 jest przekazywana , 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 funkcji CreateUIDefinition
Parametry w szablonie głównym 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ż 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()]"
}
}
}
Plik azuredeploy.json dla tego przykładu. 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 createUiDefinition.json outputs
. 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ło wymaga minimalnej długości
Nazwa testu: PasswordBoxes musi mieć minimalną długość
Test sprawdza, czy element Microsoft.Common.PasswordBox używa elementu constraints
, który regex
wymaga co najmniej 12 znaków.
Poniższy przykład kończy się niepowodzeniem , ponieważ nie ma constraints
elementu .
{
"$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ż element regex
wymaga 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ć constraints
, czy zawiera 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 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": "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 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": {
"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 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": "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 createUiDefinition.json zawiera element message
.
Poniższy przykład kończy się niepowodzeniem , ponieważ walidacja regex
nie ma elementu 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 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": "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 element Microsoft.Compute.SizeSelector znajduje się w createUiDefinition.json outputs
i w sekcji szablonu parameters
głównego. Główne parametry szablonu określające wartość defaultValue
muszą być zgodne z wartością w kontrolce allowedSizes
.
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ż szablon defaultValue
główny nie 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_D9"
}
},
"resources": [],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"vmSize": {
"type": "string",
"value": "[parameters('vmSize')]"
}
}
}
Poniższy przykład jest przekazywana, 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 witryny 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 (elementy CreateUiDefinition) i CreateUiDefinition functions (Funkcje CreateUiDefinition).
- Aby dowiedzieć się więcej na temat testów szablonów usługi ARM, zobacz Przypadki testowe dla szablonów usługi ARM.