X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/07fe77b4fcfbbfd582da7b257c024b55accba705..10d65cc8571d38bb6af6d9022edb98a294ad2f2d:/test/models/user_test.rb?ds=sidebyside diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 50615233f..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 @@ -259,7 +259,7 @@ class UserTest < ActiveSupport::TestCase assert_not user.active? end - def test_soft_destroy_revokes_access_tokens + 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 @@ -271,7 +271,7 @@ class UserTest < ActiveSupport::TestCase assert_predicate access_token, :invalidated? end - def test_soft_destroy_revokes_oauth_access_tokens + 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 @@ -282,4 +282,62 @@ class UserTest < ActiveSupport::TestCase 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