diff --git a/app/models/user.rb b/app/models/user.rb index 68df97a65..d70a260ea 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -24,10 +24,16 @@ class User < ApplicationRecord transaction do accesses.destroy_all update! active: false, identity: nil + close_remote_connections end end def setup? name != identity.email_address end + + private + def close_remote_connections + ActionCable.server.remote_connections.where(current_user: self).disconnect(reconnect: false) + end end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 5ffc5db56..36b0e7986 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -25,7 +25,10 @@ class UserTest < ActiveSupport::TestCase test "deactivate" do assert_changes -> { users(:jz).active? }, from: true, to: false do assert_changes -> { users(:jz).accesses.count }, from: 1, to: 0 do - users(:jz).deactivate + users(:jz).tap do |user| + user.stubs(:close_remote_connections).once + user.deactivate + end end end end