bigbluebutton_rails 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +21 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +4 -11
- data/Rakefile +15 -15
- data/app/controllers/bigbluebutton/recordings_controller.rb +1 -1
- data/app/controllers/bigbluebutton/rooms_controller.rb +10 -12
- data/app/controllers/bigbluebutton/servers_controller.rb +4 -5
- data/app/models/bigbluebutton_meeting.rb +1 -2
- data/app/models/bigbluebutton_metadata.rb +2 -2
- data/app/models/bigbluebutton_recording.rb +20 -5
- data/app/models/bigbluebutton_room.rb +80 -102
- data/app/models/bigbluebutton_server.rb +31 -17
- data/app/views/bigbluebutton/recordings/_form.html.erb +13 -13
- data/app/views/bigbluebutton/rooms/_form.html.erb +0 -4
- data/app/views/bigbluebutton/rooms/_rooms.html.erb +0 -4
- data/app/views/bigbluebutton/rooms/show.html.erb +0 -4
- data/app/workers/bigbluebutton_update_recordings.rb +2 -2
- data/config/locales/en.yml +1 -2
- data/config/locales/pt-br.yml +1 -2
- data/lib/bigbluebutton_rails.rb +22 -108
- data/lib/bigbluebutton_rails/background_tasks.rb +7 -3
- data/lib/bigbluebutton_rails/configuration.rb +80 -0
- data/lib/bigbluebutton_rails/rails/routes.rb +7 -6
- data/lib/bigbluebutton_rails/version.rb +1 -1
- data/lib/generators/bigbluebutton_rails/install_generator.rb +10 -1
- data/lib/generators/bigbluebutton_rails/templates/migration.rb +0 -3
- data/lib/generators/bigbluebutton_rails/templates/migration_2_2_0.rb +13 -0
- data/spec/controllers/bigbluebutton/recordings_controller_json_responses_spec.rb +4 -5
- data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +3 -2
- data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +1 -1
- data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +4 -4
- data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +53 -38
- data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +7 -19
- data/spec/controllers/bigbluebutton/servers_controller_spec.rb +32 -51
- data/spec/factories/bigbluebutton_meeting.rb +0 -1
- data/spec/factories/bigbluebutton_recording.rb +1 -0
- data/spec/factories/bigbluebutton_room.rb +0 -1
- data/spec/models/bigbluebutton_meeting_db_spec.rb +0 -1
- data/spec/models/bigbluebutton_meeting_spec.rb +0 -3
- data/spec/models/bigbluebutton_metadata_spec.rb +4 -4
- data/spec/models/bigbluebutton_recording_spec.rb +32 -0
- data/spec/models/bigbluebutton_room_db_spec.rb +0 -2
- data/spec/models/bigbluebutton_room_spec.rb +138 -244
- data/spec/models/bigbluebutton_server_spec.rb +40 -21
- data/spec/rails_app/db/seeds.rb +1 -1
- data/spec/rails_app/features/config.yml.example +4 -4
- data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +0 -1
- data/spec/rails_app/features/support/templates.rb +0 -4
- data/spec/rails_app/lib/tasks/db/populate.rake +2 -2
- data/spec/routing/bigbluebutton/servers_only_routing_spec.rb +4 -1
- data/spec/routing/bigbluebutton/servers_routing_spec.rb +4 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/mocked_server.rb +1 -1
- data/spec/workers/bigbluebutton_meeting_updater_spec.rb +3 -3
- metadata +4 -2
@@ -83,10 +83,10 @@ module ActionDispatch::Routing
|
|
83
83
|
|
84
84
|
def bigbluebutton_routes_default(*params) #:nodoc:
|
85
85
|
options = params.extract_options!
|
86
|
-
options_scope = options.has_key?(:scope) ? options[:scope] : BigbluebuttonRails.routing_scope
|
86
|
+
options_scope = options.has_key?(:scope) ? options[:scope] : BigbluebuttonRails.configuration.routing_scope
|
87
87
|
options_as = options.has_key?(:as) ? options[:as] : options_scope
|
88
88
|
options_only = options.has_key?(:only) ? options[:only] : ["servers", "rooms", "recordings", "playback_types"]
|
89
|
-
BigbluebuttonRails.set_controllers(options[:controllers])
|
89
|
+
BigbluebuttonRails.configuration.set_controllers(options[:controllers])
|
90
90
|
|
91
91
|
scope options_scope, :as => options_as do
|
92
92
|
add_routes_for_servers if options_only.include?("servers")
|
@@ -101,7 +101,7 @@ module ActionDispatch::Routing
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def add_routes_for_rooms #:nodoc:
|
104
|
-
resources :rooms, :controller => BigbluebuttonRails.controllers[:rooms] do
|
104
|
+
resources :rooms, :controller => BigbluebuttonRails.configuration.controllers[:rooms] do
|
105
105
|
member do
|
106
106
|
get :join
|
107
107
|
get :running
|
@@ -117,11 +117,12 @@ module ActionDispatch::Routing
|
|
117
117
|
end
|
118
118
|
|
119
119
|
def add_routes_for_servers #:nodoc:
|
120
|
-
resources :servers, :controller => BigbluebuttonRails.controllers[:servers] do
|
120
|
+
resources :servers, :controller => BigbluebuttonRails.configuration.controllers[:servers] do
|
121
121
|
member do
|
122
122
|
get :activity
|
123
123
|
get :rooms
|
124
124
|
get :recordings
|
125
|
+
get :check
|
125
126
|
post :publish_recordings
|
126
127
|
post :unpublish_recordings
|
127
128
|
post :fetch_recordings
|
@@ -131,7 +132,7 @@ module ActionDispatch::Routing
|
|
131
132
|
|
132
133
|
def add_routes_for_recordings #:nodoc:
|
133
134
|
resources :recordings, :except => [:new, :create],
|
134
|
-
:controller => BigbluebuttonRails.controllers[:recordings] do
|
135
|
+
:controller => BigbluebuttonRails.configuration.controllers[:recordings] do
|
135
136
|
member do
|
136
137
|
get :play
|
137
138
|
post :publish
|
@@ -142,7 +143,7 @@ module ActionDispatch::Routing
|
|
142
143
|
|
143
144
|
def add_routes_for_playback_types #:nodoc:
|
144
145
|
resources :playback_types, :only => [:update],
|
145
|
-
:controller => BigbluebuttonRails.controllers[:playback_types]
|
146
|
+
:controller => BigbluebuttonRails.configuration.controllers[:playback_types]
|
146
147
|
end
|
147
148
|
end
|
148
149
|
end
|
@@ -18,11 +18,20 @@ module BigbluebuttonRails
|
|
18
18
|
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
19
19
|
end
|
20
20
|
|
21
|
+
def source_root
|
22
|
+
BigbluebuttonRails::Generators::InstallGenerator.source_root
|
23
|
+
end
|
24
|
+
|
21
25
|
def create_migration_file
|
22
26
|
if migrate_to_version.blank?
|
23
27
|
migration_template "#{migration_path}/migration.rb", "db/migrate/create_bigbluebutton_rails.rb"
|
24
28
|
else
|
25
|
-
|
29
|
+
migrations = Dir.glob(File.join(source_root, migration_path, "migration_#{version_filename}*"))
|
30
|
+
migrations.sort.each do |path|
|
31
|
+
filename = File.basename(path)
|
32
|
+
target_filename = filename.gsub('migration', 'bigbluebutton_rails_to')
|
33
|
+
migration_template "#{migration_path}/#{filename}", "db/migrate/#{target_filename}"
|
34
|
+
end
|
26
35
|
end
|
27
36
|
end
|
28
37
|
|
@@ -11,7 +11,6 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
|
|
11
11
|
end
|
12
12
|
|
13
13
|
create_table :bigbluebutton_rooms do |t|
|
14
|
-
t.integer :server_id
|
15
14
|
t.integer :owner_id
|
16
15
|
t.string :owner_type
|
17
16
|
t.string :meetingid
|
@@ -36,7 +35,6 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
|
|
36
35
|
t.boolean :allow_start_stop_recording, default: true
|
37
36
|
t.timestamps
|
38
37
|
end
|
39
|
-
add_index :bigbluebutton_rooms, :server_id
|
40
38
|
add_index :bigbluebutton_rooms, :meetingid, :unique => true
|
41
39
|
|
42
40
|
create_table :bigbluebutton_room_options do |t|
|
@@ -92,7 +90,6 @@ class CreateBigbluebuttonRails < ActiveRecord::Migration
|
|
92
90
|
end
|
93
91
|
|
94
92
|
create_table :bigbluebutton_meetings do |t|
|
95
|
-
t.integer :server_id
|
96
93
|
t.string :server_url
|
97
94
|
t.string :server_secret
|
98
95
|
t.integer :room_id
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class BigbluebuttonRailsTo220 < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
remove_column :bigbluebutton_meetings, :server_id
|
4
|
+
remove_column :bigbluebutton_rooms, :server_id
|
5
|
+
remove_index :bigbluebutton_rooms, :server_id
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.down
|
9
|
+
add_column :bigbluebutton_meetings, :server_id, :integer
|
10
|
+
add_column :bigbluebutton_rooms, :server_id, :integer
|
11
|
+
add_index :bigbluebutton_rooms, :server_id
|
12
|
+
end
|
13
|
+
end
|
@@ -45,16 +45,15 @@ describe Bigbluebutton::RecordingsController do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
context "on failure" do
|
48
|
+
before {
|
49
|
+
BigbluebuttonRecording.any_instance.should_receive(:update_attributes).and_return(false)
|
50
|
+
}
|
48
51
|
before(:each) {
|
49
|
-
new_recording.recordid = nil # invalid
|
50
52
|
put :update, :id => @recording.to_param, :bigbluebutton_recording => new_recording.attributes, :format => 'json'
|
51
53
|
}
|
52
54
|
it { should respond_with(:unprocessable_entity) }
|
53
55
|
it { should respond_with_content_type('application/json') }
|
54
|
-
it {
|
55
|
-
new_recording.save # should fail
|
56
|
-
should respond_with_json(new_recording.errors.full_messages.to_json)
|
57
|
-
}
|
56
|
+
it { should respond_with_json([].to_json) }
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
@@ -72,7 +72,8 @@ describe Bigbluebutton::RecordingsController do
|
|
72
72
|
}
|
73
73
|
it {
|
74
74
|
saved = BigbluebuttonRecording.find(recording)
|
75
|
-
|
75
|
+
ignored = new_recording.attributes.keys - ['description'] # only description is editable
|
76
|
+
saved.should have_same_attributes_as(new_recording, ignored)
|
76
77
|
}
|
77
78
|
it { should set_the_flash.to(I18n.t('bigbluebutton_rails.recordings.notice.update.success')) }
|
78
79
|
end
|
@@ -91,7 +92,7 @@ describe Bigbluebutton::RecordingsController do
|
|
91
92
|
let(:attrs) { FactoryGirl.attributes_for(:bigbluebutton_recording) }
|
92
93
|
let(:params) { { :bigbluebutton_recording => attrs } }
|
93
94
|
let(:allowed_params) {
|
94
|
-
[ :
|
95
|
+
[ :description ]
|
95
96
|
}
|
96
97
|
it {
|
97
98
|
# we just check that the rails method 'permit' is being called on the hash with the
|
@@ -8,7 +8,7 @@ describe Bigbluebutton::RoomsController do
|
|
8
8
|
let(:bbb_error_msg) { SecureRandom.hex(250) }
|
9
9
|
let(:bbb_error) { BigBlueButton::BigBlueButtonException.new(bbb_error_msg) }
|
10
10
|
let(:http_referer) { bigbluebutton_server_path(mocked_server) }
|
11
|
-
let(:room) { FactoryGirl.create(:bigbluebutton_room
|
11
|
+
let(:room) { FactoryGirl.create(:bigbluebutton_room) }
|
12
12
|
before {
|
13
13
|
BigbluebuttonRoom.stub(:find_by_param) { room }
|
14
14
|
BigbluebuttonRoom.stub(:find) { room }
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Bigbluebutton::RoomsController do
|
4
4
|
render_views
|
5
5
|
let(:server) { FactoryGirl.create(:bigbluebutton_server) }
|
6
|
-
let(:room) { FactoryGirl.create(:bigbluebutton_room
|
6
|
+
let(:room) { FactoryGirl.create(:bigbluebutton_room) }
|
7
7
|
before do
|
8
8
|
BigbluebuttonRoom.stub(:find_by_param) { room }
|
9
9
|
BigbluebuttonRoom.stub(:find) { room }
|
@@ -13,8 +13,8 @@ describe Bigbluebutton::RoomsController do
|
|
13
13
|
|
14
14
|
describe "#index" do
|
15
15
|
before do
|
16
|
-
@room1 = FactoryGirl.create(:bigbluebutton_room
|
17
|
-
@room2 = FactoryGirl.create(:bigbluebutton_room
|
16
|
+
@room1 = FactoryGirl.create(:bigbluebutton_room)
|
17
|
+
@room2 = FactoryGirl.create(:bigbluebutton_room)
|
18
18
|
end
|
19
19
|
before(:each) { get :index, :format => 'json' }
|
20
20
|
it { should respond_with(:success) }
|
@@ -41,7 +41,7 @@ describe Bigbluebutton::RoomsController do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
describe "#create" do
|
44
|
-
let(:new_room) { FactoryGirl.build(:bigbluebutton_room
|
44
|
+
let(:new_room) { FactoryGirl.build(:bigbluebutton_room) }
|
45
45
|
|
46
46
|
context "on success" do
|
47
47
|
before(:each) {
|
@@ -6,8 +6,8 @@ require 'bigbluebutton_api'
|
|
6
6
|
|
7
7
|
describe Bigbluebutton::RoomsController do
|
8
8
|
render_views
|
9
|
-
let(:server) { FactoryGirl.create(:bigbluebutton_server) }
|
10
|
-
let(:room) { FactoryGirl.create(:bigbluebutton_room
|
9
|
+
let!(:server) { FactoryGirl.create(:bigbluebutton_server) }
|
10
|
+
let!(:room) { FactoryGirl.create(:bigbluebutton_room) }
|
11
11
|
let(:params_to_ignore) { ['moderator_api_password', 'attendee_api_password', 'create_time'] }
|
12
12
|
|
13
13
|
describe "#index" do
|
@@ -86,7 +86,6 @@ describe Bigbluebutton::RoomsController do
|
|
86
86
|
request.env["HTTP_REFERER"] = http_referer
|
87
87
|
controller.should_receive(:set_request_headers)
|
88
88
|
mock_server_and_api
|
89
|
-
room.server = mocked_server
|
90
89
|
controller.stub(:bigbluebutton_user) { user }
|
91
90
|
}
|
92
91
|
|
@@ -137,7 +136,7 @@ describe Bigbluebutton::RoomsController do
|
|
137
136
|
end
|
138
137
|
|
139
138
|
describe "#create" do
|
140
|
-
let(:new_room) { FactoryGirl.build(:bigbluebutton_room
|
139
|
+
let(:new_room) { FactoryGirl.build(:bigbluebutton_room) }
|
141
140
|
|
142
141
|
context "on success" do
|
143
142
|
before :each do
|
@@ -206,7 +205,7 @@ describe Bigbluebutton::RoomsController do
|
|
206
205
|
let(:attrs) { FactoryGirl.attributes_for(:bigbluebutton_room) }
|
207
206
|
let(:params) { { :bigbluebutton_room => attrs } }
|
208
207
|
let(:allowed_params) {
|
209
|
-
[ :name, :
|
208
|
+
[ :name, :meetingid, :attendee_key, :moderator_key, :welcome_msg,
|
210
209
|
:private, :logout_url, :dial_number, :voice_bridge, :max_participants, :owner_id,
|
211
210
|
:owner_type, :external, :param, :record_meeting, :duration, :default_layout, :presenter_share_only,
|
212
211
|
:auto_start_video, :auto_start_audio, :background,
|
@@ -247,21 +246,20 @@ describe Bigbluebutton::RoomsController do
|
|
247
246
|
|
248
247
|
describe "#update" do
|
249
248
|
let(:new_room) { FactoryGirl.build(:bigbluebutton_room) }
|
250
|
-
before { @room = room } # need this to trigger let(:room) and actually create the room
|
251
249
|
|
252
250
|
context "on success" do
|
253
251
|
before :each do
|
254
252
|
expect {
|
255
|
-
put :update, :id =>
|
253
|
+
put :update, :id => room.to_param, :bigbluebutton_room => new_room.attributes
|
256
254
|
}.not_to change{ BigbluebuttonRoom.count }
|
257
255
|
end
|
258
256
|
it {
|
259
|
-
saved = BigbluebuttonRoom.find(
|
257
|
+
saved = BigbluebuttonRoom.find(room)
|
260
258
|
should respond_with(:redirect)
|
261
259
|
should redirect_to bigbluebutton_room_path(saved)
|
262
260
|
}
|
263
261
|
it {
|
264
|
-
saved = BigbluebuttonRoom.find(
|
262
|
+
saved = BigbluebuttonRoom.find(room)
|
265
263
|
saved.should have_same_attributes_as(new_room, params_to_ignore)
|
266
264
|
}
|
267
265
|
it { should set_the_flash.to(I18n.t('bigbluebutton_rails.rooms.notice.update.success')) }
|
@@ -270,16 +268,16 @@ describe Bigbluebutton::RoomsController do
|
|
270
268
|
context "on failure" do
|
271
269
|
before :each do
|
272
270
|
new_room.name = nil # invalid
|
273
|
-
put :update, :id =>
|
271
|
+
put :update, :id => room.to_param, :bigbluebutton_room => new_room.attributes
|
274
272
|
end
|
275
273
|
it { should render_template(:edit) }
|
276
|
-
it { should assign_to(:room).with(
|
274
|
+
it { should assign_to(:room).with(room) }
|
277
275
|
end
|
278
276
|
|
279
277
|
context "with :redir_url" do
|
280
278
|
context "on success" do
|
281
279
|
before(:each) {
|
282
|
-
put :update, :id =>
|
280
|
+
put :update, :id => room.to_param, :bigbluebutton_room => new_room.attributes, :redir_url => "/any"
|
283
281
|
}
|
284
282
|
it { should respond_with(:redirect) }
|
285
283
|
it { should redirect_to "/any" }
|
@@ -288,7 +286,7 @@ describe Bigbluebutton::RoomsController do
|
|
288
286
|
context "on failure" do
|
289
287
|
before(:each) {
|
290
288
|
new_room.name = nil # invalid
|
291
|
-
put :update, :id =>
|
289
|
+
put :update, :id => room.to_param, :bigbluebutton_room => new_room.attributes, :redir_url => "/any"
|
292
290
|
}
|
293
291
|
it { should respond_with(:redirect) }
|
294
292
|
it { should redirect_to "/any" }
|
@@ -299,7 +297,7 @@ describe Bigbluebutton::RoomsController do
|
|
299
297
|
let(:attrs) { FactoryGirl.attributes_for(:bigbluebutton_room) }
|
300
298
|
let(:params) { { :bigbluebutton_room => attrs } }
|
301
299
|
let(:allowed_params) {
|
302
|
-
[ :name, :
|
300
|
+
[ :name, :meetingid, :attendee_key, :moderator_key, :welcome_msg,
|
303
301
|
:private, :logout_url, :dial_number, :voice_bridge, :max_participants, :owner_id,
|
304
302
|
:owner_type, :external, :param, :record_meeting, :duration, :default_layout, :presenter_share_only,
|
305
303
|
:auto_start_video, :auto_start_audio, :background,
|
@@ -309,12 +307,12 @@ describe Bigbluebutton::RoomsController do
|
|
309
307
|
it {
|
310
308
|
# we just check that the rails method 'permit' is being called on the hash with the
|
311
309
|
# correct parameters
|
312
|
-
BigbluebuttonRoom.stub(:find_by_param).and_return(
|
313
|
-
|
310
|
+
BigbluebuttonRoom.stub(:find_by_param).and_return(room)
|
311
|
+
room.stub(:update_attributes).and_return(true)
|
314
312
|
attrs.stub(:permit).and_return(attrs)
|
315
313
|
controller.stub(:params).and_return(params)
|
316
314
|
|
317
|
-
put :update, :id =>
|
315
|
+
put :update, :id => room.to_param, :bigbluebutton_room => attrs
|
318
316
|
attrs.should have_received(:permit).with(*allowed_params)
|
319
317
|
}
|
320
318
|
end
|
@@ -323,15 +321,15 @@ describe Bigbluebutton::RoomsController do
|
|
323
321
|
describe "if parameters are not informed" do
|
324
322
|
before(:each) {}
|
325
323
|
it {
|
326
|
-
put :update, :id =>
|
327
|
-
should redirect_to(bigbluebutton_room_path(
|
324
|
+
put :update, :id => room.to_param
|
325
|
+
should redirect_to(bigbluebutton_room_path(room))
|
328
326
|
}
|
329
327
|
end
|
330
328
|
|
331
329
|
context "doesn't override @room" do
|
332
330
|
let!(:other_room) { FactoryGirl.create(:bigbluebutton_room) }
|
333
331
|
before { controller.instance_variable_set(:@room, other_room) }
|
334
|
-
before(:each) { put :update, :id =>
|
332
|
+
before(:each) { put :update, :id => room.to_param, :bigbluebutton_room => new_room.attributes }
|
335
333
|
it { should assign_to(:room).with(other_room) }
|
336
334
|
end
|
337
335
|
end
|
@@ -817,7 +815,7 @@ describe Bigbluebutton::RoomsController do
|
|
817
815
|
|
818
816
|
context "if the room has no server associated" do
|
819
817
|
before(:each) {
|
820
|
-
room.stub(:
|
818
|
+
room.stub(:select_server) { nil }
|
821
819
|
post :fetch_recordings, :id => room.to_param
|
822
820
|
}
|
823
821
|
it { should respond_with(:redirect) }
|
@@ -834,9 +832,10 @@ describe Bigbluebutton::RoomsController do
|
|
834
832
|
it {should respond_with(:redirect) }
|
835
833
|
it { should redirect_to "/any" }
|
836
834
|
end
|
835
|
+
|
837
836
|
context "on failure" do
|
838
837
|
before(:each) {
|
839
|
-
room.stub(:
|
838
|
+
room.stub(:select_server) { nil }
|
840
839
|
post :fetch_recordings, :id => room.to_param, :redir_url => "/any"
|
841
840
|
}
|
842
841
|
it {should respond_with(:redirect) }
|
@@ -848,7 +847,6 @@ describe Bigbluebutton::RoomsController do
|
|
848
847
|
let!(:other_room) { FactoryGirl.create(:bigbluebutton_room) }
|
849
848
|
before {
|
850
849
|
controller.instance_variable_set(:@room, other_room)
|
851
|
-
other_room.server = nil
|
852
850
|
}
|
853
851
|
before(:each) { post :fetch_recordings, :id => room.to_param }
|
854
852
|
it { should assign_to(:room).with(other_room) }
|
@@ -862,7 +860,7 @@ describe Bigbluebutton::RoomsController do
|
|
862
860
|
FactoryGirl.create(:bigbluebutton_recording)
|
863
861
|
|
864
862
|
# one that belongs to another room in the same server
|
865
|
-
room2 = FactoryGirl.create(:bigbluebutton_room
|
863
|
+
room2 = FactoryGirl.create(:bigbluebutton_room)
|
866
864
|
FactoryGirl.create(:bigbluebutton_recording, :room => room2)
|
867
865
|
end
|
868
866
|
before(:each) { get :recordings, :id => room.to_param }
|
@@ -976,20 +974,23 @@ describe Bigbluebutton::RoomsController do
|
|
976
974
|
}
|
977
975
|
|
978
976
|
context "when the user has permission to create the meeting" do
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
.and_return(
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
977
|
+
|
978
|
+
context "in the standard case" do
|
979
|
+
before {
|
980
|
+
room.should_receive(:fetch_is_running?).at_least(:once).and_return(false)
|
981
|
+
controller.stub(:bigbluebutton_can_create?).with(room, :attendee)
|
982
|
+
.and_return(true)
|
983
|
+
controller.stub(:bigbluebutton_create_options).with(room)
|
984
|
+
.and_return({ custom: true })
|
985
|
+
room.should_receive(:create_meeting)
|
986
|
+
.with(user, controller.request, { custom: true }).and_return(true)
|
987
|
+
room.should_receive(:fetch_new_token).and_return(nil)
|
988
|
+
room.should_receive(:join_url).and_return("http://test.com/join/url/")
|
989
|
+
}
|
990
|
+
before(:each) { get :join, :id => room.to_param }
|
991
|
+
it { should respond_with(:redirect) }
|
992
|
+
it { should redirect_to("http://test.com/join/url/") }
|
993
|
+
end
|
993
994
|
end
|
994
995
|
|
995
996
|
context "when the user doesn't have permission to create the meeting" do
|
@@ -1190,6 +1191,20 @@ describe Bigbluebutton::RoomsController do
|
|
1190
1191
|
it { should set_the_flash.to(bbb_error_msg[0..200]) }
|
1191
1192
|
end
|
1192
1193
|
|
1194
|
+
context "doesn't break if a guest user has permission to create a meeting" do
|
1195
|
+
before {
|
1196
|
+
room.stub(:fetch_is_running?).and_return(false)
|
1197
|
+
controller.stub(:bigbluebutton_create_options).and_return({ custom: true })
|
1198
|
+
controller.stub(:bigbluebutton_can_create?).and_return(true)
|
1199
|
+
room.stub(:create_meeting).and_return(true)
|
1200
|
+
controller.stub(:bigbluebutton_user).and_return(nil)
|
1201
|
+
room.stub(:join_url).and_return("http://test.com/join/url/")
|
1202
|
+
}
|
1203
|
+
before(:each) { get :join, :id => room.to_param, :user => { :name => "Elftor" } }
|
1204
|
+
it { should respond_with(:redirect) }
|
1205
|
+
it { should redirect_to("http://test.com/join/url/") }
|
1206
|
+
end
|
1207
|
+
|
1193
1208
|
end
|
1194
1209
|
|
1195
1210
|
end
|
@@ -2,12 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Bigbluebutton::ServersController do
|
4
4
|
render_views
|
5
|
-
let(:server) { FactoryGirl.create(:bigbluebutton_server) }
|
5
|
+
let!(:server) { FactoryGirl.create(:bigbluebutton_server) }
|
6
6
|
|
7
7
|
context "json responses for" do
|
8
8
|
|
9
9
|
describe "#index" do
|
10
10
|
before do
|
11
|
+
BigbluebuttonServer.destroy_all
|
11
12
|
@server1 = FactoryGirl.create(:bigbluebutton_server)
|
12
13
|
@server2 = FactoryGirl.create(:bigbluebutton_server)
|
13
14
|
end
|
@@ -66,12 +67,11 @@ describe Bigbluebutton::ServersController do
|
|
66
67
|
|
67
68
|
describe "#update" do
|
68
69
|
let(:new_server) { FactoryGirl.build(:bigbluebutton_server) }
|
69
|
-
before { @server = server }
|
70
70
|
|
71
71
|
context "on success" do
|
72
72
|
before(:each) {
|
73
73
|
BigbluebuttonServer.any_instance.stub(:set_api_version_from_server)
|
74
|
-
put :update, :id =>
|
74
|
+
put :update, :id => server.to_param, :bigbluebutton_server => new_server.attributes, :format => 'json'
|
75
75
|
}
|
76
76
|
it { should respond_with(:success) }
|
77
77
|
it { should respond_with_content_type('application/json') }
|
@@ -81,7 +81,7 @@ describe Bigbluebutton::ServersController do
|
|
81
81
|
context "on failure" do
|
82
82
|
before(:each) {
|
83
83
|
new_server.url = nil # invalid
|
84
|
-
put :update, :id =>
|
84
|
+
put :update, :id => server.to_param, :bigbluebutton_server => new_server.attributes, :format => 'json'
|
85
85
|
}
|
86
86
|
it { should respond_with(:unprocessable_entity) }
|
87
87
|
it { should respond_with_content_type('application/json') }
|
@@ -94,8 +94,7 @@ describe Bigbluebutton::ServersController do
|
|
94
94
|
|
95
95
|
describe "#destroy" do
|
96
96
|
before :each do
|
97
|
-
|
98
|
-
delete :destroy, :id => @server.to_param, :format => 'json'
|
97
|
+
delete :destroy, :id => server.to_param, :format => 'json'
|
99
98
|
end
|
100
99
|
it { should respond_with(:success) }
|
101
100
|
it { should respond_with_content_type('application/json') }
|
@@ -103,8 +102,8 @@ describe Bigbluebutton::ServersController do
|
|
103
102
|
end
|
104
103
|
|
105
104
|
describe "#activity" do
|
106
|
-
let(:room1) { FactoryGirl.create(:bigbluebutton_room
|
107
|
-
let(:room2) { FactoryGirl.create(:bigbluebutton_room
|
105
|
+
let(:room1) { FactoryGirl.create(:bigbluebutton_room) }
|
106
|
+
let(:room2) { FactoryGirl.create(:bigbluebutton_room) }
|
108
107
|
before do
|
109
108
|
# so we return our mocked server
|
110
109
|
BigbluebuttonServer.stub(:find_by_param).with(server.to_param).
|
@@ -154,17 +153,6 @@ describe Bigbluebutton::ServersController do
|
|
154
153
|
|
155
154
|
end
|
156
155
|
|
157
|
-
describe "#rooms" do
|
158
|
-
before do
|
159
|
-
@room1 = FactoryGirl.create(:bigbluebutton_room, :server => server)
|
160
|
-
@room2 = FactoryGirl.create(:bigbluebutton_room, :server => server)
|
161
|
-
end
|
162
|
-
before(:each) { get :rooms, :id => server.to_param, :format => 'json' }
|
163
|
-
it { should respond_with(:success) }
|
164
|
-
it { should respond_with_content_type('application/json') }
|
165
|
-
it { should respond_with_json([@room1, @room2].to_json) }
|
166
|
-
end
|
167
|
-
|
168
156
|
describe "#fetch_recordings" do
|
169
157
|
it "on success"
|
170
158
|
it "on error"
|