Skip to content
Snippets Groups Projects
Unverified Commit 964d7468 authored by Markus Otto's avatar Markus Otto Committed by GitHub
Browse files

Fix cascaded deletion of shared_access for users and rooms (#3055)


* GIT-2444: add test for deletion of shared rooms

* GIT-3054: add test for deletion of user with shared rooms

* GIT-2444: fix deletion of shared rooms

Fixes #2444

* GIT-3054: fix deletion of user with shared rooms

Fixes #3054

Co-authored-by: default avatarAhmad Farhat <ahmad.af.farhat@gmail.com>
parent f0f880b2
No related branches found
No related tags found
No related merge requests found
...@@ -28,7 +28,7 @@ class Room < ApplicationRecord ...@@ -28,7 +28,7 @@ class Room < ApplicationRecord
validates :name, presence: true validates :name, presence: true
belongs_to :owner, class_name: 'User', foreign_key: :user_id belongs_to :owner, class_name: 'User', foreign_key: :user_id
has_many :shared_access has_many :shared_access, dependent: :destroy
has_one_attached :presentation has_one_attached :presentation
......
...@@ -28,7 +28,7 @@ class User < ApplicationRecord ...@@ -28,7 +28,7 @@ class User < ApplicationRecord
before_destroy :destroy_rooms before_destroy :destroy_rooms
has_many :rooms has_many :rooms
has_many :shared_access has_many :shared_access, dependent: :destroy
belongs_to :main_room, class_name: 'Room', foreign_key: :room_id, required: false belongs_to :main_room, class_name: 'Room', foreign_key: :room_id, required: false
has_and_belongs_to_many :roles, join_table: :users_roles # obsolete has_and_belongs_to_many :roles, join_table: :users_roles # obsolete
......
...@@ -535,6 +535,18 @@ describe RoomsController, type: :controller do ...@@ -535,6 +535,18 @@ describe RoomsController, type: :controller do
expect(response).to redirect_to(@user.main_room) expect(response).to redirect_to(@user.main_room)
end end
it "should also delete shared rooms" do
guest = create(:user)
SharedAccess.create(room_id: @secondary_room.id, user_id: guest.id)
@request.session[:user_id] = @user.id
delete :destroy, params: { room_uid: @secondary_room }
expect(Room.exists?(@secondary_room.id)).to be false
expect(SharedAccess.exists?(room_id: @secondary_room.id, user_id: guest.id)).to be false
end
it "should not delete room if not owner" do it "should not delete room if not owner" do
random_user = create(:user) random_user = create(:user)
@request.session[:user_id] = random_user.id @request.session[:user_id] = random_user.id
......
...@@ -603,6 +603,20 @@ describe UsersController, type: :controller do ...@@ -603,6 +603,20 @@ describe UsersController, type: :controller do
expect(flash[:alert]).to be_present expect(flash[:alert]).to be_present
expect(response).to redirect_to(admins_path) expect(response).to redirect_to(admins_path)
end end
it "allows user deletion with shared access to rooms" do
owner = create(:user)
guest = create(:user)
room = create(:room, owner: owner)
SharedAccess.create(room_id: room.id, user_id: guest.id)
@request.session[:user_id] = guest.id
delete :destroy, params: { user_uid: guest.uid }
expect(User.include_deleted.find_by(uid: guest.uid)).to be_nil
expect(SharedAccess.exists?(room_id: room.id, user_id: guest.id)).to be false
expect(response).to redirect_to(root_path)
end
end end
describe "GET | POST #terms" do describe "GET | POST #terms" do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment