From: Joel Rosario <[email protected]>
Signed-off-by: James Turnbull <[email protected]> --- Local-branch: tickets/master/6693 spec/integration/provider/group/groupadd_win.rb | 48 ++++++++++ spec/integration/provider/user/useradd_win.rb | 69 ++++++++++++++ spec/integration/provider/windowstest.rb | 109 +++++++++++++++++++++++ 3 files changed, 226 insertions(+), 0 deletions(-) create mode 100644 spec/integration/provider/group/groupadd_win.rb create mode 100644 spec/integration/provider/user/useradd_win.rb create mode 100644 spec/integration/provider/windowstest.rb diff --git a/spec/integration/provider/group/groupadd_win.rb b/spec/integration/provider/group/groupadd_win.rb new file mode 100644 index 0000000..51d1df7 --- /dev/null +++ b/spec/integration/provider/group/groupadd_win.rb @@ -0,0 +1,48 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' + +describe "Provider for windows groups" do + confine :true => Puppet.features.windows? + + require File.dirname(__FILE__) + '/../windowstest' + require File.dirname(__FILE__) + '/../../../../lib/puppet/provider/group/groupadd_win.rb' + + include WindowsTest + + def group_provider(resource_configuration) + provider = Puppet::Type::Group::ProviderGroupadd_win.new + provider.resource = resource_configuration + return provider + end + + after(:each) do + clear + end + + it 'should create a group with configured members' do + groupname = "randomgroup" + register_group groupname + + expected_members = ["test1", "test2"] + mkusers(expected_members) + + provider = group_provider :name => groupname, :members => ['test1', 'test2'] + provider.create + + should_have_no_missing_member(group(groupname), expected_members) + end + + it 'should set a groups members' do + groupname = "randomgroup" + expected_members = ["test1", "test2"] + + testgroup = mkgroup(groupname) + mkusers(expected_members) + + provider = group_provider :name => groupname, :members => ['test1', 'test2'] + provider.members = ['test1', 'test2'] + + should_have_no_missing_member(testgroup, expected_members) + end +end diff --git a/spec/integration/provider/user/useradd_win.rb b/spec/integration/provider/user/useradd_win.rb new file mode 100644 index 0000000..6b0eac1 --- /dev/null +++ b/spec/integration/provider/user/useradd_win.rb @@ -0,0 +1,69 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' + +describe "Provider for windows users" do + confine :true => Puppet.features.windows? + + require File.dirname(__FILE__) + '/../windowstest' + require File.dirname(__FILE__) + '/../../../../lib/puppet/provider/user/useradd_win.rb' + + include WindowsTest + + def user_provider(resource_configuration) + provider = Puppet::Type::User::ProviderUseradd_win.new + provider.resource = resource_configuration + return provider + end + + after(:each) do + clear + end + + it 'should add a user with the given password and group membership' do + expected_groups = ["randomgroup1", "randomgroup2"] + username = "testuser" + password = "1234" + + mkgroups(expected_groups) + register_user username + + provider = user_provider :name => username, :password => password, :groups => expected_groups.join(",") + provider.create + + testuser = user(username) + testuser.password_is?(password).should be_true + + groups = testuser.groups + + expected_groups.each {|expected_group| groups.include?(expected_group).should be_true } + expected_groups.length.should be_eql(groups.length) + end + + it 'should set the group membership of an existing user' do + expected_groups = ["randomgroup1", "randomgroup2"] + username = "testuser" + + mkgroups expected_groups + mkuser username + + provider = user_provider :name => username + provider.groups = expected_groups.join(",") + + groups = provider.groups.split(',').collect {|group| group.strip } + groups.length.should be_eql(expected_groups.length) + groups.each {|group| expected_groups.include?(group).should be_true } + end + + it 'should set a users password' do + username = "testuser" + password = "11112222" + + testuser = mkuser username, password + + provider = user_provider :name => username, :password => password + provider.password = password + + testuser.password_is?(password).should be_true + end +end diff --git a/spec/integration/provider/windowstest.rb b/spec/integration/provider/windowstest.rb new file mode 100644 index 0000000..e667531 --- /dev/null +++ b/spec/integration/provider/windowstest.rb @@ -0,0 +1,109 @@ +require File.dirname(__FILE__) + '/../../../lib/puppet/util/windows_system.rb' + +module WindowsTest + include Puppet::Util::Windows + + class List + def initialize + @list = [] + end + + def clear + destroy + @list = [] + end + + def register(item) + @list << item + end + end + + class Groups < List + include Puppet::Util::Windows + + def destroy + @list.each {|group| + begin + Group.delete(group) + rescue + puts "Group #{group} not found" + end + } + end + end + + class Users < List + include Puppet::Util::Windows + + def destroy + @list.each {|user| + begin + User.delete(user) + rescue + puts "User #{user} not found" + end + } + end + end + + def helper_users + @users = Users.new if @users == nil + @users + end + + def helper_groups + @groups = Groups.new if @groups == nil + @groups + end + + def clear + helper_groups.clear + helper_users.clear + end + + def register_group(name) + helper_groups.register name + end + + def register_user(name) + helper_users.register name + end + + def mkuser(name, password = "1234567") + User.create(name, password) { register_user name } + end + + def mkgroup(name) + Group.create(name) { register_group name } + end + + def mkusers(names) + names.collect {|name| mkuser name } + end + + def mkgroups(names) + names.collect {|name| mkgroup name } + end + + def group(name) + Group.new(name) + end + + def user(name) + User.new(name) + end + + def assert_no_missing_member(group, expected_members) + members = group.members + expected_members.each {|member| assert(members.include?(member), "#{member} should be a member") } + end + + def should_have_no_missing_member(testgroup, expected_members) + members = testgroup.members + expected_members.each {|member| members.include?(member).should be_true } + end + + def teardown + clear + end +end -- 1.7.1 -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
