tests/Export-DbaRegisteredServer.Tests.ps1

$CommandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "")
Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan
. "$PSScriptRoot\constants.ps1"

Describe "$CommandName Integration Tests" -Tag "IntegrationTests" {
    BeforeAll {
        $srvName = "dbatoolsci-server1"
        $group = "dbatoolsci-group1"
        $regSrvName = "dbatoolsci-server12"
        $regSrvDesc = "dbatoolsci-server123"
        
        $newGroup = Add-DbaRegisteredServerGroup -SqlInstance $script:instance1 -Name $group
        $newServer = Add-DbaRegisteredServer -SqlInstance $script:instance1 -ServerName $srvName -Name $regSrvName -Description $regSrvDesc
        
        $srvName2 = "dbatoolsci-server2"
        $group2 = "dbatoolsci-group1a"
        $regSrvName2 = "dbatoolsci-server21"
        $regSrvDesc2 = "dbatoolsci-server321"
        
        $newGroup2 = Add-DbaRegisteredServerGroup -SqlInstance $script:instance1 -Name $group2
        $newServer2 = Add-DbaRegisteredServer -SqlInstance $script:instance1 -ServerName $srvName2 -Name $regSrvName2 -Description $regSrvDesc2
        
        $regSrvName3 = "dbatoolsci-server3"
        $srvName3 = "dbatoolsci-server3"
        $regSrvDesc3 = "dbatoolsci-server3desc"
        
        $newServer3 = Add-DbaRegisteredServer -SqlInstance $script:instance1 -ServerName $srvName3 -Name $regSrvName3 -Description $regSrvDesc3
    }
    AfterAll {
        Get-DbaRegisteredServer -SqlInstance $script:instance1, $script:instance2 | Where-Object Name -match dbatoolsci | Remove-DbaRegisteredServer -Confirm:$false
        Get-DbaRegisteredServerGroup -SqlInstance $script:instance1, $script:instance2 | Where-Object Name -match dbatoolsci | Remove-DbaRegisteredServerGroup -Confirm:$false
        $results, $results2, $results3 | Remove-Item -ErrorAction Ignore
    }
    
    It -Skip "should create an xml file" {
        $results = $newServer | Export-DbaRegisteredServer
        $results -is [System.IO.FileInfo] | Should -Be $true
        $results.Extension -eq '.xml' | Should -Be $true
    }
    
    It "should create a specific xml file when using Path" {
        $results2 = $newGroup2 | Export-DbaRegisteredServer -Path C:\temp\dbatoolsci_regserverexport.xml
        $results2 -is [System.IO.FileInfo] | Should -Be $true
        $results2.FullName | Should -Be 'C:\temp\dbatoolsci_regserverexport.xml'
        Get-Content -Path $results2 -Raw | Should -Match dbatoolsci-group1a
    }
    
    It "creates an importable xml file" {
        $results3 = $newServer3 | Export-DbaRegisteredServer -Path C:\temp\dbatoolsci_regserverexport.xml
        $results4 = Import-DbaRegisteredServer -SqlInstance $script:instance2 -Path $results3
        $results4.ServerName | Should -Be $newServer3.ServerName
        $results4.Description | Should -Be $newServer3.Description
    }
}