forked from External/greenlight
GRN2-253: Added the ability to share rooms across multiple users (#912)
* Added ability to share rooms with other users * Fixed testcases
This commit is contained in:
committed by
farhatahmad
parent
8cbfc3f730
commit
967130e57c
@ -345,34 +345,52 @@ describe AdminsController, type: :controller do
|
||||
end
|
||||
end
|
||||
|
||||
it "clears all users social uids if clear auth button is clicked" do
|
||||
allow_any_instance_of(ApplicationController).to receive(:set_user_domain).and_return("provider1")
|
||||
controller.instance_variable_set(:@user_domain, "provider1")
|
||||
context "POST #shared_access" do
|
||||
it "changes the shared access setting" do
|
||||
allow(Rails.configuration).to receive(:loadbalanced_configuration).and_return(true)
|
||||
allow_any_instance_of(User).to receive(:greenlight_account?).and_return(true)
|
||||
|
||||
@request.session[:user_id] = @admin.id
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
@admin.add_role :super_admin
|
||||
@admin.update_attribute(:provider, "greenlight")
|
||||
@user2 = create(:user, provider: "provider1")
|
||||
@user3 = create(:user, provider: "provider1")
|
||||
post :update_settings, params: { setting: "Shared Access", value: "false" }
|
||||
|
||||
@user.update_attribute(:social_uid, Faker::Internet.password)
|
||||
@user2.update_attribute(:social_uid, Faker::Internet.password)
|
||||
@user3.update_attribute(:social_uid, Faker::Internet.password)
|
||||
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Shared Access")
|
||||
|
||||
expect(@user.social_uid).not_to be(nil)
|
||||
expect(@user2.social_uid).not_to be(nil)
|
||||
expect(@user3.social_uid).not_to be(nil)
|
||||
expect(feature[:value]).to eq("false")
|
||||
expect(response).to redirect_to(admin_site_settings_path)
|
||||
end
|
||||
end
|
||||
|
||||
post :clear_auth
|
||||
context "POST #clear_auth" do
|
||||
it "clears all users social uids if clear auth button is clicked" do
|
||||
allow_any_instance_of(ApplicationController).to receive(:set_user_domain).and_return("provider1")
|
||||
controller.instance_variable_set(:@user_domain, "provider1")
|
||||
|
||||
@user.reload
|
||||
@user2.reload
|
||||
@user3.reload
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
expect(@user.social_uid).to be(nil)
|
||||
expect(@user2.social_uid).to be(nil)
|
||||
expect(@user3.social_uid).to be(nil)
|
||||
@admin.add_role :super_admin
|
||||
@admin.update_attribute(:provider, "greenlight")
|
||||
@user2 = create(:user, provider: "provider1")
|
||||
@user3 = create(:user, provider: "provider1")
|
||||
|
||||
@user.update_attribute(:social_uid, Faker::Internet.password)
|
||||
@user2.update_attribute(:social_uid, Faker::Internet.password)
|
||||
@user3.update_attribute(:social_uid, Faker::Internet.password)
|
||||
|
||||
expect(@user.social_uid).not_to be(nil)
|
||||
expect(@user2.social_uid).not_to be(nil)
|
||||
expect(@user3.social_uid).not_to be(nil)
|
||||
|
||||
post :clear_auth
|
||||
|
||||
@user.reload
|
||||
@user2.reload
|
||||
@user3.reload
|
||||
|
||||
expect(@user.social_uid).to be(nil)
|
||||
expect(@user2.social_uid).to be(nil)
|
||||
expect(@user3.social_uid).to be(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -605,4 +605,122 @@ describe RoomsController, type: :controller do
|
||||
expect(response).to redirect_to room_path(@user1.main_room)
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST #shared_access" do
|
||||
before do
|
||||
@user = create(:user)
|
||||
@room = create(:room, owner: @user)
|
||||
@user1 = create(:user)
|
||||
allow(Rails.configuration).to receive(:shared_access_default).and_return("true")
|
||||
end
|
||||
|
||||
it "shares a room with another user" do
|
||||
@request.session[:user_id] = @user.id
|
||||
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [@user1.uid] }
|
||||
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to room_path(@room)
|
||||
end
|
||||
|
||||
it "allows a user to view a shared room and start it" do
|
||||
@request.session[:user_id] = @user.id
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [@user1.uid] }
|
||||
|
||||
allow(controller).to receive(:current_user).and_return(@user1)
|
||||
get :show, params: { room_uid: @room.uid }
|
||||
expect(response).to render_template(:show)
|
||||
end
|
||||
|
||||
it "unshares a room from the user if they are removed from the list" do
|
||||
SharedAccess.create(room_id: @room.id, user_id: @user1.id)
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
|
||||
@request.session[:user_id] = @user.id
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [] }
|
||||
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be false
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to room_path(@room)
|
||||
end
|
||||
|
||||
it "doesn't allow a user to share a room they don't own" do
|
||||
@request.session[:user_id] = @user1.id
|
||||
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [@user1.uid] }
|
||||
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be false
|
||||
expect(response).to redirect_to root_path
|
||||
end
|
||||
|
||||
it "disables shared room functionality if the site setting is disabled" do
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_return("false")
|
||||
|
||||
@request.session[:user_id] = @user.id
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [@user1.uid] }
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
|
||||
allow(controller).to receive(:current_user).and_return(@user1)
|
||||
get :show, params: { room_uid: @room.uid }
|
||||
expect(response).to render_template(:join)
|
||||
end
|
||||
|
||||
it "allows admins to update room access" do
|
||||
@admin = create(:user)
|
||||
@admin.add_role :admin
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [@user1.uid] }
|
||||
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to room_path(@room)
|
||||
end
|
||||
|
||||
it "redirects to root path if not admin of current user" do
|
||||
allow_any_instance_of(User).to receive(:admin_of?).and_return(false)
|
||||
@admin = create(:user)
|
||||
@admin.add_role :admin
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
post :shared_access, params: { room_uid: @room.uid, add: [] }
|
||||
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST #remove_shared_access" do
|
||||
before do
|
||||
@user = create(:user)
|
||||
@room = create(:room, owner: @user)
|
||||
@user1 = create(:user)
|
||||
allow(Rails.configuration).to receive(:shared_access_default).and_return("true")
|
||||
end
|
||||
|
||||
it "unshares a room from the user if they click the remove button" do
|
||||
SharedAccess.create(room_id: @room.id, user_id: @user1.id)
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
|
||||
@request.session[:user_id] = @user1.id
|
||||
post :remove_shared_access, params: { room_uid: @room.uid, user_id: @user1.id }
|
||||
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be false
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to @user1.main_room
|
||||
end
|
||||
|
||||
it "doesn't allow some random user to change share access" do
|
||||
@user2 = create(:user)
|
||||
|
||||
SharedAccess.create(room_id: @room.id, user_id: @user1.id)
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
|
||||
@request.session[:user_id] = @user2.id
|
||||
post :remove_shared_access, params: { room_uid: @room.uid, user_id: @user1.id }
|
||||
|
||||
expect(SharedAccess.exists?(room_id: @room.id, user_id: @user1.id)).to be true
|
||||
expect(response).to redirect_to root_path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user