From ead2921e848b3fe28735dc5d5ea182a1d386751a Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Thu, 26 Feb 2015 17:43:22 -0600 Subject: [PATCH] VRFS-2782 : Add api controller test for multiple bitrates. Fix bug found as a result. --- ruby/lib/jam_ruby/models/jam_track_right.rb | 2 +- ruby/spec/files/off.ogg | Bin 0 -> 4303 bytes .../api_jam_tracks_controller_spec.rb | 63 ++++++++++++++---- web/spec/files/off.ogg | Bin 0 -> 4303 bytes 4 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 ruby/spec/files/off.ogg create mode 100644 web/spec/files/off.ogg diff --git a/ruby/lib/jam_ruby/models/jam_track_right.rb b/ruby/lib/jam_ruby/models/jam_track_right.rb index f99833f08..f7f1f7ddf 100644 --- a/ruby/lib/jam_ruby/models/jam_track_right.rb +++ b/ruby/lib/jam_ruby/models/jam_track_right.rb @@ -102,7 +102,7 @@ module JamRuby def enqueue(bitrate=48) begin JamTrackRight.where(:id => self.id).update_all(:signing_queued_at => Time.now, :signing_started_at => nil, :last_signed_at => nil) - Resque.enqueue(JamTracksBuilder, self.id, bitrate: bitrate) + Resque.enqueue(JamTracksBuilder, self.id, bitrate) true rescue Exception => e puts "e: #{e}" diff --git a/ruby/spec/files/off.ogg b/ruby/spec/files/off.ogg new file mode 100644 index 0000000000000000000000000000000000000000..743d6e3aa6ca187978d95bb768ef449e0ccc6071 GIT binary patch literal 4303 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 literal 0 HcmV?d00001 diff --git a/web/spec/controllers/api_jam_tracks_controller_spec.rb b/web/spec/controllers/api_jam_tracks_controller_spec.rb index b9db1eefd..210aa39f6 100644 --- a/web/spec/controllers/api_jam_tracks_controller_spec.rb +++ b/web/spec/controllers/api_jam_tracks_controller_spec.rb @@ -6,6 +6,7 @@ describe ApiJamTracksController do before(:all) do @original_storage = JamTrackTrackUploader.storage = :fog @original_storage_right = JamTrackRightUploader.storage = :fog + @s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key) end after(:all) do @@ -76,7 +77,7 @@ describe ApiJamTracksController do it "finds a download" do #get "/download/#{right.id}/" right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track) - get :download, { :format => 'json', :id => @jam_track.id } + get :download, { :format=>'json', :id=>@jam_track.id } response.should be_success response.status.should == 202 @@ -115,43 +116,81 @@ describe ApiJamTracksController do @jam_track = FactoryGirl.create(:jam_track) #jam_track_track.jam_track jam_track_track = @jam_track.jam_track_tracks.first + # 48 kHz: uploader = JamTrackTrackUploader.new(jam_track_track, :url_48) uploader.store!(File.open(@ogg_path, 'rb')) + + # 44 kHz: + uploader = JamTrackTrackUploader.new(jam_track_track, :url_44) + uploader.store!(File.open(File.join('spec', 'files', 'off.ogg'), 'rb')) + #jam_track_track.url.store!(File.open(ogg_path, "rb")) jam_track_track.save! jam_track_track.reload ResqueSpec.reset! end - it "download depends on rights" do - s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key) - get :download, :id => @jam_track.id + it "download depends on rights" do + get :download, :id=>@jam_track.id response.status.should == 403 right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track) - get :download, :id => @jam_track.id + get :download, :id=>@jam_track.id response.status.should == 202 right.download_count.should eq(0) right.private_key.should be_nil - JamTracksBuilder.should have_queued(right.id).in(:jam_tracks_builder) - qname = "#{ResqueSpec.queue_name(JamRuby::JamTracksBuilder)}" + #puts "ResqueSpec.peek(qname)#{ResqueSpec.peek(qname)}" + JamTracksBuilder.should have_queued(right.id,nil).in(:jam_tracks_builder) + expect(ResqueSpec.peek(qname).present?).to eq(true) ResqueSpec.perform_next(qname) - JamTracksBuilder.should_not have_queued(right.id).in(:jam_tracks_builder) + JamTracksBuilder.should_not have_queued(right.id,nil).in(:jam_tracks_builder) right.reload right.private_key.should_not be_nil right.download_count.should eq(0) - get :download, :id => @jam_track.id + get :download, :id=>@jam_track.id response.status.should == 302 response.location.should =~ /.*#{Regexp.escape(right.filename)}.*/ right.reload right.download_count.should eq(1) - notifications = Notification.where(:jam_track_right_id => right.id) + notifications = Notification.where(:jam_track_right_id=>right.id) + notifications.count.should == 1 + end + + it "supports multiple bitrates" do + get :download, :id=>@jam_track.id, :bitrate=>44 + response.status.should == 403 + + right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track) + get :download, :id=>@jam_track.id, :bitrate=>44 + response.status.should == 202 + right.download_count.should eq(0) + right.private_key.should be_nil + + qname = "#{ResqueSpec.queue_name(JamRuby::JamTracksBuilder)}" + #puts "ResqueSpec.peek(qname)#{ResqueSpec.peek(qname)}" + JamTracksBuilder.should have_queued(right.id,"44").in(:jam_tracks_builder) + + expect(ResqueSpec.peek(qname).present?).to eq(true) + ResqueSpec.perform_next(qname) + + JamTracksBuilder.should_not have_queued(right.id,"44").in(:jam_tracks_builder) + right.reload + right.private_key.should_not be_nil + right.download_count.should eq(0) + + get :download, :id=>@jam_track.id, :bitrate=>44 + response.status.should == 302 + response.location.should =~ /.*#{Regexp.escape(right.filename)}.*/ + right.reload + right.download_count.should eq(1) + + notifications = Notification.where(:jam_track_right_id=>right.id) notifications.count.should == 1 end end @@ -213,7 +252,7 @@ describe ApiJamTracksController do it "success" do right = FactoryGirl.create(:jam_track_right, user: @user, signed: false) right.signing_queued_at.should be_nil - post :enqueue, {:format => 'json', :id => right.jam_track.id} + post :enqueue, {:format=>'json', :id=>right.jam_track.id} response.should be_success right.reload @@ -225,7 +264,7 @@ describe ApiJamTracksController do it "success" do right = FactoryGirl.create(:jam_track_right, user: @user) - get :show_jam_track_right, {:id => right.jam_track.id} + get :show_jam_track_right, {:id=>right.jam_track.id} response.should be_success json = JSON.parse(response.body) json['signing_state'].should eq('QUIET') diff --git a/web/spec/files/off.ogg b/web/spec/files/off.ogg new file mode 100644 index 0000000000000000000000000000000000000000..743d6e3aa6ca187978d95bb768ef449e0ccc6071 GIT binary patch literal 4303 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 literal 0 HcmV?d00001