[asl-commit] ActiveSambaLdap r49:

null at cozmixng.org null at cozmixng.org
Fri Aug 3 22:33:21 EDT 2007


retro	2007-08-04 11:33:18 +0900 (Sat, 04 Aug 2007)

  New Revision: 49

  Modified files:
    trunk/bin/asl-useradd
    trunk/lib/active_samba_ldap/account.rb
    trunk/lib/active_samba_ldap/samba_account.rb
    trunk/test/asl-test-utils.rb

  Log:


  Modified: trunk/test/asl-test-utils.rb (+23 -25)
===================================================================
--- trunk/test/asl-test-utils.rb	2006-11-16 15:54:40 +09:00 (rev 48)
+++ trunk/test/asl-test-utils.rb	2007-08-04 11:33:18 +09:00 (rev 49)
@@ -118,15 +118,15 @@
         gid_number = config[:gid_number] || default_user_gid
         _wrap_assertion do
           assert(!@user_class.exists?(name))
-          user = @user_class.new(name)
           options = {
+            :uid => name,
             :uid_number => uid_number,
             :group => @group_class.find_by_gid_number(gid_number),
+            :home_directory => home_directory,
+            :password => password,
           }
-          user.fill_default_values(options)
-          user.home_directory = home_directory
-          user.change_password(password)
-          user.change_samba_password(password)
+          user = @user_class.create(options)
+          assert_equal([], user.errors.to_a)
           user.save!
           FileUtils.mkdir(home_directory)
           assert(@user_class.exists?(name))
@@ -138,11 +138,9 @@
     def ensure_delete_user(uid, home=nil)
       yield(uid, home)
     ensure
-      FileUtils.rm_rf(home) if home
       if @user_class.exists?(uid)
-        user = @user_class.find(uid)
-        user.groups = []
-        user.destroy
+        @user_class.find(uid).destroy(:remove_from_group => true,
+                                      :remove_home_directory => true)
       end
     end
 
@@ -158,17 +156,14 @@
         gid_number = config[:gid_number] || default_computer_gid
         _wrap_assertion do
           assert(!@computer_class.exists?(name))
-          computer = @computer_class.new(name)
           options = {
+            :uid => name,
             :uid_number => uid_number,
             :group => @group_class.find_by_gid_number(gid_number),
+            :password => password,
           }
-          computer.fill_default_values(options)
-          if password
-            computer.change_password(password)
-            computer.change_samba_password(password)
-          end
-          computer.save!
+          computer = @computer_class.create(options)
+          assert_equal([], computer.errors.to_a)
           FileUtils.mkdir(home_directory)
           assert(@computer_class.exists?(name))
           yield(computer, password)
@@ -179,11 +174,9 @@
     def ensure_delete_computer(uid, home=nil)
       yield(uid.sub(/\$+\z/, '') + "$", home)
     ensure
-      FileUtils.rm_rf(home) if home
       if @computer_class.exists?(uid)
-        computer = @computer_class.find(uid)
-        computer.groups = []
-        computer.destroy
+        @computer_class.find(uid).destroy(:remove_from_group => true,
+                                          :remove_home_directory => true)
       end
     end
 
@@ -195,10 +188,13 @@
         group_type = config[:group_type] || "domain"
         _wrap_assertion do
           assert(!@group_class.exists?(name))
-          group = @group_class.new(name)
-          group.change_gid_number(gid_number)
-          group.change_type(group_type)
-          group.save!
+          options = {
+            :cn => name,
+            :gid_number => gid_number,
+            :group_type => group_type,
+          }
+          group = @group_class.create(options)
+          assert_equal([], group.errors.to_a)
           assert(@group_class.exists?(name))
           yield(group)
         end
@@ -208,7 +204,9 @@
     def ensure_delete_group(name)
       yield(name)
     ensure
-      @group_class.destroy(name) if @group_class.exists?(name)
+      if @group_class.exists?(name)
+        @group_class.find(name).destroy(:remove_members => false)
+      end
     end
 
     def ensure_delete_ou(ou)

  Modified: trunk/lib/active_samba_ldap/account.rb (+29 -22)
===================================================================
--- trunk/lib/active_samba_ldap/account.rb	2006-11-16 15:54:40 +09:00 (rev 48)
+++ trunk/lib/active_samba_ldap/account.rb	2007-08-04 11:33:18 +09:00 (rev 49)
@@ -82,33 +82,14 @@
       self.home_directory ||= substituted_value(:user_home)
       self.login_shell ||= self.class.configuration[:user_login_shell]
 
+      password = options[:password]
+      change_password(password) if password
       self.user_password ||= "{crypt}x"
 
       uid_number = options[:uid_number]
       self.change_uid_number(uid_number) if uid_number
 
-      group = options[:group]
-      unless group
-        gid_number = options[:gid_number]
-        group_class = options[:group_class]
-        unless gid_number
-          if options[:create_group]
-            group_name = created_group_name
-            if group_class.exists?(group_name)
-              group = group_class.find(group_name)
-            else
-              group = group_class.create(:cn => group_name,
-                                         :pool => options[:pool],
-                                         :pool_class => options[:pool_class])
-            end
-          else
-            gid_number = default_gid_number
-          end
-        end
-        if gid_number
-          group = group_class.find_by_gid_number(gid_number)
-        end
-      end
+      group = options[:group] || retrieve_default_group(options)
       self.primary_group = group if group
 
       self
@@ -192,5 +173,31 @@
     def created_group_name
       uid
     end
+
+    def retrieve_default_group(options={})
+      group = nil
+
+      gid_number = options[:gid_number]
+      group_class = options[:group_class]
+      unless gid_number
+        if options[:create_group]
+          group_name = created_group_name
+          if group_class.exists?(group_name)
+            group = group_class.find(group_name)
+          else
+            group = group_class.create(:cn => group_name,
+                                       :pool => options[:pool],
+                                       :pool_class => options[:pool_class])
+          end
+        else
+          gid_number = default_gid_number
+        end
+      end
+      if gid_number
+        group = group_class.find_by_gid_number(gid_number)
+      end
+
+      group
+    end
   end
 end

  Modified: trunk/bin/asl-useradd (+0 -2)
===================================================================
--- trunk/bin/asl-useradd	2006-11-16 15:54:40 +09:00 (rev 48)
+++ trunk/bin/asl-useradd	2007-08-04 11:33:18 +09:00 (rev 49)
@@ -237,8 +237,6 @@
   end
 end
 
-
-
 member = nil
 begin
   member = member_class.create(create_options)

  Modified: trunk/lib/active_samba_ldap/samba_account.rb (+4 -0)
===================================================================
--- trunk/lib/active_samba_ldap/samba_account.rb	2006-11-16 15:54:40 +09:00 (rev 48)
+++ trunk/lib/active_samba_ldap/samba_account.rb	2007-08-04 11:33:18 +09:00 (rev 49)
@@ -82,6 +82,8 @@
       self.samba_logoff_time ||= FAR_FUTURE_TIME
       self.samba_kickoff_time ||= nil
 
+      password = options[:password]
+      change_samba_password(password) if password
       self.samba_lm_password ||= "XXX"
       self.samba_nt_password ||= "XXX"
       self.samba_pwd_last_set ||= "0"
@@ -109,6 +111,8 @@
       elsif account_flags_is_not_set or enable_account == false
         self.disable
       end
+
+      self
     end
 
     def change_uid_number(uid, allow_non_unique=false)



More information about the asl-commit mailing list