# encoding: utf-8

case os[:family]
when 'centos', 'fedora', 'opensuse', 'debian', 'ubuntu'
  describe package('curl') do
    it { should be_installed }
  end
when 'aix'
  describe package('bos.rte') do
    it { should be_installed }
    its('version') { should match /^(6|7)[.|\d]+\d$/ }
  end
when 'solaris'
  if os[:release] == '11'
    pkg = 'system/file-system/zfs'
    ver = /^0\.5.+$/
  else
    pkg = 'SUNWzfsr'
    ver = /^11\.10.+$/
  end

  describe package(pkg) do
    it { should be_installed }
    its('version') { should match ver }
  end
end

describe package('nginx') do
  it { should_not be_installed }
end

# the following test will iterate over all packages retrieved via WMI and verifies that the
# optimized package implementation is returning the same results
if os.windows?
  # compare optimized version with wmi results
  packages = powershell("Get-WmiObject -Class Win32_Product |  % { $_.Name }").stdout.strip.split("\n")

  packages.each { |pkg|
    package_name = pkg.strip
    # get wmi package information
    cmd = powershell("Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -eq '#{package_name}'} | Select-Object -Property Name,Version,Vendor,PackageCode,Caption,Description | ConvertTo-Json")
    wmi_package = JSON.parse(cmd.stdout)
    wmi_info = {
      name: wmi_package['Name'],
      installed: true,
      version: wmi_package['Version'],
      type: 'windows',
    }

    # get registry package information
    info = package(package_name).info

    # compare results
    describe wmi_info do
      it { should eq info}
    end
  }
end
