From 062525d2d58cfe05253fd71a748577049995d0f8 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Wed, 27 Jan 2021 19:48:39 -0500 Subject: [PATCH] Pass createTime as part of the join call (#2488) --- app/controllers/concerns/bbb_server.rb | 3 ++- spec/concerns/bbb_server_spec.rb | 14 ++++++++++---- spec/controllers/rooms_controller_spec.rb | 8 ++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/controllers/concerns/bbb_server.rb b/app/controllers/concerns/bbb_server.rb index ab49c9ba..01718c63 100644 --- a/app/controllers/concerns/bbb_server.rb +++ b/app/controllers/concerns/bbb_server.rb @@ -54,6 +54,7 @@ module BbbServer join_opts = {} join_opts[:userID] = uid if uid join_opts[:join_via_html5] = true + join_opts[:createTime] = room.last_session.to_datetime.strftime("%Q") bbb_server.join_meeting_url(room.bbb_id, name, password, join_opts) end @@ -88,7 +89,7 @@ module BbbServer end unless meeting[:messageKey] == 'duplicateWarning' - room.update_attributes(sessions: room.sessions + 1, last_session: DateTime.now) + room.update_attributes(sessions: room.sessions + 1, last_session: DateTime.strptime(meeting[:createTime].to_s, "%Q")) end rescue BigBlueButton::BigBlueButtonException => e puts "BigBlueButton failed on create: #{e.key}: #{e.message}" diff --git a/spec/concerns/bbb_server_spec.rb b/spec/concerns/bbb_server_spec.rb index 350bcee0..6d3f3364 100644 --- a/spec/concerns/bbb_server_spec.rb +++ b/spec/concerns/bbb_server_spec.rb @@ -43,7 +43,8 @@ describe BbbServer do context "#start_session" do it "should update latest session info" do allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:create_meeting).and_return( - messageKey: "" + messageKey: "", + createTime: "1611793449622" ) expect do @@ -57,17 +58,22 @@ describe BbbServer do context "#join_path" do it "should return correct join URL for user" do allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:get_meeting_info).and_return( - attendeePW: @room.attendee_pw + attendeePW: @room.attendee_pw, + ) + allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:create_meeting).and_return( + messageKey: "", + createTime: "1611793449622" ) endpoint = Rails.configuration.bigbluebutton_endpoint secret = Rails.configuration.bigbluebutton_secret - fullname = "fullName=Example" + fullname = "&fullName=Example" join_via_html5 = "&join_via_html5=true" meeting_id = "&meetingID=#{@room.bbb_id}" password = "&password=#{@room.attendee_pw}" + time = "createTime=1611793449622" - query = fullname + join_via_html5 + meeting_id + password + query = time + fullname + join_via_html5 + meeting_id + password checksum_string = "join#{query + secret}" checksum = OpenSSL::Digest.digest('sha1', checksum_string).unpack1("H*") diff --git a/spec/controllers/rooms_controller_spec.rb b/spec/controllers/rooms_controller_spec.rb index d019954b..675bd92d 100644 --- a/spec/controllers/rooms_controller_spec.rb +++ b/spec/controllers/rooms_controller_spec.rb @@ -251,6 +251,10 @@ describe RoomsController, type: :controller do @user = create(:user) @owner = create(:user) @room = @owner.main_room + allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:create_meeting).and_return( + messageKey: "", + createTime: "1611793449622" + ) end it "should use account name if user is logged in and meeting running" do @@ -521,6 +525,10 @@ describe RoomsController, type: :controller do moderatorPW: "modpass", attendeePW: "attpass", ) + allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:create_meeting).and_return( + messageKey: "", + createTime: "1611793449622" + ) end it "should redirect to join path if owner" do