createUiDefinition.json のテスト ケース
この記事では、createUiDefinition.json ファイルのテンプレート テスト ツールキットで実行されるテストについて説明します。 例には、テストに合格する、または不合格になるテスト名とコード サンプルが含まれています。
このツールキットには、Azure Resource Manager テンプレート (ARM テンプレート) のテスト ケースと、azuredeploy.json または maintemplate.json という名前のメイン テンプレート ファイルが含まれています。 ディレクトリに createUiDefinition.json ファイルが含まれている場合、UI コントロールに対して特定のテストが実行されます。 テストを実行する方法、または特定のテストを実行する方法の詳細については、「テスト パラメーター」を参照してください。
createUiDefinition.json ファイルにより、要素と関数 を使用してカスタム ユーザー インターフェイス (UI) コントロールが作成されます。
テンプレート パラメーターで値が許可されていることを確認する
テスト名: Allowed Values Should Actually Be Allowed (許可値は実際に許可されている必要がある)
このテストでは、createUiDefinition.json の各コントロールの値が、メイン テンプレートのパラメーターで許可されていることを確認します。 パラメーターは、メイン テンプレートと createUiDefinition.json ファイルの間で名前によってマップされます。
メイン テンプレートのパラメーターは、コントロールの allowedValues
からの値を受け付ける必要があります。 このテストでは、createUiDefinition.json の outputs
セクションでコントロールが参照されていることも確認します。
このテストでは、メイン テンプレートと 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
が定義されている場合は、コントロールの allowedValues
で有効な value
である必要があります。
{
"$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')]"
}
}
}
次の例は、メイン テンプレートのパラメーター名がコントロールのパラメーター名と一致するため、合格します。 また、テンプレートのパラメーターの型は、コントロールの allowedValues
に指定されている defaultValue
を持つ string
です。
{
"$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]"
}
}
}
出力コントロールが存在する必要がある
テスト名: Controls In Outputs Must Exist (出力内のコントロールが存在する必要がある)
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 Must Not Have Blanks (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 Should Have Schema (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"
}
資格情報の確認入力を非表示にしない
テスト名: Credential Confirmation Should Not Be Hidden (資格情報の確認入力を非表示にしない)
このテストでは、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')]"
}
}
}
正しいハンドラーを使用する
テスト名: Handler Must Be Correct (ハンドラーは正しいものでなければならない)
createUiDefinition.json ファイルで Microsoft.Azure.CreateUIDef
または Microsoft.Compute.MultiVm
を使用します。
次の例は不合格になります。
{
"$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 Must Be Correctly Handled (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]"
}
}
}
出力に位置情報を使用する
テスト名: Location Should Be In Outputs (出力に場所を含める必要がある)
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()]"
}
}
}
テンプレート パラメーターにコントロール出力を含める
テスト名: Outputs Must Be Present In Template Parameters (テンプレート パラメーターに出力が存在する必要がある)
このテストでは、createUiDefinition.json に outputs
セクションが含まれていることを確認します。 このテストでは、その outputs
がメイン テンプレートの parameters
セクションに定義されているかどうかも確認します。 createUiDefinition.json とメイン テンプレートの間でパラメーターが名前でマップされるため、名前が一致している必要があります。
このテストでは、メイン テンプレートと createUiDefinition.json ファイルを確認します。 メイン テンプレートの例の後に createUiDefinition.json ファイルの例を示します。
メイン テンプレートに createUiDefinition.json ファイルの outputs
セクションの comboBox
パラメーターが含まれていないため、次の例は不合格になります。
{
"$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()]"
}
}
}
既定値のないパラメーターは出力に存在する必要がある
テスト名: Parameters Without Default Must Exist In CreateUIDefinition (既定値のないパラメーターは CreateUIDefinition に存在する必要がある)
メイン テンプレート内の既定値のないパラメーターは、createUiDefinition.json ファイルの outputs
セクションに存在する必要があります。
このテストでは、メイン テンプレートと createUiDefinition.json ファイルを確認します。 コントロールの例の後に azuredeploy.json ファイルの例を示します。
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": {
"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')]"
}
}
}
パスワード ボックスにセキュリティで保護されたパラメーターを使用する
テスト名: Password Textboxes Must Be Used For Password Parameters (パスワード パラメーターにはパスワード テキストボックスを使用する必要がある)
このテストでは、Microsoft.Common.PasswordBox 要素がメイン テンプレートの parameters
と createUiDefinition.json outputs
で定義されていることを確認します。 パスワード ボックスのメイン テンプレートのパラメーターの種類は 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')]"
}
}
}
パスワード ボックスには最短の長さが必要
テスト名: PasswordBoxes Must Have Min Length (PasswordBoxes に最短の長さが必要)
このテストでは、Microsoft.Common.PasswordBox 要素に、12 文字以上を必要とする regex
と共に constraints
を使用していることを確認します。
次の例は、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')]"
}
}
}
テキスト ボックスには検証を使用する必要がある
テスト名: Textboxes Are Well Formed (テキストボックスは適切な形式である)
テキスト ボックスに検証を使用して、regex
と message
を含む 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": "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 には値が存在する必要がある
テスト名: Tooltips Should Be Present (ヒントを提示する必要がある)
このテストでは、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')]"
}
}
}
既定のユーザー名を設定しない
テスト名: Usernames Should Not Have A Default (ユーザー名に既定値を設定しない)
このテストでは、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 Must Have Message (検証にはメッセージが必要)
このテストでは、createUiDefinition.json のすべての validations
に 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')]"
}
}
}
仮想マシンのサイズが一致する必要がある
テスト名: VM Sizes Must Match Template (VM のサイズはテンプレートと一致する必要がある)
このテストでは、Microsoft.Compute.SizeSelector が createUiDefinition.json の outputs
とメイン テンプレートの parameters
セクションにあることを確認します。 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 portal のユーザー インターフェイスを作成するには、「Azure マネージド アプリケーションの作成エクスペリエンスのための CreateUiDefinition.json」を参照してください。
- UI 定義の作成サンドボックスを使用するには、「Azure Managed Applications 用のポータル インターフェイスをテストする」を参照してください。
- UI コントロールの詳細については、「CreateUiDefinition の要素」と「CreateUiDefinition 関数」を参照してください。
- ARM テンプレート テストの詳細については、「ARM テンプレートのテスト ケース」を参照してください。