حالات الاختبار لـcreateUiDefinition.json

توضح هذه المقالة الاختبارات التي يتم تشغيلها باستخدام مجموعة أدوات اختبار النموذج لملفات createUiDefinition.json . تتضمن الأمثلة أسماء الاختبار ونماذج التعليمات البرمجية التي تجتاز أو تفشل في الاختبارات.

تشتمل مجموعة الأدوات على حالات اختبار لقوالب Azure Resource Manager (قوالب ARM) وملفات القوالب الرئيسية المسماة azuredeploy.json أو Maintenanceemplate.json . عندما يحتوي الدليل على ملف createUiDefinition.json ، يتم تشغيل اختبارات محددة لعناصر تحكم واجهة المستخدم. لمزيدٍ من المعلومات حول كيفية إجراء الاختبارات أو كيفية إجراء اختبار معين، راجع Test parameters.

ينشئ ملف createUiDefinition.json عناصر تحكم مخصصة لواجهة المستخدم (UI) باستخدام العناصر و الوظائف .

تحقق معلمة القالب تسمح بالقيم

اسم الاختبار: يجب السماح بالقيم المسموح بها بالفعل

يتحقق هذا الاختبار من السماح بقيم كل عنصر تحكم في 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 فيجب أن تكون value صالحة في عنصر التحكم allowedValues.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "int",
      "defaultValue": 4
    }
  },
  "resources": [],
  "outputs": {
    "comboBoxOutput": {
      "type": "string",
      "value": "[parameters('combo')]"
    }
  }
}

المثال التالي يمر لأن اسم معلمة النموذج الرئيسي يطابق اسم معلمة عنصر التحكم. ونوع معلمة النموذج هو string مع defaultValue المحدد في عنصر التحكم allowedValues.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "string",
      "defaultValue": "two"
    }
  },
  "resources": [],
  "outputs": {
    "comboBoxOutput": {
      "type": "string",
      "value": "[parameters('comboBox')]"
    }
  }
}

الملف createUiDefinition.json لهذا المثال:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [],
    "steps": [
      {
        "name": "demoComboBox",
        "label": "demoComboBoxLabel",
        "elements": [
          {
            "name": "comboBox",
            "type": "Microsoft.Common.DropDown",
            "label": "Example drop down",
            "defaultValue": "Value two",
            "toolTip": "This is a tool tip",
            "constraints": {
              "allowedValues": [
                {
                  "label": "Value one",
                  "description": "The value to select for option 1.",
                  "value": "one"
                },
                {
                  "label": "Value two",
                  "description": "The value to select for option 2.",
                  "value": "two"
                }
              ],
              "required": true
            },
            "visible": true
          }
        ]
      }
    ],
    "outputs": {
      "comboBox": "[steps('demoComboBox').comboBox]"
    }
  }
}

يجب أن توجد ضوابط الإخراج

اسم الاختبار: يجب أن تكون عناصر التحكم في المخرجات موجودة

يجب أن تكون عناصر التحكم المستخدمة في القسم outputs موجودة في عنصر في مكان آخر في createUiDefinition.json . يجب أن يتطابق الاسم المشار إليه في outputs مع الاسم المستخدم في basics[] أو steps[].

المثال التالي يفشل.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "nameDoesNotMatchOutput",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

يجب أن تحتوي الخصائص على قيم

اسم الاختبار: يجب ألا يحتوي CreateUIDefinition على فراغات

يجب أن تحتوي الخصائص على قيم. يجب أن تستخدم الخصائص المطلوبة قيمًا صالحة. يجب إزالة الخصائص الاختيارية الفارغة. يسمح الاختبار فارغًا "basics": [] أو "steps": [] أو defaultValue.

المثال التالي فشل لأن label و placeholder و toolTip فارغة.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "",
        "placeholder": "",
        "defaultValue": "",
        "toolTip": ""
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

المثال التالي يمر لأن label و toolTip لهما قيم، وتمت إزالة placeholder.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "defaultValue": "",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

استخدم مخططًا وإصدارًا صالحين

اسم الاختبار: CreateUIDefinition should have Schema

يجب أن يشتمل ملف createUiDefinition.json على خاصية $schema واستخدام $schema و version صالحين. يجب أن تتطابق أرقام الإصدار في $schema و version.

المثال التالي يفشل.

{
  "$schema": "https://schema.management.azure.com/schemas/0.9.9-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.9.9-preview"
}

المثال التالي يمر لأنه يستخدم الأحدث $schema و version.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview"
}

لا تخفي تأكيد الاعتماد

اسم الاختبار: يجب عدم إخفاء تأكيد بيانات الاعتماد

يتحقق هذا الاختبار من تأكيد بيانات الاعتماد لـ Microsoft.Common.PasswordBox أو Microsoft.Compute.CredentialsCombo . يجب تعيين الخاصية hideConfirmation على false حتى يكون التأكيد مرئيًا.

المثال التالي فشل لأن hideConfirmation هو true.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "credentials",
        "type": "Microsoft.Compute.CredentialsCombo",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": {
          "password": "Type your credentials"
        },
        "constraints": {
          "required": true,
          "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{12,}$",
          "customValidationMessage": "The password must be alphanumeric, contain at least 12 characters, and have at least 1 letter and 1 number."
        },
        "options": {
          "hideConfirmation": true
        },
        "osPlatform": "Windows",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "credentials": "[basics('credentials')]"
    }
  }
}

المثال التالي يمر لأن hideConfirmation هو false.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "credentials",
        "type": "Microsoft.Compute.CredentialsCombo",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": {
          "password": "Type your credentials"
        },
        "constraints": {
          "required": true,
          "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{12,}$",
          "customValidationMessage": "The password must be alphanumeric, contain at least 12 characters, and have at least 1 letter and 1 number."
        },
        "options": {
          "hideConfirmation": false
        },
        "osPlatform": "Windows",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "credentials": "[basics('credentials')]"
    }
  }
}

استخدم المعالج الصحيح

اسم الاختبار: يجب أن يكون المعالج صحيحًا

استخدم Microsoft.Azure.CreateUIDef أو Microsoft.Compute.MultiVm في ملف createUiDefinition.json .

المثال التالي يفشل.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.",
  "version": "0.1.2-preview"
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview"
}

لا تخفي الموارد الموجودة

اسم الاختبار: يجب معالجة HideExisting بشكل صحيح

إذا تم تعيين hideExisting على false أو تم حذفه، فيجب أن يحتوي outputs على resourceGroup و newOrExisting. الافتراضي لـhideExisting هو false.

من أمثلة أنواع عناصر التحكم التي تتضمن hideExisting Microsoft.Storage.StorageAccountSelector أو Microsoft.Network.PublicIpAddressCombo أو Microsoft.Network.VirtualNetworkCombo .

المثال التالي يفشل.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "storage",
        "type": "Microsoft.Storage.StorageAccountSelector",
        "label": "Storage account",
        "toolTip": "This is a demo storage account",
        "defaultValue": {
          "name": "storageaccount01",
          "type": "Premium_LRS"
        },
        "options": {
          "hideExisting": false
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]"
    }
  }
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "storage",
        "type": "Microsoft.Storage.StorageAccountSelector",
        "label": "Storage account",
        "toolTip": "This is a demo storage account",
        "defaultValue": {
          "name": "storageaccount01",
          "type": "Premium_LRS"
        },
        "options": {
          "hideExisting": false
        },
        "visible": false
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "resourceGroup": "[basics('storage').resourceGroup]",
      "newOrExisting": "[basics('storage').newOrExisting]"
    }
  }
}

استخدام الموقع في النواتج

اسم الاختبار: يجب إدخال الموقع في النواتج

يجب أن يحتوي قسم outputs على موقع باستخدام وظيفة الموقع .

المثال التالي فشل لأن outputs لا يتضمن موقعًا.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]"
    }
  }
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]",
      "location": "[location()]"
    }
  }
}

تضمين نواتج التحكم في معلمات القالب

اسم الاختبار: يجب أن تكون المخرجات موجودة في معلمات النموذج

يتحقق الاختبار من أن createUiDefinition.json تتضمن قسمًا outputs. يتحقق الاختبار أيضًا من أن هذه outputs محددة في قسم parameters للنموذج الرئيسي. يجب أن تتطابق الأسماء لأنه يتم تعيين المعلمات بالاسم بين createUiDefinition.json والقالب الرئيسي.

يتحقق هذا الاختبار من النموذج الرئيسي وملف createUiDefinition.json . يظهر مثال لملف createUiDefinition.json بعد أمثلة النموذج الرئيسي.

إن المثال التالي فشل لأن النموذج الرئيسي لا يتضمن comboBox المعلمة من قسم ملف createUiDefinition.jsonoutputs.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

المثال التالي يمر لأن النموذج الرئيسي يتضمن المعلمة comboBox.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "comboBox": {
      "type": "string",
      "defaultValue": "two"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [],
  "outputs": {
    "comboBox": {
      "type": "string",
      "value": "[parameters('comboBox')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

الملف createUiDefinition.json لهذا المثال:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "comboBox",
        "type": "Microsoft.Common.DropDown",
        "label": "Example drop down",
        "toolTip": "This is a tool tip"
      }
    ],
    "steps": [],
    "outputs": {
      "comboBox": "[basics('comboBox')]",
      "location": "[location()]"
    }
  }
}

يجب أن توجد المعلمات بدون تقصير في النواتج

اسم الاختبار: يجب أن تكون المعلمات التي ليس لها افتراضي موجودة في CreateUIDefinition

يجب أن تكون المعلمات في النموذج الرئيسي بدون قيمة افتراضية موجودة في قسم 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 يتضمن comboBox في 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()]"
    }
  }
}

ملف 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')]"
    }
  }
}

استخدم معلمة آمنة مع مربع كلمة المرور

اسم الاختبار: يجب استخدام مربعات نص كلمة المرور لمعلمات كلمة المرور

يتحقق هذا الاختبار من تحديد عنصر 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 حد أدنى من الطول

يتحقق الاختبار من أن عنصر Microsoft.Common.PasswordBox يستخدم constraints مع regex يتطلب 12 حرفًا على الأقل.

المثال التالي فشل لعدم وجود constraints.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "passwordBox",
        "type": "Microsoft.Common.PasswordBox",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": "Type a password"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "passwordBox": "[basics('passwordBox')]"
    }
  }
}

المثال التالي يمر لأن regex يتطلب 12 حرفًا على الأقل.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "passwordBox",
        "type": "Microsoft.Common.PasswordBox",
        "label": {
          "password": "Password",
          "confirmPassword": "Confirm password"
        },
        "toolTip": "Type a password",
        "constraints": {
          "required": true,
          "regex": "^[a-zA-Z0-9]{12,}$",
          "validationMessage": "Password must be at least 12 characters long, contain only numbers and letters"
        }
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "passwordBox": "[basics('passwordBox')]"
    }
  }
}

يجب أن يستخدم مربع النص التحقق من الصحة

اسم الاختبار: مربعات النص جيدة التنسيق

استخدم التحقق مع مربعات النص للتحقق من constraints التي تحتوي على regex و message.

المثال التالي يفشل.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "constraints": {
          "required": true,
          "validations": [
            {
              "regex": "^[a-z0-9A-Z]{1,30}$",
              "message": "Only 1-30 characters alphanumeric characters are allowed."
            }
          ]
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

يجب أن يتواجد تلميح الأدوات بقيمة

اسم الاختبار: يجب أن تكون التلميحات موجودة

يتحقق هذا الاختبار من وجود خاصية toolTip وتحتوي على قيمة.

المثال التالي يفشل.

{
  "$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')]"
    }
  }
}

لا تقم بتعيين اسم مستخدم افتراضي

اسم الاختبار: يجب ألا تحتوي أسماء المستخدمين على اسم افتراضي

يتحقق الاختبار مما إذا كانت هناك مجموعة defaultValue لـ Microsoft.Compute.UserNameTextBox .

المثال التالي فشل بسبب توفير defaultValue.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "userNameBox",
        "type": "Microsoft.Compute.UserNameTextBox",
        "label": "User name",
        "defaultValue": "admin",
        "toolTip": "Enter your user name",
        "osPlatform": "Windows"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "userNameBox": "[basics('userNameBox')]"
    }
  }
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "userNameBox",
        "type": "Microsoft.Compute.UserNameTextBox",
        "label": "User name",
        "toolTip": "Enter your user name",
        "osPlatform": "Windows"
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "userNameBox": "[basics('userNameBox')]"
    }
  }
}

استخدم الرسالة مع عمليات التحقق من الصحة

اسم الاختبار: يجب أن تحتوي عمليات التحقق على رسالة

يتحقق هذا الاختبار من أن أي validations في createUiDefinition.json يتضمن message.

المثال التالي فشل لأن التحقق من الصحة regex لا يحتوي على message.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "constraints": {
          "required": true,
          "validations": [
            {
              "regex": "^[a-z0-9A-Z]{1,30}$"
            }
          ]
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

مر المثال التالي.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "textBox",
        "type": "Microsoft.Common.TextBox",
        "label": "Text box",
        "toolTip": "Type 1-30 alphanumeric characters",
        "placeholder": "Type your text here",
        "constraints": {
          "required": true,
          "validations": [
            {
              "regex": "^[a-z0-9A-Z]{1,30}$",
              "message": "Only 1-30 characters alphanumeric characters are allowed."
            }
          ]
        },
        "visible": true
      }
    ],
    "steps": [],
    "outputs": {
      "location": "[location()]",
      "textBox": "[basics('textBox')]"
    }
  }
}

يجب أن تتطابق أحجام الجهاز الظاهري

اسم الاختبار: يجب أن تتطابق أحجام 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')]"
    }
  }
}

الخطوات التالية