require 'spec_helper'

describe VagrantWindows::Communication::WinRMShell, :integration => true do
  
  before(:all) do
    port = (ENV['WINRM_PORT'] || 5985).to_i
    @shell = VagrantWindows::Communication::WinRMShell.new(
      "127.0.0.1", "vagrant", "vagrant", { port: port })
  end
  
  describe ".powershell" do
    it "should return exit code of 0" do
      expect(@shell.powershell("exit 0")[:exitcode]).to eq(0)
    end
    
    it "should return exit code greater than 0" do
      expect(@shell.powershell("exit 1")[:exitcode]).to eq(1)
    end
    
    it "should return stdout" do
      result = @shell.powershell("dir") do |type, line|
        expect(type).to eq(:stdout)
        expect(line.length).to be > 1  
      end
      expect(result[:exitcode]).to eq(0)
    end
  end
  
  describe ".cmd" do
    it "should return stdout" do
      result = @shell.cmd("dir") do |type, line|
        expect(type).to eq(:stdout)
        expect(line.length).to be > 1  
      end
      expect(result[:exitcode]).to eq(0)
    end
  end

  describe ".wql" do
    it "should return query results in stdout" do
      result = @shell.wql('SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL')
      expect(result[:win32_network_adapter]).to_not be_empty
    end
  end
 
end
