# encoding: utf-8 require 'helper' require 'inspec/resource' describe 'groups resource on unix platform' do let(:resource) { MockLoader.new(:ubuntu1404).load_resource('groups') } describe 'no arguments' do it 'finds all group names' do _(resource.names.count).must_equal 3 _(resource.names).must_equal %w(root www-data GroupWithCaps) end it 'finds all group gids' do _(resource.gids.count).must_equal 3 _(resource.gids).must_equal [0, 33, 999] end it 'finds no group domains' do _(resource.domains.count).must_equal 3 _(resource.domains).must_equal [nil, nil, nil] end end describe 'where method' do it 'retrieves entries via gid' do _(resource.where{ gid == 33 }.entries.length).must_equal 1 end it 'retrieves entries via name' do _(resource.where{ name == 'www-data' }.entries.length).must_equal 1 end it 'retrieves members via name' do _(resource.where{ name == 'www-data' }.members).must_equal ['www-data,root'] end it 'retrieves entries via members regexp' do _(resource.where{ members =~ /root/ }.members).must_equal ['www-data,root'] _(resource.where{ members =~ /root/ }.exist?).must_equal true end end end describe 'groups resource on windows platform' do let(:resource) { MockLoader.new(:windows).load_resource('groups') } describe 'no arguments' do it 'finds all group names' do _(resource.names.count).must_equal 4 _(resource.names).must_equal ['Administrators', 'Guests', 'Power Users', 'Users'] end it 'finds all group gids' do _(resource.gids.count).must_equal 4 _(resource.gids).must_equal ["S-1-5-32-544", "S-1-5-32-546", "S-1-5-32-547", "S-1-5-32-545"] end it 'finds no group domains' do _(resource.domains.count).must_equal 4 _(resource.domains).must_equal ['WIN-CIV7VMLVHLD', 'WIN-CIV7VMLVHLD', 'WIN-CIV7VMLVHLD', 'WIN-CIV7VMLVHLD'] end end describe 'where method' do it 'retrieves entries via gid' do _(resource.where{ gid == 'S-1-5-32-544' }.entries.length).must_equal 1 end it 'retrieves entries via name' do _(resource.where{ name == 'Administrators' }.entries.length).must_equal 1 end it 'retrieves members via name' do _(resource.where{ name == 'Administrators' }.members).must_equal ['Administrators', 'Domain Admins'] _(resource.where{ name == 'Administrators' }.exist?).must_equal true end it 'retrieves groups via included members' do res = _(resource.where{ members.include? 'Guest' }.raw_data) res.target.count.must_equal 1 res.target.first['name'].must_equal 'Guests' end end end