bigbluebutton_rails 0.1.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +1 -12
- data/Gemfile.lock +1 -1
- data/README.rdoc +32 -46
- data/Rakefile +1 -0
- data/app/controllers/bigbluebutton/rooms_controller.rb +16 -17
- data/app/controllers/bigbluebutton/servers_controller.rb +2 -6
- data/app/models/bigbluebutton_room.rb +1 -35
- data/app/models/bigbluebutton_server.rb +1 -1
- data/app/views/bigbluebutton/rooms/_form.html.erb +3 -7
- data/app/views/bigbluebutton/rooms/edit.html.erb +2 -2
- data/app/views/bigbluebutton/rooms/external.html.erb +1 -2
- data/app/views/bigbluebutton/rooms/index.html.erb +37 -2
- data/app/views/bigbluebutton/rooms/invite.html.erb +2 -2
- data/app/views/bigbluebutton/rooms/join.html.erb +1 -1
- data/app/views/bigbluebutton/rooms/new.html.erb +1 -1
- data/app/views/bigbluebutton/rooms/show.html.erb +4 -10
- data/app/views/bigbluebutton/servers/_activity_list.html.erb +6 -6
- data/app/views/bigbluebutton/servers/index.html.erb +3 -4
- data/app/views/bigbluebutton/servers/show.html.erb +4 -3
- data/config/locales/en.yml +3 -7
- data/lib/bigbluebutton_rails/exceptions.rb +0 -4
- data/lib/bigbluebutton_rails/rails/routes.rb +35 -28
- data/lib/bigbluebutton_rails/version.rb +1 -1
- data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +10 -13
- data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +13 -13
- data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +115 -114
- data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +1 -12
- data/spec/controllers/bigbluebutton/servers_controller_spec.rb +0 -11
- data/spec/generators/install_generator_spec.rb +1 -1
- data/spec/models/bigbluebutton_room_spec.rb +80 -166
- data/spec/models/bigbluebutton_server_spec.rb +4 -4
- data/spec/rails_app/features/activity_monitor_servers.feature +0 -6
- data/spec/rails_app/features/create_rooms.feature +0 -5
- data/spec/rails_app/features/create_servers.feature +2 -7
- data/spec/rails_app/features/edit_rooms.feature +0 -7
- data/spec/rails_app/features/edit_servers.feature +2 -8
- data/spec/rails_app/features/join_rooms.feature +0 -1
- data/spec/rails_app/features/list_and_show_rooms.feature +2 -10
- data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +10 -10
- data/spec/rails_app/features/step_definitions/common_steps.rb +4 -6
- data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +0 -1
- data/spec/rails_app/features/step_definitions/join_mobile_steps.rb +3 -1
- data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +7 -3
- data/spec/rails_app/features/step_definitions/list_and_show_rooms_steps.rb +5 -12
- data/spec/rails_app/features/step_definitions/list_and_show_servers_steps.rb +5 -1
- data/spec/rails_app/features/support/{patches/application_controller.rb → application_controller.rb} +0 -0
- data/spec/rails_app/features/support/paths.rb +10 -12
- data/spec/rails_app/features/support/templates.rb +46 -90
- data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +22 -38
- data/spec/routing/bigbluebutton/rooms_routing_spec.rb +58 -142
- data/spec/routing/bigbluebutton/servers_routing_spec.rb +1 -9
- metadata +9 -12
- data/app/views/bigbluebutton/rooms/_rooms.html.erb +0 -37
- data/app/views/bigbluebutton/servers/rooms.html.erb +0 -2
- data/spec/rails_app/features/support/patches/bigbluebutton_room.rb +0 -9
@@ -13,7 +13,7 @@ describe BigbluebuttonRoom do
|
|
13
13
|
it { should_not validate_presence_of(:owner_id) }
|
14
14
|
it { should_not validate_presence_of(:owner_type) }
|
15
15
|
|
16
|
-
it {
|
16
|
+
it { should validate_presence_of(:server_id) }
|
17
17
|
it { should validate_presence_of(:meetingid) }
|
18
18
|
it { should validate_presence_of(:voice_bridge) }
|
19
19
|
it { should validate_presence_of(:name) }
|
@@ -22,10 +22,10 @@ describe BigbluebuttonRoom do
|
|
22
22
|
it { should be_boolean(:private) }
|
23
23
|
it { should be_boolean(:randomize_meetingid) }
|
24
24
|
|
25
|
-
[:name, :server_id, :meetingid, :attendee_password,
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
25
|
+
[:name, :server_id, :meetingid, :attendee_password, :moderator_password,
|
26
|
+
:welcome_msg, :owner, :server, :private, :logout_url, :dial_number,
|
27
|
+
:voice_bridge, :max_participants, :owner_id, :owner_type,
|
28
|
+
:randomize_meetingid, :param].
|
29
29
|
each do |attribute|
|
30
30
|
it { should allow_mass_assignment_of(attribute) }
|
31
31
|
end
|
@@ -36,6 +36,11 @@ describe BigbluebuttonRoom do
|
|
36
36
|
it { should validate_uniqueness_of(:voice_bridge) }
|
37
37
|
it { should validate_uniqueness_of(:param) }
|
38
38
|
|
39
|
+
it {
|
40
|
+
room = Factory.create(:bigbluebutton_room)
|
41
|
+
room.server.should_not be_nil
|
42
|
+
}
|
43
|
+
|
39
44
|
it { should ensure_length_of(:meetingid).is_at_least(1).is_at_most(100) }
|
40
45
|
it { should ensure_length_of(:name).is_at_least(1).is_at_most(150) }
|
41
46
|
it { should ensure_length_of(:attendee_password).is_at_most(16) }
|
@@ -45,8 +50,7 @@ describe BigbluebuttonRoom do
|
|
45
50
|
|
46
51
|
# attr_accessors
|
47
52
|
[:running, :participant_count, :moderator_count, :attendees,
|
48
|
-
:has_been_forcibly_ended, :start_time, :end_time,
|
49
|
-
:external, :server].each do |attr|
|
53
|
+
:has_been_forcibly_ended, :start_time, :end_time, :external].each do |attr|
|
50
54
|
it { should respond_to(attr) }
|
51
55
|
it { should respond_to("#{attr}=") }
|
52
56
|
end
|
@@ -188,26 +192,20 @@ describe BigbluebuttonRoom do
|
|
188
192
|
|
189
193
|
it { should respond_to(:fetch_is_running?) }
|
190
194
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
before(:each) { room.fetch_is_running? }
|
198
|
-
it { room.running.should == false }
|
199
|
-
it { room.is_running?.should == false }
|
195
|
+
it "fetches is_running? when not running" do
|
196
|
+
mocked_api.should_receive(:is_meeting_running?).with(room.meetingid).and_return(false)
|
197
|
+
room.server = mocked_server
|
198
|
+
room.fetch_is_running?
|
199
|
+
room.running.should == false
|
200
|
+
room.is_running?.should == false
|
200
201
|
end
|
201
202
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
before(:each) { room.fetch_is_running? }
|
209
|
-
it { room.running.should == true }
|
210
|
-
it { room.is_running?.should == true }
|
203
|
+
it "fetches is_running? when running" do
|
204
|
+
mocked_api.should_receive(:is_meeting_running?).with(room.meetingid).and_return(true)
|
205
|
+
room.server = mocked_server
|
206
|
+
room.fetch_is_running?
|
207
|
+
room.running.should == true
|
208
|
+
room.is_running?.should == true
|
211
209
|
end
|
212
210
|
|
213
211
|
end
|
@@ -239,57 +237,53 @@ describe BigbluebuttonRoom do
|
|
239
237
|
|
240
238
|
it { should respond_to(:fetch_meeting_info) }
|
241
239
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
it { room.end_time.should == nil }
|
256
|
-
it { room.attendees.should == [] }
|
240
|
+
it "fetches meeting info when the meeting is not running" do
|
241
|
+
mocked_api.should_receive(:get_meeting_info).
|
242
|
+
with(room.meetingid, room.moderator_password).and_return(hash_info)
|
243
|
+
room.server = mocked_server
|
244
|
+
|
245
|
+
room.fetch_meeting_info
|
246
|
+
room.running.should == false
|
247
|
+
room.has_been_forcibly_ended.should == false
|
248
|
+
room.participant_count.should == 0
|
249
|
+
room.moderator_count.should == 0
|
250
|
+
room.start_time.should == nil
|
251
|
+
room.end_time.should == nil
|
252
|
+
room.attendees.should == []
|
257
253
|
end
|
258
254
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
room.attendees.should include(attendee)
|
278
|
-
end
|
279
|
-
}
|
255
|
+
it "fetches meeting info when the meeting is running" do
|
256
|
+
mocked_api.should_receive(:get_meeting_info).
|
257
|
+
with(room.meetingid, room.moderator_password).and_return(hash_info2)
|
258
|
+
room.server = mocked_server
|
259
|
+
|
260
|
+
room.fetch_meeting_info
|
261
|
+
room.running.should == true
|
262
|
+
room.has_been_forcibly_ended.should == false
|
263
|
+
room.participant_count.should == 4
|
264
|
+
room.moderator_count.should == 2
|
265
|
+
room.start_time.should == DateTime.parse("Wed Apr 06 17:09:57 UTC 2011")
|
266
|
+
room.end_time.should == nil
|
267
|
+
|
268
|
+
users.each do |att|
|
269
|
+
attendee = BigbluebuttonAttendee.new
|
270
|
+
attendee.from_hash(att)
|
271
|
+
room.attendees.should include(attendee)
|
272
|
+
end
|
280
273
|
end
|
281
274
|
|
282
275
|
end
|
283
276
|
|
284
277
|
describe "#send_end" do
|
278
|
+
|
285
279
|
it { should respond_to(:send_end) }
|
286
280
|
|
287
281
|
it "send end_meeting" do
|
288
282
|
mocked_api.should_receive(:end_meeting).with(room.meetingid, room.moderator_password)
|
289
|
-
room.should_receive(:require_server)
|
290
283
|
room.server = mocked_server
|
291
284
|
room.send_end
|
292
285
|
end
|
286
|
+
|
293
287
|
end
|
294
288
|
|
295
289
|
describe "#send_create" do
|
@@ -305,7 +299,7 @@ describe BigbluebuttonRoom do
|
|
305
299
|
|
306
300
|
it { should respond_to(:send_create) }
|
307
301
|
|
308
|
-
context "
|
302
|
+
context "send create_meeting" do
|
309
303
|
|
310
304
|
context "for a stored room" do
|
311
305
|
before do
|
@@ -315,7 +309,6 @@ describe BigbluebuttonRoom do
|
|
315
309
|
:voiceBridge => room.voice_bridge)
|
316
310
|
mocked_api.should_receive(:create_meeting).
|
317
311
|
with(room.name, room.meetingid, hash).and_return(hash_create)
|
318
|
-
room.stub(:select_server).and_return(mocked_server)
|
319
312
|
room.server = mocked_server
|
320
313
|
room.send_create
|
321
314
|
end
|
@@ -333,7 +326,6 @@ describe BigbluebuttonRoom do
|
|
333
326
|
:voiceBridge => new_room.voice_bridge)
|
334
327
|
mocked_api.should_receive(:create_meeting).
|
335
328
|
with(new_room.name, new_room.meetingid, hash).and_return(hash_create)
|
336
|
-
new_room.stub(:select_server).and_return(mocked_server)
|
337
329
|
new_room.server = mocked_server
|
338
330
|
new_room.send_create
|
339
331
|
end
|
@@ -345,12 +337,13 @@ describe BigbluebuttonRoom do
|
|
345
337
|
end
|
346
338
|
|
347
339
|
context "randomizes meetingid" do
|
348
|
-
let(:fail_hash) { { :returncode => true, :meetingID => "new id",
|
349
|
-
|
340
|
+
let(:fail_hash) { { :returncode => true, :meetingID => "new id",
|
341
|
+
:messageKey => "duplicateWarning" } }
|
342
|
+
let(:success_hash) { { :returncode => true, :meetingID => "new id",
|
343
|
+
:messageKey => "" } }
|
350
344
|
let(:new_id) { "new id" }
|
351
345
|
before {
|
352
346
|
room.randomize_meetingid = true
|
353
|
-
room.stub(:select_server).and_return(mocked_server)
|
354
347
|
room.server = mocked_server
|
355
348
|
}
|
356
349
|
|
@@ -365,7 +358,7 @@ describe BigbluebuttonRoom do
|
|
365
358
|
end
|
366
359
|
|
367
360
|
it "and tries again on error" do
|
368
|
-
# fails twice and
|
361
|
+
# fails twice and them succeds
|
369
362
|
room.should_receive(:random_meetingid).exactly(3).times.and_return(new_id)
|
370
363
|
hash = hash_including(:moderatorPW => room.moderator_password, :attendeePW => room.attendee_password,
|
371
364
|
:welcome => room.welcome_msg, :dialNumber => room.dial_number,
|
@@ -399,72 +392,37 @@ describe BigbluebuttonRoom do
|
|
399
392
|
:voiceBridge => room.voice_bridge)
|
400
393
|
mocked_api.should_receive(:create_meeting).
|
401
394
|
with(room.name, room.meetingid, hash).and_return(hash_create)
|
402
|
-
room.stub(:select_server).and_return(mocked_server)
|
403
395
|
room.server = mocked_server
|
404
396
|
end
|
405
397
|
it { room.send_create }
|
406
398
|
end
|
407
399
|
|
408
|
-
|
409
|
-
let(:another_server) { Factory.create(:bigbluebutton_server) }
|
410
|
-
|
411
|
-
context "and saves the result" do
|
412
|
-
before do
|
413
|
-
room.randomize_meetingid = false # take the shortest path inside #send_create
|
414
|
-
room.should_receive(:select_server).and_return(another_server)
|
415
|
-
room.should_receive(:require_server)
|
416
|
-
room.should_receive(:do_create_meeting)
|
417
|
-
room.server = mocked_server
|
418
|
-
room.send_create
|
419
|
-
end
|
420
|
-
it { BigbluebuttonRoom.find(room.id).server_id.should == another_server.id }
|
421
|
-
end
|
422
|
-
|
423
|
-
context "and does not save when is a new record" do
|
424
|
-
let(:new_room) { Factory.build(:bigbluebutton_room) }
|
425
|
-
before do
|
426
|
-
new_room.randomize_meetingid = false # take the shortest path inside #send_create
|
427
|
-
new_room.should_receive(:select_server).and_return(another_server)
|
428
|
-
new_room.should_receive(:require_server)
|
429
|
-
new_room.should_receive(:do_create_meeting).and_return(nil)
|
430
|
-
new_room.should_not_receive(:save)
|
431
|
-
new_room.server = mocked_server
|
432
|
-
new_room.send_create
|
433
|
-
end
|
434
|
-
it { new_room.new_record?.should be_true }
|
435
|
-
end
|
436
|
-
end
|
437
|
-
|
438
|
-
end # #send_create
|
400
|
+
end
|
439
401
|
|
440
402
|
describe "#join_url" do
|
441
403
|
let(:username) { Forgery(:name).full_name }
|
442
404
|
|
443
405
|
it { should respond_to(:join_url) }
|
444
406
|
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
room.server = mocked_server
|
452
|
-
room.join_url(username, :moderator)
|
453
|
-
end
|
407
|
+
it "with moderator role" do
|
408
|
+
mocked_api.should_receive(:join_meeting_url).
|
409
|
+
with(room.meetingid, username, room.moderator_password)
|
410
|
+
room.server = mocked_server
|
411
|
+
room.join_url(username, :moderator)
|
412
|
+
end
|
454
413
|
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
414
|
+
it "with attendee role" do
|
415
|
+
mocked_api.should_receive(:join_meeting_url).
|
416
|
+
with(room.meetingid, username, room.attendee_password)
|
417
|
+
room.server = mocked_server
|
418
|
+
room.join_url(username, :attendee)
|
419
|
+
end
|
461
420
|
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
end
|
421
|
+
it "without a role" do
|
422
|
+
mocked_api.should_receive(:join_meeting_url).
|
423
|
+
with(room.meetingid, username, 'pass')
|
424
|
+
room.server = mocked_server
|
425
|
+
room.join_url(username, nil, 'pass')
|
468
426
|
end
|
469
427
|
end
|
470
428
|
|
@@ -590,48 +548,4 @@ describe BigbluebuttonRoom do
|
|
590
548
|
it { should respond_to(:"full_logout_url=") }
|
591
549
|
end
|
592
550
|
|
593
|
-
describe "#require_server" do
|
594
|
-
let(:room) { Factory.create(:bigbluebutton_room) }
|
595
|
-
it { should respond_to(:require_server) }
|
596
|
-
|
597
|
-
context "throws exception when the room has no server associated" do
|
598
|
-
before { room.server = nil }
|
599
|
-
it {
|
600
|
-
lambda {
|
601
|
-
room.send(:require_server)
|
602
|
-
}.should raise_error(BigbluebuttonRails::ServerRequired)
|
603
|
-
}
|
604
|
-
end
|
605
|
-
|
606
|
-
context "does nothing if the room has a server associated" do
|
607
|
-
before { room.server = Factory.create(:bigbluebutton_server) }
|
608
|
-
it {
|
609
|
-
lambda {
|
610
|
-
room.send(:require_server)
|
611
|
-
}.should_not raise_error(BigbluebuttonRails::ServerRequired)
|
612
|
-
}
|
613
|
-
end
|
614
|
-
end
|
615
|
-
|
616
|
-
describe "#select_server" do
|
617
|
-
let(:room) { Factory.create(:bigbluebutton_room, :server => nil) }
|
618
|
-
it { should respond_to(:select_server) }
|
619
|
-
|
620
|
-
context "selects the server with less rooms" do
|
621
|
-
before {
|
622
|
-
BigbluebuttonServer.destroy_all
|
623
|
-
s1 = Factory.create(:bigbluebutton_server)
|
624
|
-
@s2 = Factory.create(:bigbluebutton_server)
|
625
|
-
3.times{ Factory.create(:bigbluebutton_room, :server => s1) }
|
626
|
-
2.times{ Factory.create(:bigbluebutton_room, :server => @s2) }
|
627
|
-
}
|
628
|
-
it { room.send(:select_server).should == @s2 }
|
629
|
-
end
|
630
|
-
|
631
|
-
context "returns nil of there are no servers" do
|
632
|
-
before(:each) { BigbluebuttonServer.destroy_all }
|
633
|
-
it { room.send(:select_server).should == nil }
|
634
|
-
end
|
635
|
-
end
|
636
|
-
|
637
551
|
end
|
@@ -36,15 +36,15 @@ describe BigbluebuttonServer do
|
|
36
36
|
server.rooms.should_not be_empty
|
37
37
|
end
|
38
38
|
|
39
|
-
it "
|
39
|
+
it "destroys associated rooms" do
|
40
40
|
server = Factory.create(:bigbluebutton_server)
|
41
|
-
|
41
|
+
Factory.create(:bigbluebutton_room, :server => server)
|
42
|
+
Factory.create(:bigbluebutton_room, :server => server)
|
42
43
|
expect {
|
43
44
|
expect {
|
44
45
|
server.destroy
|
45
46
|
}.to change{ BigbluebuttonServer.count }.by(-1)
|
46
|
-
}.to change{ BigbluebuttonRoom.count }.by(
|
47
|
-
BigbluebuttonRoom.find(room.id).server_id.should == nil
|
47
|
+
}.to change{ BigbluebuttonRoom.count }.by(-2)
|
48
48
|
end
|
49
49
|
|
50
50
|
it { should ensure_length_of(:name).is_at_least(1).is_at_most(500) }
|
@@ -2,12 +2,6 @@ Feature: Monitor the active in the webconference servers
|
|
2
2
|
To check the current status of a server
|
3
3
|
One needs a real-time activity monitor
|
4
4
|
|
5
|
-
Scenario: View the activity monitor page
|
6
|
-
Given an anonymous user
|
7
|
-
And a real server
|
8
|
-
When he goes to the server activity monitor page
|
9
|
-
Then he should see the server activity monitor page
|
10
|
-
|
11
5
|
@need-bot
|
12
6
|
Scenario: View the list of meetings running in a server
|
13
7
|
Given an anonymous user
|
@@ -2,11 +2,6 @@ Feature: Create webconference rooms
|
|
2
2
|
In order to held webconferences
|
3
3
|
One needs to create and configure webconference rooms
|
4
4
|
|
5
|
-
Scenario: Access the page to create a new room
|
6
|
-
Given an anonymous user
|
7
|
-
When he goes to the new room page
|
8
|
-
Then he should see the new room page
|
9
|
-
|
10
5
|
Scenario: Register a new BigBlueButton room
|
11
6
|
Given a real server
|
12
7
|
When the user goes to the new room page
|
@@ -2,18 +2,13 @@ Feature: Create webconference servers
|
|
2
2
|
In order to held webconferences
|
3
3
|
One needs to create and configure webconference servers
|
4
4
|
|
5
|
-
Scenario:
|
6
|
-
Given an anonymous user
|
7
|
-
When he goes to the new server page
|
8
|
-
Then he should see the new server page
|
9
|
-
|
10
|
-
Scenario: Register a new server
|
5
|
+
Scenario: Register a new BigBlueButton server
|
11
6
|
Given an anonymous user
|
12
7
|
When he goes to the new server page
|
13
8
|
And registers a new server
|
14
9
|
Then he should see the information about this server
|
15
10
|
|
16
|
-
Scenario: Try to register a server with errors
|
11
|
+
Scenario: Try to register a BigBlueButton server with errors
|
17
12
|
Given an anonymous user
|
18
13
|
When he goes to the new server page
|
19
14
|
And registers a new server with a wrong URL
|
@@ -2,13 +2,6 @@ Feature: Edit webconference rooms
|
|
2
2
|
To change the information of a webconference rooms
|
3
3
|
One needs to be able to edit and update the room
|
4
4
|
|
5
|
-
Scenario: Access the page to edit a room
|
6
|
-
Given an anonymous user
|
7
|
-
And a real server
|
8
|
-
And a room in this server
|
9
|
-
When he goes to the edit room page
|
10
|
-
Then he should see the edit room page
|
11
|
-
|
12
5
|
Scenario: Edit data in a BigBlueButton room
|
13
6
|
Given an anonymous user
|
14
7
|
And a real server
|
@@ -2,13 +2,7 @@ Feature: Edit webconference servers
|
|
2
2
|
To change the information of a webconference server
|
3
3
|
One needs to be able to edit and update the server
|
4
4
|
|
5
|
-
Scenario:
|
6
|
-
Given an anonymous user
|
7
|
-
And a real server
|
8
|
-
When he goes to the edit server page
|
9
|
-
Then he should see the edit server page
|
10
|
-
|
11
|
-
Scenario: Edit data in a server
|
5
|
+
Scenario: Edit data in a BigBlueButton server
|
12
6
|
Given an anonymous user
|
13
7
|
And a real server
|
14
8
|
When he goes to the edit server page
|
@@ -17,7 +11,7 @@ Feature: Edit webconference servers
|
|
17
11
|
Then he should be at the show server URL
|
18
12
|
And the server URL should be "http://test.com/bigbluebutton/api"
|
19
13
|
|
20
|
-
Scenario: Try to edit data in a server with incorrect values
|
14
|
+
Scenario: Try to edit data in a BigBlueButton server with incorrect values
|
21
15
|
Given an anonymous user
|
22
16
|
And a real server
|
23
17
|
When he goes to the edit server page
|
@@ -35,7 +35,6 @@ Feature: Join webconference rooms
|
|
35
35
|
And a private room in this server
|
36
36
|
When the user goes to the join room page
|
37
37
|
Then he should be redirected to the invite room URL
|
38
|
-
And he should see the invite room page
|
39
38
|
|
40
39
|
@mechanize
|
41
40
|
Scenario: Joining a private room as a moderator
|
@@ -3,24 +3,16 @@ Feature: List and show webconference rooms
|
|
3
3
|
One needs to see the room in a list of rooms
|
4
4
|
and see all the information it has stored
|
5
5
|
|
6
|
-
Scenario: View the list of rooms
|
6
|
+
Scenario: View the list of BigBlueButton rooms
|
7
7
|
Given an anonymous user
|
8
8
|
And a real server
|
9
9
|
And 3 rooms in this server
|
10
10
|
When he goes to the rooms index page
|
11
11
|
Then he should see all available rooms in the list
|
12
12
|
|
13
|
-
Scenario: View all information of a room
|
13
|
+
Scenario: View all information of a BigBlueButton room
|
14
14
|
Given an anonymous user
|
15
15
|
And a real server
|
16
16
|
And a room in this server
|
17
17
|
When he goes to the show room page
|
18
18
|
Then he should see all the information available for this room
|
19
|
-
|
20
|
-
Scenario: View the list of rooms for a single server
|
21
|
-
Given an anonymous user
|
22
|
-
And a real server
|
23
|
-
And 3 rooms in this server
|
24
|
-
And 2 rooms in any other server
|
25
|
-
When he goes to the server rooms page
|
26
|
-
Then he should see only the rooms from this server
|
@@ -4,8 +4,8 @@ When /^(\d+) meetings running in this server$/ do |count|
|
|
4
4
|
count.to_i.times do |i|
|
5
5
|
room = Factory.create(:bigbluebutton_room, :server => @server)
|
6
6
|
room.send_create
|
7
|
-
BigBlueButtonBot.new(@server.api, room.meetingid, msalt,
|
8
|
-
FeaturesConfig.root['timeout_bot_start'])
|
7
|
+
BigBlueButtonBot.new(@server.api, room.meetingid, msalt,
|
8
|
+
1, FeaturesConfig.root['timeout_bot_start'])
|
9
9
|
@rooms << room
|
10
10
|
end
|
11
11
|
end
|
@@ -16,8 +16,8 @@ When /^(\d+) meetings recently ended in this server$/ do |count|
|
|
16
16
|
count.to_i.times do |i|
|
17
17
|
room = Factory.create(:bigbluebutton_room, :server => @server)
|
18
18
|
room.send_create
|
19
|
-
BigBlueButtonBot.new(@server.api, room.meetingid, msalt,
|
20
|
-
FeaturesConfig.root['timeout_bot_start'])
|
19
|
+
BigBlueButtonBot.new(@server.api, room.meetingid, msalt,
|
20
|
+
1, FeaturesConfig.root['timeout_bot_start'])
|
21
21
|
BigBlueButtonBot.finalize(room.meetingid)
|
22
22
|
sleep 1
|
23
23
|
@ended_rooms << room
|
@@ -76,12 +76,12 @@ def check_server_activity_monitor_rooms(rooms)
|
|
76
76
|
has_content(room.meetingid)
|
77
77
|
|
78
78
|
method = room.new_record? ? method(:doesnt_have_element) : method(:has_element)
|
79
|
-
method.call("a", { :href =>
|
80
|
-
method.call("a", { :href =>
|
81
|
-
method.call("a", { :href =>
|
82
|
-
method.call("a", { :href =>
|
83
|
-
method.call("a", { :href =>
|
84
|
-
method.call("a", { :href =>
|
79
|
+
method.call("a", { :href => bigbluebutton_server_room_path(@server, room) })
|
80
|
+
method.call("a", { :href => edit_bigbluebutton_server_room_path(@server, room) })
|
81
|
+
method.call("a", { :href => bigbluebutton_server_room_path(@server, room), :"data-method" => :delete })
|
82
|
+
method.call("a", { :href => join_bigbluebutton_server_room_path(@server, room) })
|
83
|
+
method.call("a", { :href => join_mobile_bigbluebutton_server_room_path(@server, room) })
|
84
|
+
method.call("a", { :href => end_bigbluebutton_server_room_path(@server, room) })
|
85
85
|
|
86
86
|
room.fetch_is_running?
|
87
87
|
if room.is_running?
|
@@ -5,6 +5,7 @@ end
|
|
5
5
|
When /^(\d+) server(s)?$/i do |count, _|
|
6
6
|
# Note: these servers are not real, it will NOT be possible to make api requests
|
7
7
|
# for a real server use :bigbluebutton_server_integration
|
8
|
+
# Use "a real server" whenever possible
|
8
9
|
count.to_i.times do
|
9
10
|
Factory.create(:bigbluebutton_server)
|
10
11
|
end
|
@@ -40,17 +41,14 @@ end
|
|
40
41
|
When /(?:|I ) go(es)? to the (.+) page( \(no view check\))?$/i do |_, page_name, not_check|
|
41
42
|
case page_name
|
42
43
|
when /join external room/i
|
43
|
-
@params = { :meeting => @room.meetingid
|
44
|
+
@params = { :meeting => @room.meetingid }
|
44
45
|
end
|
45
46
|
visit path_to(page_name, @params)
|
47
|
+
check_template(page_name) if not_check.nil?
|
46
48
|
end
|
47
49
|
|
48
50
|
When /see the (.+) page$/i do |page_name|
|
49
|
-
|
50
|
-
:room => @room, :server => @server,
|
51
|
-
:rooms => BigbluebuttonRoom.all, :servers => BigbluebuttonServer.all
|
52
|
-
}
|
53
|
-
check_template(page_name, opts)
|
51
|
+
check_template(page_name)
|
54
52
|
end
|
55
53
|
|
56
54
|
When /a user named "(.+)"/i do |username|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
When /^registers a new room$/i do
|
2
2
|
attrs = Factory.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[randomize_meetingid]") if attrs[:randomize_meetingid]
|
@@ -1,13 +1,17 @@
|
|
1
1
|
When /^he should see a form to join the external room$/i do
|
2
|
-
|
2
|
+
within(form_selector(external_bigbluebutton_server_rooms_path(@server), 'post')) do
|
3
|
+
has_element("input", { :name => 'meeting', :type => 'hidden', :value => @room.meetingid })
|
4
|
+
has_element("input", { :name => 'user[name]', :type => 'text' })
|
5
|
+
has_element("input", { :name => 'user[password]', :type => 'password' })
|
6
|
+
end
|
3
7
|
end
|
4
8
|
|
5
9
|
When /^he should see his name in the user name input$/i do
|
6
10
|
case current_url
|
7
11
|
when /\/invite$/ # normal rooms
|
8
|
-
form = form_selector(
|
12
|
+
form = form_selector(join_bigbluebutton_server_room_path(@server, @room), 'post')
|
9
13
|
when /\/external(\?.*)?/ # external rooms
|
10
|
-
form = form_selector(
|
14
|
+
form = form_selector(external_bigbluebutton_server_rooms_path(@server), 'post')
|
11
15
|
end
|
12
16
|
within(form) do
|
13
17
|
has_element("input", { :name => 'user[name]', :type => 'text', :value => @user.name })
|
@@ -1,18 +1,11 @@
|
|
1
1
|
When /^he should see all available rooms in the list$/i do
|
2
|
+
# FIXME this is already being checked in "he goes to the rooms index page"
|
3
|
+
# any better ideas?
|
2
4
|
check_template("rooms index")
|
3
5
|
end
|
4
6
|
|
5
7
|
When /^he should see all the information available for this room$/i do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
When /^(\d+) room(s)? in any other server$/i do |count, _|
|
10
|
-
any_other_server = Factory.create(:bigbluebutton_server)
|
11
|
-
count.to_i.times do
|
12
|
-
Factory.create(:bigbluebutton_room, :server => any_other_server)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
When /^he should see only the rooms from this server$/i do
|
17
|
-
check_template("server rooms", { :rooms => @server.rooms })
|
8
|
+
# FIXME this is already being checked in "he goes to the show room page"
|
9
|
+
# any better ideas?
|
10
|
+
check_template("show room")
|
18
11
|
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
When /^he should see all available servers in the list$/i do
|
2
|
+
# FIXME this is already being checked in "he goes to the servers index page"
|
3
|
+
# any better ideas?
|
2
4
|
check_template("servers index")
|
3
5
|
end
|
4
6
|
|
5
7
|
When /^he should see all the information available for this server$/i do
|
6
|
-
|
8
|
+
# FIXME this is already being checked in "he goes to the show server page"
|
9
|
+
# any better ideas?
|
10
|
+
check_template("show server")
|
7
11
|
end
|
data/spec/rails_app/features/support/{patches/application_controller.rb → application_controller.rb}
RENAMED
File without changes
|