From 7c86aa8e7fb0f3ea0a67598884ce1e2f8a3823bf Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Fri, 3 Mar 2017 15:26:07 -0500 Subject: [PATCH] more testing and code cleanup and enable coverage reports on circle --- app/controllers/bbb_controller.rb | 2 +- app/jobs/end_meeting_job.rb | 21 ++------------------- app/jobs/recording_deletes_job.rb | 6 ++---- app/jobs/recording_updates_job.rb | 8 +++----- circle.yml | 4 ++++ config/environments/test.rb | 2 -- test/controllers/bbb_controller_test.rb | 14 ++++++++------ test/controllers/landing_controller_test.rb | 5 +++++ test/test_helper.rb | 11 ++++++++--- 9 files changed, 33 insertions(+), 40 deletions(-) diff --git a/app/controllers/bbb_controller.rb b/app/controllers/bbb_controller.rb index 825db8dc..ea93b172 100644 --- a/app/controllers/bbb_controller.rb +++ b/app/controllers/bbb_controller.rb @@ -153,7 +153,7 @@ class BbbController < ApplicationController metadata = params.select{ |k, v| k.match(/^meta_/) } bbb_res = bbb_update_recordings(params[:record_id], published, metadata) if bbb_res[:returncode] - RecordingUpdatesJob.perform_later(@user.encrypted_id, params[:record_id], params[:id]) + RecordingUpdatesJob.perform_later(@user.encrypted_id, params[:record_id]) end render_bbb_response bbb_res end diff --git a/app/jobs/end_meeting_job.rb b/app/jobs/end_meeting_job.rb index 66711057..6cf7c251 100644 --- a/app/jobs/end_meeting_job.rb +++ b/app/jobs/end_meeting_job.rb @@ -15,27 +15,10 @@ # with BigBlueButton; if not, see . class EndMeetingJob < ApplicationJob - include BbbApi - queue_as :default def perform(room, meeting) - tries = 0 - sleep_time = 2 - - while tries < 4 - bbb_res = bbb_get_meeting_info("#{room}-#{meeting}") - - if !bbb_res[:returncode] - ActionCable.server.broadcast "#{room}-#{meeting}_meeting_updates_channel", - action: 'meeting_ended' - break - end - - sleep sleep_time - sleep_time = sleep_time * 2 - tries += 1 - end - + ActionCable.server.broadcast "#{room}-#{meeting}_meeting_updates_channel", + action: 'meeting_ended' end end diff --git a/app/jobs/recording_deletes_job.rb b/app/jobs/recording_deletes_job.rb index 79217fd9..32c1b03c 100644 --- a/app/jobs/recording_deletes_job.rb +++ b/app/jobs/recording_deletes_job.rb @@ -15,12 +15,10 @@ # with BigBlueButton; if not, see . class RecordingDeletesJob < ApplicationJob - include BbbApi - queue_as :default - def perform(room, record_id, meeting=nil) - full_id = "#{room}-#{meeting}" + def perform(room, record_id, meeting_name) + full_id = "#{room}-#{meeting_name}" ActionCable.server.broadcast "#{room}_recording_updates_channel", action: 'delete', id: record_id diff --git a/app/jobs/recording_updates_job.rb b/app/jobs/recording_updates_job.rb index 319d016c..e059a2bb 100644 --- a/app/jobs/recording_updates_job.rb +++ b/app/jobs/recording_updates_job.rb @@ -19,11 +19,9 @@ class RecordingUpdatesJob < ApplicationJob queue_as :default - def perform(room, record_id, meeting=nil) - bbb_res = bbb_get_recordings({recordID: record_id}) - recording = bbb_res[:recordings].first - full_id = room - full_id += "-#{recording[:metadata][:"meeting-name"]}" + def perform(room, record_id) + recording = bbb_get_recordings({recordID: record_id})[:recordings].first + full_id = "#{room}-#{recording[:metadata][:"meeting-name"]}" ActionCable.server.broadcast "#{room}_recording_updates_channel", action: 'update', id: record_id, diff --git a/circle.yml b/circle.yml index 5667afd2..014df8c7 100644 --- a/circle.yml +++ b/circle.yml @@ -11,3 +11,7 @@ deployment: branch: master commands: - ./scripts/build_image_master.sh + +test: + pre: + - cp env .env diff --git a/config/environments/test.rb b/config/environments/test.rb index 2b239219..30587ef6 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -37,8 +37,6 @@ Rails.application.configure do # Print deprecation notices to the stderr. config.active_support.deprecation = :stderr - config.mail_notifications = true - # Raises error for missing translations # config.action_view.raise_on_missing_translations = true end diff --git a/test/controllers/bbb_controller_test.rb b/test/controllers/bbb_controller_test.rb index 74962cd4..44cc5363 100644 --- a/test/controllers/bbb_controller_test.rb +++ b/test/controllers/bbb_controller_test.rb @@ -19,6 +19,8 @@ require 'test_helper' class BbbControllerTest < ActionController::TestCase include BbbApi + RETURNCODE_SUCCESS = 'SUCCESS' + setup do @meeting_id = 'test_id' @user = users :user1 @@ -51,7 +53,7 @@ class BbbControllerTest < ActionController::TestCase assert_response :success end - test "should wati for moderator on join for authenticated meeting when not room owner" do + test "should wait for moderator on join for authenticated meeting when not room owner" do BbbController.any_instance.expects(:bbb_join_url) .with() do |token, full_name, opts| opts[:wait_for_moderator] && !opts[:user_is_moderator] @@ -67,7 +69,7 @@ class BbbControllerTest < ActionController::TestCase BbbController.any_instance.expects(:bbb_end_meeting) .with() do |token| token == meeting_token(@user, @meeting_id) - end.returns({status: :ok}).once + end.returns({status: :ok, returncode: RETURNCODE_SUCCESS}).once get :end, params: { room_id: @user.encrypted_id, id: @meeting_id, resource: 'rooms' } assert_response :success @@ -84,7 +86,7 @@ class BbbControllerTest < ActionController::TestCase BbbController.any_instance.expects(:bbb_get_recordings) .returns({status: :ok, recordings: []}).once - get :recordings, params: { room_id: @user.encrypted_id, resource: 'rooms' } + get :recordings, params: { room_id: @user.encrypted_id, resource: 'rooms', id: @meeting_id } assert_response :success end @@ -94,7 +96,7 @@ class BbbControllerTest < ActionController::TestCase BbbController.any_instance.expects(:bbb_get_recordings) .returns({status: :ok, recordings: [{recordID: @recording}]}).once BbbController.any_instance.expects(:bbb_update_recordings) - .returns({status: :ok}).once + .returns({status: :ok, returncode: RETURNCODE_SUCCESS}).once patch :update_recordings, params: { room_id: @user.encrypted_id, resource: 'rooms', record_id: @recording } assert_response :success @@ -104,9 +106,9 @@ class BbbControllerTest < ActionController::TestCase login @user BbbController.any_instance.expects(:bbb_get_recordings) - .returns({status: :ok, recordings: [{recordID: @recording}]}).at_least_once + .returns({status: :ok, recordings: [{recordID: @recording, metadata: {'meeting-name': @meeting_id}}]}).twice BbbController.any_instance.expects(:bbb_delete_recordings) - .returns({status: :ok}).once + .returns({status: :ok, returncode: RETURNCODE_SUCCESS}).once delete :delete_recordings, params: { room_id: @user.encrypted_id, resource: 'rooms', record_id: @recording } assert_response :success diff --git a/test/controllers/landing_controller_test.rb b/test/controllers/landing_controller_test.rb index 648921b9..b5321449 100644 --- a/test/controllers/landing_controller_test.rb +++ b/test/controllers/landing_controller_test.rb @@ -43,6 +43,11 @@ class LandingControllerTest < ActionController::TestCase assert_response :success end + test "should not get room for invalid user" do + get :resource, params: { room_id: 'invalid id', id: @meeting_id, resource: 'rooms' } + assert_response :redirect + end + test "should get wait for moderator" do get :wait_for_moderator, params: { room_id: @user.encrypted_id, id: @meeting_id, resource: 'rooms' } assert_response :success diff --git a/test/test_helper.rb b/test/test_helper.rb index 61a1b471..63273dd4 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -17,13 +17,18 @@ ENV['RAILS_ENV'] ||= 'test' require 'simplecov' +if ENV['CIRCLE_ARTIFACTS'] + dir = File.join(ENV['CIRCLE_ARTIFACTS'], "coverage") + SimpleCov.coverage_dir(dir) +end SimpleCov.start do - add_group 'Models', 'app/models' - add_group 'Controllers', 'app/controllers' - add_group 'Helpers', 'app/helpers' + add_group 'Models', 'app/models/' + add_group 'Controllers', 'app/controllers/' + add_group 'Helpers', 'app/helpers/' add_group 'Config', 'config/' add_group 'Libraries', 'lib/' add_group 'Tests', 'test/' + add_group 'Jobs', 'app/jobs/' end require File.expand_path('../../config/environment', __FILE__)