public async Task ShouldHandleObjects()

in src/Bicep.LangServer.IntegrationTests/ExpressionAndTypeExtractorTests.cs [535:687]


    public async Task ShouldHandleObjects()
    {
        await RunExtractToVariableAndParameterTest("""
            param _artifactsLocation string
            param  _artifactsLocationSasToken string

            resource resourceWithProperties 'Microsoft.Compute/virtualMachines/extensions@2019-12-01' = if (isWindowsOS && provisionExtensions) {
                parent: vmName_resource
                name: 'cse-windows'
                location: location
                properties: <<{
                    // Entire properties object selected
                    publisher: 'Microsoft.Compute'
                    type: 'CustomScriptExtension'
                    typeHandlerVersion: '1.8'
                    autoUpgradeMinorVersion: true
                    settings: {
                      fileUris: [
                        uri(_artifactsLocation, 'writeblob.ps1${_artifactsLocationSasToken}')
                      ]
                      commandToExecute: commandToExecute
                    }
                }>>
            }
            """,
        """
            param _artifactsLocation string
            param  _artifactsLocationSasToken string

            var properties = {
              // Entire properties object selected
              publisher: 'Microsoft.Compute'
              type: 'CustomScriptExtension'
              typeHandlerVersion: '1.8'
              autoUpgradeMinorVersion: true
              settings: {
                fileUris: [
                  uri(_artifactsLocation, 'writeblob.ps1${_artifactsLocationSasToken}')
                ]
                commandToExecute: commandToExecute
              }
            }

            resource resourceWithProperties 'Microsoft.Compute/virtualMachines/extensions@2019-12-01' = if (isWindowsOS && provisionExtensions) {
                parent: vmName_resource
                name: 'cse-windows'
                location: location
                properties: properties
            }
            """,
        """
            param _artifactsLocation string
            param  _artifactsLocationSasToken string
            @description('Describes the properties of a Virtual Machine Extension.')
            param properties object = {
              // Entire properties object selected
              publisher: 'Microsoft.Compute'
              type: 'CustomScriptExtension'
              typeHandlerVersion: '1.8'
              autoUpgradeMinorVersion: true
              settings: {
                fileUris: [
                  uri(_artifactsLocation, 'writeblob.ps1${_artifactsLocationSasToken}')
                ]
                commandToExecute: commandToExecute
              }
            }

            resource resourceWithProperties 'Microsoft.Compute/virtualMachines/extensions@2019-12-01' = if (isWindowsOS && provisionExtensions) {
                parent: vmName_resource
                name: 'cse-windows'
                location: location
                properties: properties
            }
            """,
        """
            param _artifactsLocation string
            param  _artifactsLocationSasToken string
            @description('Describes the properties of a Virtual Machine Extension.')
            param properties {
              autoUpgradeMinorVersion: bool?
              forceUpdateTag: string?
              instanceView: {
                name: string?
                statuses: {
                  code: string?
                  displayStatus: string?
                  level: ('Error' | 'Info' | 'Warning')?
                  message: string?
                  time: string?
                }[]?
                substatuses: {
                  code: string?
                  displayStatus: string?
                  level: ('Error' | 'Info' | 'Warning')?
                  message: string?
                  time: string?
                }[]?
                type: string?
                typeHandlerVersion: string?
              }?
              protectedSettings: object? /* any */
              publisher: string?
              settings: object? /* any */
              type: string?
              typeHandlerVersion: string?
            } = {
              // Entire properties object selected
              publisher: 'Microsoft.Compute'
              type: 'CustomScriptExtension'
              typeHandlerVersion: '1.8'
              autoUpgradeMinorVersion: true
              settings: {
                fileUris: [
                  uri(_artifactsLocation, 'writeblob.ps1${_artifactsLocationSasToken}')
                ]
                commandToExecute: commandToExecute
              }
            }

            resource resourceWithProperties 'Microsoft.Compute/virtualMachines/extensions@2019-12-01' = if (isWindowsOS && provisionExtensions) {
                parent: vmName_resource
                name: 'cse-windows'
                location: location
                properties: properties
            }
            """,
        """
            param _artifactsLocation string
            param  _artifactsLocationSasToken string
            @description('Describes the properties of a Virtual Machine Extension.')
            param properties resourceInput<'Microsoft.Compute/virtualMachines/extensions@2019-12-01'>.properties = {
              // Entire properties object selected
              publisher: 'Microsoft.Compute'
              type: 'CustomScriptExtension'
              typeHandlerVersion: '1.8'
              autoUpgradeMinorVersion: true
              settings: {
                fileUris: [
                  uri(_artifactsLocation, 'writeblob.ps1${_artifactsLocationSasToken}')
                ]
                commandToExecute: commandToExecute
              }
            }

            resource resourceWithProperties 'Microsoft.Compute/virtualMachines/extensions@2019-12-01' = if (isWindowsOS && provisionExtensions) {
                parent: vmName_resource
                name: 'cse-windows'
                location: location
                properties: properties
            }
            """);
    }