Add unit tests for new auto_admin_first_user configuration setting.
authorWard Vandewege <ward@curoverse.com>
Wed, 5 Nov 2014 15:18:31 +0000 (10:18 -0500)
committerWard Vandewege <ward@curoverse.com>
Wed, 5 Nov 2014 15:18:31 +0000 (10:18 -0500)
refs #4383

services/api/test/unit/user_test.rb

index 3d8ed34b42db01ca62e744b846485390ad87e3d9..29ba3e49802b534b6dc14db5a35757f6ca72b4b2 100644 (file)
@@ -9,6 +9,40 @@ class UserTest < ActiveSupport::TestCase
     system_user
   end
 
+  test "create_new_user_auto_admin_first_user" do
+    # This test requires no admin users exist (except for the system user)
+    users(:admin).delete
+
+    @all_users = User.where("uuid not like '%-000000000000000'").where(:is_admin => true).find(:all)
+
+    assert_equal 0, @all_users.size, "No admin users should exist (except for the system user)"
+
+    Rails.configuration.auto_admin_first_user = true
+
+    assert_equal true, Rails.configuration.auto_admin_first_user
+    user = User.new
+    user.first_name = "first_name_for_newly_created_admin_user"
+
+    act_as_system_user do
+      user.save!
+    end
+
+    user = User.find(user.id)   # get the user back
+    assert user.is_admin, 'is_admin should be set for first new user'
+    assert_equal 'first_name_for_newly_created_admin_user', user.first_name
+
+    user = User.new
+    user.first_name = "first_name_for_newly_created_ordinary_user"
+
+    act_as_system_user do
+      user.save!
+    end
+
+    user = User.find(user.id)   # get the user back
+    assert !user.is_admin, 'is_admin should not be set for second new user'
+    assert_equal 'first_name_for_newly_created_ordinary_user', user.first_name
+  end
+
   test "check non-admin active user properties" do
     @active_user = users(:active)     # get the active user
     assert !@active_user.is_admin, 'is_admin should not be set for a non-admin user'