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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +21 -0
  4. data/Gemfile +2 -1
  5. data/Gemfile.lock +4 -11
  6. data/Rakefile +15 -15
  7. data/app/controllers/bigbluebutton/recordings_controller.rb +1 -1
  8. data/app/controllers/bigbluebutton/rooms_controller.rb +10 -12
  9. data/app/controllers/bigbluebutton/servers_controller.rb +4 -5
  10. data/app/models/bigbluebutton_meeting.rb +1 -2
  11. data/app/models/bigbluebutton_metadata.rb +2 -2
  12. data/app/models/bigbluebutton_recording.rb +20 -5
  13. data/app/models/bigbluebutton_room.rb +80 -102
  14. data/app/models/bigbluebutton_server.rb +31 -17
  15. data/app/views/bigbluebutton/recordings/_form.html.erb +13 -13
  16. data/app/views/bigbluebutton/rooms/_form.html.erb +0 -4
  17. data/app/views/bigbluebutton/rooms/_rooms.html.erb +0 -4
  18. data/app/views/bigbluebutton/rooms/show.html.erb +0 -4
  19. data/app/workers/bigbluebutton_update_recordings.rb +2 -2
  20. data/config/locales/en.yml +1 -2
  21. data/config/locales/pt-br.yml +1 -2
  22. data/lib/bigbluebutton_rails.rb +22 -108
  23. data/lib/bigbluebutton_rails/background_tasks.rb +7 -3
  24. data/lib/bigbluebutton_rails/configuration.rb +80 -0
  25. data/lib/bigbluebutton_rails/rails/routes.rb +7 -6
  26. data/lib/bigbluebutton_rails/version.rb +1 -1
  27. data/lib/generators/bigbluebutton_rails/install_generator.rb +10 -1
  28. data/lib/generators/bigbluebutton_rails/templates/migration.rb +0 -3
  29. data/lib/generators/bigbluebutton_rails/templates/migration_2_2_0.rb +13 -0
  30. data/spec/controllers/bigbluebutton/recordings_controller_json_responses_spec.rb +4 -5
  31. data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +3 -2
  32. data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +1 -1
  33. data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +4 -4
  34. data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +53 -38
  35. data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +7 -19
  36. data/spec/controllers/bigbluebutton/servers_controller_spec.rb +32 -51
  37. data/spec/factories/bigbluebutton_meeting.rb +0 -1
  38. data/spec/factories/bigbluebutton_recording.rb +1 -0
  39. data/spec/factories/bigbluebutton_room.rb +0 -1
  40. data/spec/models/bigbluebutton_meeting_db_spec.rb +0 -1
  41. data/spec/models/bigbluebutton_meeting_spec.rb +0 -3
  42. data/spec/models/bigbluebutton_metadata_spec.rb +4 -4
  43. data/spec/models/bigbluebutton_recording_spec.rb +32 -0
  44. data/spec/models/bigbluebutton_room_db_spec.rb +0 -2
  45. data/spec/models/bigbluebutton_room_spec.rb +138 -244
  46. data/spec/models/bigbluebutton_server_spec.rb +40 -21
  47. data/spec/rails_app/db/seeds.rb +1 -1
  48. data/spec/rails_app/features/config.yml.example +4 -4
  49. data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +0 -1
  50. data/spec/rails_app/features/support/templates.rb +0 -4
  51. data/spec/rails_app/lib/tasks/db/populate.rake +2 -2
  52. data/spec/routing/bigbluebutton/servers_only_routing_spec.rb +4 -1
  53. data/spec/routing/bigbluebutton/servers_routing_spec.rb +4 -0
  54. data/spec/spec_helper.rb +4 -0
  55. data/spec/support/mocked_server.rb +1 -1
  56. data/spec/workers/bigbluebutton_meeting_updater_spec.rb +3 -3
  57. 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
@@ -1,3 +1,3 @@
1
1
  module BigbluebuttonRails
2
- VERSION = "2.1.0".freeze
2
+ VERSION = "2.2.0".freeze
3
3
  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
- migration_template "#{migration_path}/migration_#{version_filename}.rb", "db/migrate/bigbluebutton_rails_to_#{version_filename}.rb"
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
- saved.should have_same_attributes_as(new_recording, ['room_id', 'server_id', 'meeting_id', 'size'])
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
- [ :recordid, :meetingid, :name, :published, :start_time, :end_time, :available, :description ]
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, :server => mocked_server) }
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, :server => server) }
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, :server => server)
17
- @room2 = FactoryGirl.create(:bigbluebutton_room, :server => server)
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, :server => server) }
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, :server => server) }
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, :server => server) }
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, :server_id, :meetingid, :attendee_key, :moderator_key, :welcome_msg,
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 => @room.to_param, :bigbluebutton_room => new_room.attributes
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(@room)
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(@room)
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 => @room.to_param, :bigbluebutton_room => new_room.attributes
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(@room) }
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 => @room.to_param, :bigbluebutton_room => new_room.attributes, :redir_url => "/any"
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 => @room.to_param, :bigbluebutton_room => new_room.attributes, :redir_url => "/any"
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, :server_id, :meetingid, :attendee_key, :moderator_key, :welcome_msg,
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(@room)
313
- @room.stub(:update_attributes).and_return(true)
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 => @room.to_param, :bigbluebutton_room => attrs
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 => @room.to_param
327
- should redirect_to(bigbluebutton_room_path(@room))
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 => @room.to_param, :bigbluebutton_room => new_room.attributes }
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(:server) { nil }
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(:server) { nil }
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, :server => room.server)
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
- 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 })
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/") }
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 => @server.to_param, :bigbluebutton_server => new_server.attributes, :format => 'json'
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 => @server.to_param, :bigbluebutton_server => new_server.attributes, :format => 'json'
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
- @server = server
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, :server => server) }
107
- let(:room2) { FactoryGirl.create(:bigbluebutton_room, :server => server) }
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"