1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#!/usr/bin/env ruby
require 'spec_helper'
describe Puppet::Type.type(:user).provider(:windows_adsi) do
let(:resource) do
Puppet::Type.type(:user).new(
:title => 'testuser',
:comment => 'Test J. User',
:provider => :windows_adsi
)
end
let(:provider) { resource.provider }
let(:connection) { stub 'connection' }
before :each do
Puppet::Util::ADSI.stubs(:computer_name).returns('testcomputername')
Puppet::Util::ADSI.stubs(:connect).returns connection
end
describe ".instances" do
it "should enumerate all users" do
names = ['user1', 'user2', 'user3']
stub_users = names.map{|n| stub(:name => n)}
connection.stubs(:execquery).with("select * from win32_useraccount").returns(stub_users)
described_class.instances.map(&:name).should =~ names
end
end
it "should provide access to a Puppet::Util::ADSI::User object" do
provider.user.should be_a(Puppet::Util::ADSI::User)
end
describe "when managing groups" do
it 'should return the list of groups as a comma-separated list' do
provider.user.stubs(:groups).returns ['group1', 'group2', 'group3']
provider.groups.should == 'group1,group2,group3'
end
it "should return absent if there are no groups" do
provider.user.stubs(:groups).returns []
provider.groups.should == ''
end
it 'should be able to add a user to a set of groups' do
resource[:membership] = :minimum
provider.user.expects(:set_groups).with('group1,group2', true)
provider.groups = 'group1,group2'
resource[:membership] = :inclusive
provider.user.expects(:set_groups).with('group1,group2', false)
provider.groups = 'group1,group2'
end
end
describe "when creating a user" do
it "should create the user on the system and set its other properties" do
resource[:groups] = ['group1', 'group2']
resource[:membership] = :inclusive
resource[:comment] = 'a test user'
resource[:home] = 'C:\Users\testuser'
user = stub 'user'
Puppet::Util::ADSI::User.expects(:create).with('testuser').returns user
user.stubs(:groups).returns(['group2', 'group3'])
user.expects(:set_groups).with('group1,group2', false)
user.expects(:[]=).with('Description', 'a test user')
user.expects(:[]=).with('HomeDirectory', 'C:\Users\testuser')
provider.create
end
end
it 'should be able to test whether a user exists' do
Puppet::Util::ADSI.stubs(:connect).returns stub('connection')
provider.should be_exists
Puppet::Util::ADSI.stubs(:connect).returns nil
provider.should_not be_exists
end
it 'should be able to delete a user' do
connection.expects(:Delete).with('user', 'testuser')
provider.delete
end
it "should commit the user when flushed" do
provider.user.expects(:commit)
provider.flush
end
[:uid, :gid, :shell].each do |prop|
it "should warn when trying to manage the #{prop} property" do
provider.expects(:warning).with { |msg| msg =~ /No support for managing property #{prop}/ }
provider.send("#{prop}=", 'foo')
end
end
end
|