bigbluebutton_rails 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -6,9 +6,7 @@ describe BigbluebuttonServer do
6
6
  BigbluebuttonServer.new.should be_a_kind_of(ActiveRecord::Base)
7
7
  end
8
8
 
9
- it { should have_many(:rooms).dependent(:nullify) }
10
-
11
- it { should have_many(:recordings).dependent(:nullify) }
9
+ it { should have_many(:recordings).dependent(:destroy) }
12
10
 
13
11
  it { should have_one(:config).dependent(:destroy) }
14
12
  it { should delegate(:update_config).to(:config) }
@@ -24,27 +22,31 @@ describe BigbluebuttonServer do
24
22
 
25
23
  context "uniqueness of" do
26
24
  before(:each) { FactoryGirl.create(:bigbluebutton_server) }
27
- it { should validate_uniqueness_of(:url) }
28
- it { should validate_uniqueness_of(:name) }
29
25
  it { should validate_uniqueness_of(:param) }
30
26
  end
31
27
 
32
- it "has associated rooms" do
28
+ it "has associated recordings" do
33
29
  server = FactoryGirl.create(:bigbluebutton_server)
34
- server.rooms.should be_empty
30
+ server.recordings.should be_empty
35
31
 
36
- r = FactoryGirl.create(:bigbluebutton_room, :server => server)
32
+ r = FactoryGirl.create(:bigbluebutton_recording, server: server)
37
33
  server = BigbluebuttonServer.find(server.id)
38
- server.rooms.should == [r]
34
+ server.recordings.should == [r]
39
35
  end
40
36
 
41
- it "has associated recordings" do
42
- server = FactoryGirl.create(:bigbluebutton_server)
43
- server.rooms.should be_empty
37
+ context "destroys associated recordings when destroyed" do
38
+ let!(:server) { FactoryGirl.create(:bigbluebutton_server) }
39
+ let!(:rec1) { FactoryGirl.create(:bigbluebutton_recording, server: server) }
40
+ let!(:rec2) { FactoryGirl.create(:bigbluebutton_recording, server: server) }
41
+ let!(:rec3) { FactoryGirl.create(:bigbluebutton_recording) }
44
42
 
45
- r = FactoryGirl.create(:bigbluebutton_recording, :server => server)
46
- server = BigbluebuttonServer.find(server.id)
47
- server.recordings.should == [r]
43
+ it {
44
+ server.recordings.count.should eql(2)
45
+ server.destroy
46
+ BigbluebuttonRecording.find_by(recordid: rec1.recordid).should be_nil
47
+ BigbluebuttonRecording.find_by(recordid: rec2.recordid).should be_nil
48
+ BigbluebuttonRecording.find_by(recordid: rec3.recordid).should_not be_nil
49
+ }
48
50
  end
49
51
 
50
52
  it { should ensure_length_of(:name).is_at_least(1).is_at_most(500) }
@@ -170,8 +172,9 @@ describe BigbluebuttonServer do
170
172
 
171
173
  describe "#fetch_meetings" do
172
174
  let(:server) { FactoryGirl.create(:bigbluebutton_server) }
173
- let(:room1) { FactoryGirl.create(:bigbluebutton_room, :server => server, :meetingid => "room1") }
174
- let(:room2) { FactoryGirl.create(:bigbluebutton_room, :server => server, :meetingid => "room2") }
175
+ let(:room1) { FactoryGirl.create(:bigbluebutton_room, :meetingid => "room1") }
176
+ let(:room2) { FactoryGirl.create(:bigbluebutton_room, :meetingid => "room2") }
177
+ let!(:api) { double(BigBlueButton::BigBlueButtonApi) }
175
178
 
176
179
  # the hashes should be exactly as returned by bigbluebutton-api-ruby to be sure we are testing it right
177
180
  let(:meetings) {
@@ -188,9 +191,9 @@ describe BigbluebuttonServer do
188
191
  }
189
192
 
190
193
  before {
191
- @api_mock = double(BigBlueButton::BigBlueButtonApi)
192
- server.stub(:api).and_return(@api_mock)
193
- @api_mock.should_receive(:get_meetings).and_return(hash)
194
+ server.stub(:api).and_return(api)
195
+ BigbluebuttonServer.any_instance.stub(:api).and_return(api)
196
+ api.should_receive(:get_meetings).and_return(hash)
194
197
  server.fetch_meetings
195
198
 
196
199
  # the keys are updated during fetch_meetings
@@ -205,7 +208,6 @@ describe BigbluebuttonServer do
205
208
  it { server.meetings[1].should have_same_attributes_as(room2) }
206
209
  it { server.meetings[2].meetingid.should == "im not in the db" }
207
210
  it { server.meetings[2].name.should == "im not in the db" }
208
- it { server.meetings[2].server.should == server }
209
211
  it { server.meetings[2].attendee_api_password.should == "pass" }
210
212
  it { server.meetings[2].moderator_api_password.should == "pass" }
211
213
  it { server.meetings[2].running.should == true }
@@ -332,6 +334,7 @@ describe BigbluebuttonServer do
332
334
  @server.config # access it so the new obj is created
333
335
  }
334
336
  it { @server.config.should_not be_nil }
337
+ it { @server.config.server.should eql(@server) }
335
338
  it("is not promptly saved") {
336
339
  @server.config.new_record?.should be(true)
337
340
  }
@@ -447,4 +450,20 @@ describe BigbluebuttonServer do
447
450
  end
448
451
  end
449
452
 
453
+ describe "#check_url" do
454
+ let(:server) { FactoryGirl.create(:bigbluebutton_server) }
455
+
456
+ it { should respond_to(:check_url) }
457
+
458
+ context "returns what api.check_url returns" do
459
+ before do
460
+ @api_mock = double(BigBlueButton::BigBlueButtonApi)
461
+ server.stub(:api).and_return(@api_mock)
462
+ @api_mock.should_receive(:check_url).
463
+ and_return('http://test-server.com/check')
464
+ end
465
+ it { server.check_url.should eql('http://test-server.com/check') }
466
+ end
467
+ end
468
+
450
469
  end
@@ -13,7 +13,7 @@ if File.exists?(file)
13
13
  else
14
14
  server = config['servers'][config['servers'].keys.first]
15
15
  end
16
- server['version'] = '0.9' unless server.has_key?('version')
16
+ server['version'] = '1.0' unless server.has_key?('version')
17
17
  server['name'] = URI.parse(server['url']).host
18
18
 
19
19
  BigbluebuttonServer.create!(server)
@@ -2,9 +2,9 @@
2
2
  timeout_bot_start: 60
3
3
 
4
4
  servers:
5
- bbb-dev-07:
6
- secret: 'your-secret'
7
- url: 'http://your-server/bigbluebutton/api'
8
- test-install-09:
5
+ test-install-10:
9
6
  secret: '8cd8ef52e8e101574e400365b55e11a6'
10
7
  url: 'http://test-install.blindsidenetworks.com/bigbluebutton/api'
8
+ bbb-dev-110:
9
+ secret: 'your-secret'
10
+ url: 'http://your-server/bigbluebutton/api'
@@ -1,6 +1,5 @@
1
1
  When /^registers a new room$/i do
2
2
  attrs = FactoryGirl.attributes_for(:bigbluebutton_room, :server => @server)
3
- fill_in("bigbluebutton_room[server_id]", :with => attrs[:server_id])
4
3
  fill_in("bigbluebutton_room[name]", :with => attrs[:name])
5
4
  fill_in("bigbluebutton_room[meetingid]", :with => attrs[:meetingid])
6
5
  check("bigbluebutton_room[private]") if attrs[:private]
@@ -129,8 +129,6 @@ module TemplateHelpers
129
129
 
130
130
  # internal form in rooms/new and room/:id/edit
131
131
  def check_room_form
132
- has_element("input#bigbluebutton_room_server_id",
133
- { :name => 'bigbluebutton_room[server_id]', :type => 'text' })
134
132
  has_element("input#bigbluebutton_room_name",
135
133
  { :name => 'bigbluebutton_room[name]', :type => 'text' })
136
134
  has_element("input#bigbluebutton_room_meetingid",
@@ -174,7 +172,6 @@ module TemplateHelpers
174
172
  def check_show_room(options)
175
173
  room = options[:room] || BigbluebuttonRoom.last
176
174
 
177
- page_has_content(room.server_id)
178
175
  page_has_content(room.name)
179
176
  page_has_content(room.meetingid)
180
177
  page_has_content(room.private)
@@ -220,7 +217,6 @@ module TemplateHelpers
220
217
  rooms.each do |room|
221
218
  within(make_selector("ul#bbbrails_list>li:nth(#{n})")) do
222
219
  # room data
223
- has_content(room.server_id) unless room.server.nil?
224
220
  has_content(room.name)
225
221
  has_content(room.meetingid)
226
222
  has_content(room.attendee_key)
@@ -86,10 +86,10 @@ namespace :db do
86
86
  # Basic metadata the gem always adds and should always be there
87
87
  basic_metadata =
88
88
  [{
89
- :name => BigbluebuttonRails.metadata_user_id,
89
+ :name => BigbluebuttonRails.configuration.metadata_user_id,
90
90
  :content => Forgery(:basic).number(:at_most => 1000)
91
91
  }, {
92
- :name => BigbluebuttonRails.metadata_user_name,
92
+ :name => BigbluebuttonRails.configuration.metadata_user_name,
93
93
  :content => Forgery(:name).full_name
94
94
  }]
95
95
  basic_metadata.each do |meta_params|
@@ -37,7 +37,10 @@ describe ActionController do
37
37
  {:get => "/only-servers/bigbluebutton/servers/1/activity"}.
38
38
  should route_to(:controller => "bigbluebutton/servers", :action => "activity", :id => "1")
39
39
  }
40
-
40
+ it {
41
+ {:get => "/only-servers/bigbluebutton/servers/1/check"}.
42
+ should route_to(:controller => "bigbluebutton/servers", :action => "check", :id => "1")
43
+ }
41
44
  end
42
45
 
43
46
  end
@@ -59,6 +59,10 @@ describe Bigbluebutton::ServersController do
59
59
  {:post => "/#{prefix}/servers/server-1/fetch_recordings"}.
60
60
  should route_to(:controller => "bigbluebutton/servers", :action => "fetch_recordings", :id => "server-1")
61
61
  }
62
+ it {
63
+ {:get => "/#{prefix}/servers/server-1/check"}.
64
+ should route_to(:controller => "bigbluebutton/servers", :action => "check", :id => "server-1")
65
+ }
62
66
  end
63
67
 
64
68
  end
@@ -47,4 +47,8 @@ RSpec.configure do |config|
47
47
  config.use_transactional_fixtures = true
48
48
  config.include RSpec::Rails::ViewRendering
49
49
  config.include FactoryGirl::Syntax::Methods
50
+
51
+ config.before(:each) do
52
+ BigbluebuttonRails.reset
53
+ end
50
54
  end
@@ -10,7 +10,7 @@ def mock_server_and_api
10
10
 
11
11
  # when testing rooms
12
12
  if defined?(room) and not room.nil?
13
- room.stub(:server) { @server_mock }
13
+ room.stub(:select_server) { @server_mock }
14
14
  BigbluebuttonRoom.stub(:find_by_param) { room }
15
15
  BigbluebuttonRoom.stub(:find) { room }
16
16
  end
@@ -31,7 +31,7 @@ describe BigbluebuttonMeetingUpdater do
31
31
 
32
32
  before {
33
33
  expect(BigbluebuttonRoom).to receive(:find).with(room.id).and_return(room)
34
- room.server.stub(:api) { api }
34
+ expect_any_instance_of(BigbluebuttonServer).to receive(:api).and_return(api)
35
35
  expect(api).to receive(:get_meeting_info).once { raise exception }
36
36
  expect(room).to receive(:finish_meetings).once
37
37
  }
@@ -48,7 +48,7 @@ describe BigbluebuttonMeetingUpdater do
48
48
 
49
49
  before {
50
50
  expect(BigbluebuttonRoom).to receive(:find).with(room.id).and_return(room)
51
- room.server.stub(:api) { api }
51
+ expect_any_instance_of(BigbluebuttonServer).to receive(:api).and_return(api)
52
52
  expect(api).to receive(:get_meeting_info).once { raise exception }
53
53
  expect(room).to receive(:finish_meetings)
54
54
  }
@@ -65,7 +65,7 @@ describe BigbluebuttonMeetingUpdater do
65
65
 
66
66
  before {
67
67
  expect(BigbluebuttonRoom).to receive(:find).with(room.id).and_return(room)
68
- room.server.stub(:api) { api }
68
+ expect_any_instance_of(BigbluebuttonServer).to receive(:api).and_return(api)
69
69
  expect(api).to receive(:get_meeting_info).once { raise exception }
70
70
  expect(room).to receive(:finish_meetings)
71
71
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigbluebutton_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mconf
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-25 00:00:00.000000000 Z
12
+ date: 2019-11-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -155,6 +155,7 @@ files:
155
155
  - config/resque/workers_schedule.yml
156
156
  - lib/bigbluebutton_rails.rb
157
157
  - lib/bigbluebutton_rails/background_tasks.rb
158
+ - lib/bigbluebutton_rails/configuration.rb
158
159
  - lib/bigbluebutton_rails/controller_methods.rb
159
160
  - lib/bigbluebutton_rails/dial_number.rb
160
161
  - lib/bigbluebutton_rails/exceptions.rb
@@ -173,6 +174,7 @@ files:
173
174
  - lib/generators/bigbluebutton_rails/templates/migration_1_4_0.rb
174
175
  - lib/generators/bigbluebutton_rails/templates/migration_2_0_0.rb
175
176
  - lib/generators/bigbluebutton_rails/templates/migration_2_1_0.rb
177
+ - lib/generators/bigbluebutton_rails/templates/migration_2_2_0.rb
176
178
  - lib/generators/bigbluebutton_rails/views_generator.rb
177
179
  - lib/tasks/bigbluebutton_rails/meetings.rake
178
180
  - lib/tasks/bigbluebutton_rails/recordings.rake