X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/03cad948e30d8f82d0c1c5e249cd6c92bb44dd3d..a8aaf62e629f0c67b938b6c27657a225364d3c39:/test/models/user_test.rb diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 72e1ca5d9..5c48bb969 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -239,11 +239,11 @@ class UserTest < ActiveSupport::TestCase assert_predicate create(:administrator_user), :administrator? end - def test_has_role? - assert_not create(:user).has_role?("administrator") - assert_not create(:user).has_role?("moderator") - assert create(:administrator_user).has_role?("administrator") - assert create(:moderator_user).has_role?("moderator") + def test_role? + assert_not create(:user).role?("administrator") + assert_not create(:user).role?("moderator") + assert create(:administrator_user).role?("administrator") + assert create(:moderator_user).role?("moderator") end def test_soft_destroy @@ -258,4 +258,86 @@ class UserTest < ActiveSupport::TestCase assert_not user.visible? assert_not user.active? end + + def test_soft_destroy_revokes_oauth1_tokens + user = create(:user) + access_token = create(:access_token, :user => user) + assert_equal 1, user.oauth_tokens.authorized.count + + user.soft_destroy + + assert_equal 0, user.oauth_tokens.authorized.count + access_token.reload + assert_predicate access_token, :invalidated? + end + + def test_soft_destroy_revokes_oauth2_tokens + user = create(:user) + oauth_access_token = create(:oauth_access_token, :resource_owner_id => user.id) + assert_equal 1, user.access_tokens.not_expired.count + + user.soft_destroy + + assert_equal 0, user.access_tokens.not_expired.count + oauth_access_token.reload + assert_predicate oauth_access_token, :revoked? + end + + def test_deletion_allowed_when_no_changesets + with_user_account_deletion_delay(10000) do + user = create(:user) + assert_predicate user, :deletion_allowed? + end + end + + def test_deletion_allowed_without_delay + with_user_account_deletion_delay(nil) do + user = create(:user) + create(:changeset, :user => user) + user.reload + assert_predicate user, :deletion_allowed? + end + end + + def test_deletion_allowed_past_delay + with_user_account_deletion_delay(10) do + user = create(:user) + create(:changeset, :user => user, :created_at => Time.now.utc - 12.hours, :closed_at => Time.now.utc - 10.hours) + user.reload + assert_predicate user, :deletion_allowed? + end + end + + def test_deletion_allowed_during_delay + with_user_account_deletion_delay(10) do + user = create(:user) + create(:changeset, :user => user, :created_at => Time.now.utc - 11.hours, :closed_at => Time.now.utc - 9.hours) + user.reload + assert_not_predicate user, :deletion_allowed? + assert_equal Time.now.utc + 1.hour, user.deletion_allowed_at + end + end + + def test_deletion_allowed_past_zero_delay + with_user_account_deletion_delay(0) do + user = create(:user) + create(:changeset, :user => user, :created_at => Time.now.utc, :closed_at => Time.now.utc + 1.hour) + travel 90.minutes do + user.reload + assert_predicate user, :deletion_allowed? + end + end + end + + def test_deletion_allowed_during_zero_delay + with_user_account_deletion_delay(0) do + user = create(:user) + create(:changeset, :user => user, :created_at => Time.now.utc, :closed_at => Time.now.utc + 1.hour) + travel 30.minutes do + user.reload + assert_not_predicate user, :deletion_allowed? + assert_equal Time.now.utc + 30.minutes, user.deletion_allowed_at + end + end + end end