Merge v2.7-alpha (#1951)

* Fix wrong conditional (reported by LGTM) (#1477)

Signed-off-by: Stefan Weil <sw@weilnetz.de>

Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>

* Bump rack from 2.2.2 to 2.2.3 (#1839)

Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [FIX]  Unable to edit long recording names #1776  (#1780)

* Allow to set a filter for LDAP authentication

* [FIX] Unable to edit long recording names #1776

Co-authored-by: François Ménabé <francois.menabe@unistra.fr>
Co-authored-by: farhatahmad <ahmad.af.farhat@gmail.com>

* Desgin for Manage Users Tabs (#1777)

* Update _subtitle.html.erb

* Update _manage_users_tags.html.erb

* Update admins.scss

* Update _primary_themes.scss

* Update _manage_users_tags.html.erb

* Minor style changes to manage users (#1845)

* Maintenance banner moved to admin site (#1775)

* initial

* finish

* travis fixes

* travis again

* not required

* Co-authored-by: Tobias Fiebig <t.fiebig@tudelft.nl> (#1296)

Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>

* Enhance Room OpenGraph Metadata (#1601)

* Revert "Enhance Room OpenGraph Metadata (#1601)" (#1852)

This reverts commit 3b007c233a.

* GRN2-xx: Tab title now displays the current page name (#1853)

* Tab title now displays the current page name

* Added page title for the rest of the pages

* Split Site Settings into 3 different tabs (#1858)

* Split Site Settings into 3 different tabs

* Fix copyright

* Added redirect to correct tab

* Make sure settings are displaying when they should

* Update en.yml (#1857)

* Build images for alpha branches (#1867)

* Upgraded jquery to latest version (#1896)

* Added favicon tag (#1898)

* Fixed XSS issue with role name (#1899)

* Update path for coloring redirect (#1908)

* Added a fourth section to the room uid (#1910)

* Fixed issue with insecure room sharing removal (#1914)

* Fixes typo (#1917)

Fixes typo: successfully was written incorrect.

* Fixed order of rooms in server rooms (#1915)

* Change default room sort to latest activity (#1919)

* GRN2-xx: Small changes/improvements to the recording settings (#1851)

* Small changes/improvements to the recording settings

* Replaced room warning with info flash

* Added global setting to enable/disable the recording consent feature

* Replace Legal with Terms (#1931)

* Added a more friendly OpenGraph description when invited to join a room (#1932)

* Fixed issue causing maintenance banner not to hide correctly (#1933)

* Hide recording menu and recording list when it is disabled (#1935)

* Hide recording menu and recording list when it is disabled

* Hide recording list when disabled

* GRN2-xx: Added an auto-refresh after 2 mins while waiting for room to start (#1947)

* Added an auto-refresh after 2 mins while waiting for room to start

* Fixed random issue with test case

* GRN2-xx: Added ability to preupload presentations to rooms (#1895)

* Added ability to preupload presentations to rooms (#1868)

* Added setting to site settings and allowed admins to change the presentation

* Added AWS S3 and GCS Storage ENV variables

* Added check to ensure file extension is correct

* Added icon to remove presentation

* Added testcases for preupload

* Add nginx redirect to solve issue with relative root

* Record title, instead of room name, in the popup (#1924)

* Update _public_recording_row.html.erb

* Update _recording_row.html.erb

Co-authored-by: Stefan Weil <sw@weilnetz.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: beckerr-rzht <beckerr@hochschule-trier.de>
Co-authored-by: François Ménabé <francois.menabe@unistra.fr>
Co-authored-by: MrKeksi <mrkeksi@users.noreply.github.com>
Co-authored-by: yanosz <yanosz@users.noreply.github.com>
Co-authored-by: Moritz Schlarb <moschlar@metalabs.de>
Co-authored-by: chronikum <34622984+chronikum@users.noreply.github.com>
Co-authored-by: Mitsutaka Sato <miztaka@honestyworks.jp>
Co-authored-by: hiroshisuga <45039819+hiroshisuga@users.noreply.github.com>
This commit is contained in:
Ahmad Farhat
2020-07-29 11:03:22 -04:00
committed by GitHub
parent 50c2070188
commit 60cf5f7440
64 changed files with 1463 additions and 399 deletions

View File

@ -290,12 +290,12 @@ describe AdminsController, type: :controller do
@request.session[:user_id] = @admin.id
fake_image_url = "example.com"
post :update_settings, params: { setting: "Branding Image", value: fake_image_url }
post :update_settings, params: { setting: "Branding Image", value: fake_image_url, tab: "appearance" }
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Branding Image")
expect(feature[:value]).to eq(fake_image_url)
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
end
end
@ -307,12 +307,12 @@ describe AdminsController, type: :controller do
@request.session[:user_id] = @admin.id
fake_url = "example.com"
post :update_settings, params: { setting: "Legal URL", value: fake_url }
post :update_settings, params: { setting: "Legal URL", value: fake_url, tab: "administration" }
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Legal URL")
expect(feature[:value]).to eq(fake_url)
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "administration"))
end
end
@ -324,12 +324,12 @@ describe AdminsController, type: :controller do
@request.session[:user_id] = @admin.id
fake_url = "example.com"
post :update_settings, params: { setting: "Privacy Policy URL", value: fake_url }
post :update_settings, params: { setting: "Privacy Policy URL", value: fake_url, tab: "administration" }
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Privacy Policy URL")
expect(feature[:value]).to eq(fake_url)
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "administration"))
end
end
@ -346,7 +346,7 @@ describe AdminsController, type: :controller do
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Primary Color")
expect(feature[:value]).to eq(primary_color)
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
end
it "changes the primary-lighten on the page" do
@ -356,12 +356,12 @@ describe AdminsController, type: :controller do
@request.session[:user_id] = @admin.id
primary_color = Faker::Color.hex_color
post :update_settings, params: { setting: "Primary Color Lighten", value: primary_color }
post :update_settings, params: { setting: "Primary Color Lighten", value: primary_color, tab: "appearance" }
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Primary Color Lighten")
expect(feature[:value]).to eq(primary_color)
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
end
it "changes the primary-darken on the page" do
@ -371,12 +371,12 @@ describe AdminsController, type: :controller do
@request.session[:user_id] = @admin.id
primary_color = Faker::Color.hex_color
post :update_settings, params: { setting: "Primary Color Darken", value: primary_color }
post :update_settings, params: { setting: "Primary Color Darken", value: primary_color, tab: "appearance" }
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Primary Color Darken")
expect(feature[:value]).to eq(primary_color)
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "appearance"))
end
end
end
@ -396,7 +396,7 @@ describe AdminsController, type: :controller do
expect(feature[:value]).to eq(Rails.configuration.registration_methods[:invite])
expect(flash[:success]).to be_present
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
it "does not allow the user to change to invite if emails are off" do
@ -409,7 +409,7 @@ describe AdminsController, type: :controller do
post :registration_method, params: { value: "invite" }
expect(flash[:alert]).to be_present
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
end
@ -425,7 +425,7 @@ describe AdminsController, type: :controller do
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Room Authentication")
expect(feature[:value]).to eq("true")
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
end
@ -441,7 +441,7 @@ describe AdminsController, type: :controller do
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Room Limit")
expect(feature[:value]).to eq("5")
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
end
@ -457,7 +457,25 @@ describe AdminsController, type: :controller do
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Default Recording Visibility")
expect(feature[:value]).to eq("public")
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
end
context "POST #maintenance_banner" do
it "displays a banner with the maintenance string" 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
fake_banner_string = "Maintenance work at 2 pm"
post :update_settings, params: { setting: "Maintenance Banner", value: fake_banner_string, tab: "administration" }
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Maintenance Banner")
expect(flash[:success]).to be_present
expect(feature[:value]).to eq(fake_banner_string)
expect(response).to redirect_to(admin_site_settings_path(tab: "administration"))
end
end
@ -473,7 +491,7 @@ describe AdminsController, type: :controller do
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Shared Access")
expect(feature[:value]).to eq("false")
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
end
@ -537,7 +555,7 @@ describe AdminsController, type: :controller do
feature = Setting.find_by(provider: "provider1").features.find_by(name: "Shared Access")
expect(feature[:value]).to eq("false")
expect(response).to redirect_to(admin_site_settings_path)
expect(response).to redirect_to(admin_site_settings_path(tab: "settings"))
end
it "doesn't allow a user with the incorrect permission to edit site settings" do

View File

@ -185,7 +185,7 @@ describe RoomsController, type: :controller do
room_params = { name: name, "mute_on_join": "1",
"require_moderator_approval": "1", "anyone_can_start": "1", "all_join_moderator": "1" }
json_room_settings = "{\"muteOnStart\":true,\"requireModeratorApproval\":true," \
"\"anyoneCanStart\":true,\"joinModerator\":true}"
"\"anyoneCanStart\":true,\"joinModerator\":true,\"recording\":false}"
post :create, params: { room: room_params }
@ -202,8 +202,10 @@ describe RoomsController, type: :controller do
@owner.main_room.update_attribute(:room_settings, { "muteOnStart": true, "requireModeratorApproval": true,
"anyoneCanStart": true, "joinModerator": true }.to_json)
json_room_settings = "{\"muteOnStart\":true,\"requireModeratorApproval\":true," \
"\"anyoneCanStart\":true,\"joinModerator\":true}"
json_room_settings = { "anyoneCanStart" => true,
"joinModerator" => true,
"muteOnStart" => true,
"requireModeratorApproval" => true }
get :room_settings, params: { room_uid: @owner.main_room }, format: :json
@ -571,7 +573,7 @@ describe RoomsController, type: :controller do
it "properly updates room name through the room settings modal and redirects to current page" do
@request.session[:user_id] = @user.id
name = Faker::Games::Pokemon.name
name = Faker::Name.first_name
room_params = { room_uid: @secondary_room.uid, room: { "name": name } }
@ -583,9 +585,9 @@ describe RoomsController, type: :controller do
it "properly updates room settings through the room settings modal and redirects to current page" do
@request.session[:user_id] = @user.id
room_params = { "mute_on_join": "1", "name": @secondary_room.name }
room_params = { "mute_on_join": "1", "name": @secondary_room.name, "recording": "1" }
formatted_room_params = "{\"muteOnStart\":true,\"requireModeratorApproval\":false," \
"\"anyoneCanStart\":false,\"joinModerator\":false}" # JSON string format
"\"anyoneCanStart\":false,\"joinModerator\":false,\"recording\":true}" # JSON string format
expect { post :update_settings, params: { room_uid: @secondary_room.uid, room: room_params } }
.to change { @secondary_room.reload.room_settings }
@ -608,7 +610,7 @@ describe RoomsController, type: :controller do
room_params = { "mute_on_join": "1", "name": @secondary_room.name }
formatted_room_params = "{\"muteOnStart\":true,\"requireModeratorApproval\":false," \
"\"anyoneCanStart\":false,\"joinModerator\":false}" # JSON string format
"\"anyoneCanStart\":false,\"joinModerator\":false,\"recording\":false}" # JSON string format
expect { post :update_settings, params: { room_uid: @secondary_room.uid, room: room_params } }
.to change { @secondary_room.reload.room_settings }
@ -814,4 +816,107 @@ describe RoomsController, type: :controller do
expect(response).to redirect_to root_path
end
end
describe "POST #preupload_presentation" do
before do
@user = create(:user)
@file = fixture_file_upload('files/sample.pdf', 'application/pdf')
@invalid_file = fixture_file_upload('files/invalid.jpg', 'image/jpg')
allow(Rails.configuration).to receive(:preupload_presentation_default).and_return("true")
end
it "adds a presentation to the room" do
@request.session[:user_id] = @user.id
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
expect(@user.main_room.presentation.attached?).to be true
expect(flash[:success]).to be_present
expect(response).to redirect_to @user.main_room
end
it "rejects file types that are not allowed" do
@request.session[:user_id] = @user.id
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @invalid_file } }
expect(@user.main_room.presentation.attached?).to be false
expect(flash[:alert]).to be_present
expect(response).to redirect_to @user.main_room
end
it "allows admins to add a presentation to the room" do
allow_any_instance_of(User).to receive(:admin_of?).and_return(true)
@admin = create(:user)
@admin.set_role :admin
@request.session[:user_id] = @admin.id
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
expect(@user.main_room.presentation.attached?).to be true
expect(flash[:success]).to be_present
expect(response).to redirect_to @user.main_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.set_role :admin
@request.session[:user_id] = @admin.id
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
expect(response).to redirect_to(root_path)
end
end
describe "POST #remove_presentation" do
before do
@user = create(:user)
@user.main_room.presentation.attach(fixture_file_upload('files/sample.pdf', 'application/pdf'))
allow(Rails.configuration).to receive(:shared_access_default).and_return("true")
end
it "removes a presentation from a room" do
@request.session[:user_id] = @user.id
expect(@user.main_room.presentation.attached?).to be true
post :remove_presentation, params: { room_uid: @user.main_room }
@user.main_room.reload
expect(@user.main_room.presentation.attached?).to be false
expect(flash[:success]).to be_present
expect(response).to redirect_to @user.main_room
end
it "allows admins to remove a presentation from a room" do
allow_any_instance_of(User).to receive(:admin_of?).and_return(true)
@admin = create(:user)
@admin.set_role :admin
@request.session[:user_id] = @admin.id
expect(@user.main_room.presentation.attached?).to be true
post :remove_presentation, params: { room_uid: @user.main_room }
@user.main_room.reload
expect(@user.main_room.presentation.attached?).to be false
expect(flash[:success]).to be_present
expect(response).to redirect_to @user.main_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.set_role :admin
@request.session[:user_id] = @admin.id
post :preupload_presentation, params: { room_uid: @user.main_room, room: { presentation: @file } }
expect(response).to redirect_to(root_path)
end
end
end

BIN
spec/fixtures/files/invalid.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

198
spec/fixtures/files/sample.pdf vendored Normal file
View File

@ -0,0 +1,198 @@
%PDF-1.3
%<25><><EFBFBD><EFBFBD>
1 0 obj
<<
/Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj
2 0 obj
<<
/Type /Outlines
/Count 0
>>
endobj
3 0 obj
<<
/Type /Pages
/Count 2
/Kids [ 4 0 R 6 0 R ]
>>
endobj
4 0 obj
<<
/Type /Page
/Parent 3 0 R
/Resources <<
/Font <<
/F1 9 0 R
>>
/ProcSet 8 0 R
>>
/MediaBox [0 0 612.0000 792.0000]
/Contents 5 0 R
>>
endobj
5 0 obj
<< /Length 1074 >>
stream
2 J
BT
0 0 0 rg
/F1 0027 Tf
57.3750 722.2800 Td
( A Simple PDF File ) Tj
ET
BT
/F1 0010 Tf
69.2500 688.6080 Td
( This is a small demonstration .pdf file - ) Tj
ET
BT
/F1 0010 Tf
69.2500 664.7040 Td
( just for use in the Virtual Mechanics tutorials. More text. And more ) Tj
ET
BT
/F1 0010 Tf
69.2500 652.7520 Td
( text. And more text. And more text. And more text. ) Tj
ET
BT
/F1 0010 Tf
69.2500 628.8480 Td
( And more text. And more text. And more text. And more text. And more ) Tj
ET
BT
/F1 0010 Tf
69.2500 616.8960 Td
( text. And more text. Boring, zzzzz. And more text. And more text. And ) Tj
ET
BT
/F1 0010 Tf
69.2500 604.9440 Td
( more text. And more text. And more text. And more text. And more text. ) Tj
ET
BT
/F1 0010 Tf
69.2500 592.9920 Td
( And more text. And more text. ) Tj
ET
BT
/F1 0010 Tf
69.2500 569.0880 Td
( And more text. And more text. And more text. And more text. And more ) Tj
ET
BT
/F1 0010 Tf
69.2500 557.1360 Td
( text. And more text. And more text. Even more. Continued on page 2 ...) Tj
ET
endstream
endobj
6 0 obj
<<
/Type /Page
/Parent 3 0 R
/Resources <<
/Font <<
/F1 9 0 R
>>
/ProcSet 8 0 R
>>
/MediaBox [0 0 612.0000 792.0000]
/Contents 7 0 R
>>
endobj
7 0 obj
<< /Length 676 >>
stream
2 J
BT
0 0 0 rg
/F1 0027 Tf
57.3750 722.2800 Td
( Simple PDF File 2 ) Tj
ET
BT
/F1 0010 Tf
69.2500 688.6080 Td
( ...continued from page 1. Yet more text. And more text. And more text. ) Tj
ET
BT
/F1 0010 Tf
69.2500 676.6560 Td
( And more text. And more text. And more text. And more text. And more ) Tj
ET
BT
/F1 0010 Tf
69.2500 664.7040 Td
( text. Oh, how boring typing this stuff. But not as boring as watching ) Tj
ET
BT
/F1 0010 Tf
69.2500 652.7520 Td
( paint dry. And more text. And more text. And more text. And more text. ) Tj
ET
BT
/F1 0010 Tf
69.2500 640.8000 Td
( Boring. More, a little more text. The end, and just as well. ) Tj
ET
endstream
endobj
8 0 obj
[/PDF /Text]
endobj
9 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
10 0 obj
<<
/Creator (Rave \(http://www.nevrona.com/rave\))
/Producer (Nevrona Designs)
/CreationDate (D:20060301072826)
>>
endobj
xref
0 11
0000000000 65535 f
0000000019 00000 n
0000000093 00000 n
0000000147 00000 n
0000000222 00000 n
0000000390 00000 n
0000001522 00000 n
0000001690 00000 n
0000002423 00000 n
0000002456 00000 n
0000002574 00000 n
trailer
<<
/Size 11
/Root 1 0 R
/Info 10 0 R
>>
startxref
2714
%%EOF