forked from External/greenlight
GRN2-180: First stages of refactoring code for v2.4 (#748)
* Email rescues and authenticator concern * Application controller and helper clean up * Moved controller code out of helpers * More helper and email clean up * Cleaned up remaining helpers and create omniauth_options * Controller code clean up * restructured views structure * Restructured role code * Restructured profile and code clean up * Master merge * Added bbb server concern to deal with bbb calls * Bug fixes and changes after changes * rspec * More rubocop fixes
This commit is contained in:
88
spec/concerns/bbb_server_spec.rb
Normal file
88
spec/concerns/bbb_server_spec.rb
Normal file
@ -0,0 +1,88 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||
#
|
||||
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License along
|
||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
require "rails_helper"
|
||||
require 'bigbluebutton_api'
|
||||
|
||||
describe BbbServer do
|
||||
include BbbServer
|
||||
|
||||
let(:bbb_server) { BigBlueButton::BigBlueButtonApi.new("http://bbb.example.com/bigbluebutton/api", "secret", "0.8") }
|
||||
|
||||
before do
|
||||
@user = create(:user)
|
||||
@room = @user.main_room
|
||||
end
|
||||
|
||||
context "#running?" do
|
||||
it "should return false when not running" do
|
||||
expect(room_running?(@room.bbb_id)).to be false
|
||||
end
|
||||
|
||||
it "should return true when running" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
expect(room_running?(@room.bbb_id)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context "#start_session" do
|
||||
it "should update latest session info" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:create_meeting).and_return(
|
||||
messageKey: ""
|
||||
)
|
||||
|
||||
expect do
|
||||
start_session(@room)
|
||||
end.to change { @room.sessions }.by(1)
|
||||
|
||||
expect(@room.last_session).not_to be nil
|
||||
end
|
||||
end
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
endpoint = Rails.configuration.bigbluebutton_endpoint
|
||||
secret = Rails.configuration.bigbluebutton_secret
|
||||
fullname = "fullName=Example"
|
||||
join_via_html5 = "&join_via_html5=true"
|
||||
meeting_id = "&meetingID=#{@room.bbb_id}"
|
||||
password = "&password=#{@room.attendee_pw}"
|
||||
|
||||
query = fullname + join_via_html5 + meeting_id + password
|
||||
checksum_string = "join#{query + secret}"
|
||||
|
||||
checksum = OpenSSL::Digest.digest('sha1', checksum_string).unpack1("H*")
|
||||
expect(join_path(@room, "Example")).to eql("#{endpoint}join?#{query}&checksum=#{checksum}")
|
||||
end
|
||||
end
|
||||
|
||||
context "#recordings" do
|
||||
it "deletes the recording" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:delete_recordings).and_return(
|
||||
returncode: true, deleted: true
|
||||
)
|
||||
|
||||
expect(delete_recording(Faker::IDNumber.valid))
|
||||
.to contain_exactly([:returncode, true], [:deleted, true])
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user