Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą comboBoxparametru 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, placeholderi 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 .hideConfirmation
{
"$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 hideExistingfalse.
Przykłady typów kontrolek, które obejmują hideExistingMicrosoft.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 .
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ż nie zawiera parametru outputsgłó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.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ł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 constraintselementu .
{
"$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 i w sekcji szablonu outputs 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
{
"$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.