When /^a machine has been puppeted$/ do
  require 'puppet'
end

####################### Packages

Then /^the (.+) package should be installed$/ do | package |
  ppp = Puppet::Type.type(:package).new(:name => package ).provider.properties
  ppp[:status].should == "installed"
end

Then /^the (.+) package should not be installed$/ do | package |
  ppp = Puppet::Type.type(:package).new(:name => package ).provider.properties
  ppp[:status].should == "missing"
end

####################### Services

Then /^the (.+) service should be running$/ do | service |
  service_status = Puppet::Type.type(:service).new(:name => service, :hasstatus => true).provider.status
  service_status.should == :running
end

# fails on not installed services:
# took away has status as tomcat test script didn't support it.
Then /^the (.+) service should not be running$/ do | service |
  service_status = Puppet::Type.type(:service).new(:name => service).provider.status
  service_status.should == :stopped
end

######################## Users

Then /^(.+) should be a member of (.+)$/ do | user, group |
  groups = Puppet::Type.type(:user).new(:name => user ).provider.groups.split(",")
  groups.should include group
end

Then /^(.+) should have a uid of (\d+)$/ do | user, uid |
  Puppet::Type.type(:user).new(:name => user ).provider.uid.should == uid.to_i
end

Then /^(.+) should have the (.+) shell$/ do | user, shell |
  Puppet::Type.type(:user).new(:name => user ).provider.shell.should == shell
end
