[asl-commit] ActiveSambaLdap r27:

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


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

  New Revision: 27

  Modified files:
    trunk/bin/asl-useradd
    trunk/bin/asl-userdel
    trunk/bin/asl-usermod
    trunk/test/test_asl_userdel.rb

  Log:


  Modified: trunk/bin/asl-userdel (+23 -6)
===================================================================
--- trunk/bin/asl-userdel	2006-11-14 13:17:26 +09:00 (rev 26)
+++ trunk/bin/asl-userdel	2007-08-04 11:32:18 +09:00 (rev 27)
@@ -6,9 +6,15 @@
 argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
   options.remove_home_directory = false
   options.interactive = false
+  options.computer_account = false
 
   opts.banner += " USER_NAME"
 
+  opts.on("-c", "--[no-]computer-account",
+          "is a Windows Workstation",
+          "(otherwise, Windows user)",
+          "(#{options.computer_account})") {|options.computer_account|}
+
   opts.on("-r", "--[no-]remove-home-directory",
           "remove home directory (#{options.remove_home_directory})") do |bool|
     options.remove_home_directory = bool
@@ -39,19 +45,30 @@
   ldap_mapping
 end
 
+class Computer < ActiveSambaLdap::Computer
+  ldap_mapping
+end
+
 class Group < ActiveSambaLdap::Group
   ldap_mapping
 end
 
-unless User.exists?(name)
-  puts "user '#{name}' doesn't exist."
+member_class = options.computer_account ? Computer : User
+member_type = member_class.name.downcase
+
+if options.computer_account
+  name = name.chomp("$") + "$"
+end
+
+unless member_class.exists?(name)
+  puts "#{member_type} '#{name}' doesn't exist."
   exit 1
 end
-user = User.find(name)
+member = member_class.find(name)
 
-user.destroy(:removed_from_group => true,
-             :remove_home_directory => options.remove_home_directory,
-             :remove_home_directory_interactive => options.interactive)
+member.destroy(:removed_from_group => true,
+               :remove_home_directory => options.remove_home_directory,
+               :remove_home_directory_interactive => options.interactive)
 
 ActiveSambaLdap::Base.restart_nscd
 

  Modified: trunk/bin/asl-useradd (+1 -1)
===================================================================
--- trunk/bin/asl-useradd	2006-11-14 13:17:26 +09:00 (rev 26)
+++ trunk/bin/asl-useradd	2007-08-04 11:32:18 +09:00 (rev 27)
@@ -384,7 +384,7 @@
                      [File.join(skel, "."), File.join(skel, "..")],
                      dest)
       FileUtils.chown_R(member.uid_number, member.gid_number, dest)
-    rescue SystemCallerror
+    rescue SystemCallError
       puts $!
       exit 1
     end

  Modified: trunk/bin/asl-usermod (+1 -1)
===================================================================
--- trunk/bin/asl-usermod	2006-11-14 13:17:26 +09:00 (rev 26)
+++ trunk/bin/asl-usermod	2007-08-04 11:32:18 +09:00 (rev 27)
@@ -59,7 +59,7 @@
           "supplementary groups (comma separated)") do |groups|
     options.supplementary_groups = groups
   end
-  opts.on("--no-merge-groups",
+  opts.on("--[no-]merge-groups",
           "replace supplementary groups " +
           "(#{!options.merge_groups})") {|options.merge_groups|}
   opts.on("-s", "--shell=SHELL", "shell") {|options.shell|}

  Modified: trunk/test/test_asl_userdel.rb (+25 -0)
===================================================================
--- trunk/test/test_asl_userdel.rb	2006-11-14 13:17:26 +09:00 (rev 26)
+++ trunk/test/test_asl_userdel.rb	2007-08-04 11:32:18 +09:00 (rev 27)
@@ -22,10 +22,35 @@
     make_dummy_user do |user, password|
       assert(File.exist?(user.home_directory))
       assert_equal([true, ""], run_command(user.uid))
+      assert(!@user_class.exists?(user.uid))
       assert(File.exist?(user.home_directory))
     end
   end
 
+  def test_exist_computer
+    make_dummy_computer do |computer, password|
+      assert(@computer_class.exists?(computer.uid))
+      assert_equal([true, ""], run_command(computer.uid, '--computer-account'))
+      assert(!@computer_class.exists?(computer.uid))
+    end
+  end
+
+  def test_user_as_computer
+    make_dummy_user do |user, password|
+      assert_equal([false, "computer '#{user.uid}$' doesn't exist.\n"],
+                   run_command(user.uid, "--computer-account"))
+      assert(@user_class.exists?(user.uid))
+    end
+  end
+
+  def test_computer_as_user
+    make_dummy_computer do |computer, password|
+      assert_equal([false, "user '#{computer.uid}' doesn't exist.\n"],
+                   run_command(computer.uid))
+      assert(@computer_class.exists?(computer.uid))
+    end
+  end
+
   def test_belongs_to_group
     make_dummy_user do |user, password|
       assert(File.exist?(user.home_directory))



More information about the asl-commit mailing list