VRFS-2782 : Add api controller test for multiple bitrates. Fix bug found as a result.

This commit is contained in:
Steven Miers 2015-02-26 17:43:22 -06:00
parent f935b8c7e9
commit ead2921e84
4 changed files with 52 additions and 13 deletions

View File

@ -102,7 +102,7 @@ module JamRuby
def enqueue(bitrate=48) def enqueue(bitrate=48)
begin begin
JamTrackRight.where(:id => self.id).update_all(:signing_queued_at => Time.now, :signing_started_at => nil, :last_signed_at => nil) 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 true
rescue Exception => e rescue Exception => e
puts "e: #{e}" puts "e: #{e}"

BIN
ruby/spec/files/off.ogg Normal file

Binary file not shown.

View File

@ -6,6 +6,7 @@ describe ApiJamTracksController do
before(:all) do before(:all) do
@original_storage = JamTrackTrackUploader.storage = :fog @original_storage = JamTrackTrackUploader.storage = :fog
@original_storage_right = JamTrackRightUploader.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 end
after(:all) do after(:all) do
@ -76,7 +77,7 @@ describe ApiJamTracksController do
it "finds a download" do it "finds a download" do
#get "/download/#{right.id}/" #get "/download/#{right.id}/"
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track) 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.should be_success
response.status.should == 202 response.status.should == 202
@ -115,43 +116,81 @@ describe ApiJamTracksController do
@jam_track = FactoryGirl.create(:jam_track) #jam_track_track.jam_track @jam_track = FactoryGirl.create(:jam_track) #jam_track_track.jam_track
jam_track_track = @jam_track.jam_track_tracks.first jam_track_track = @jam_track.jam_track_tracks.first
# 48 kHz:
uploader = JamTrackTrackUploader.new(jam_track_track, :url_48) uploader = JamTrackTrackUploader.new(jam_track_track, :url_48)
uploader.store!(File.open(@ogg_path, 'rb')) 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.url.store!(File.open(ogg_path, "rb"))
jam_track_track.save! jam_track_track.save!
jam_track_track.reload jam_track_track.reload
ResqueSpec.reset! ResqueSpec.reset!
end end
it "download depends on rights" do 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
get :download, :id => @jam_track.id
response.status.should == 403 response.status.should == 403
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track) 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 response.status.should == 202
right.download_count.should eq(0) right.download_count.should eq(0)
right.private_key.should be_nil right.private_key.should be_nil
JamTracksBuilder.should have_queued(right.id).in(:jam_tracks_builder)
qname = "#{ResqueSpec.queue_name(JamRuby::JamTracksBuilder)}" 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) expect(ResqueSpec.peek(qname).present?).to eq(true)
ResqueSpec.perform_next(qname) 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.reload
right.private_key.should_not be_nil right.private_key.should_not be_nil
right.download_count.should eq(0) right.download_count.should eq(0)
get :download, :id => @jam_track.id get :download, :id=>@jam_track.id
response.status.should == 302 response.status.should == 302
response.location.should =~ /.*#{Regexp.escape(right.filename)}.*/ response.location.should =~ /.*#{Regexp.escape(right.filename)}.*/
right.reload right.reload
right.download_count.should eq(1) 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 notifications.count.should == 1
end end
end end
@ -213,7 +252,7 @@ describe ApiJamTracksController do
it "success" do it "success" do
right = FactoryGirl.create(:jam_track_right, user: @user, signed: false) right = FactoryGirl.create(:jam_track_right, user: @user, signed: false)
right.signing_queued_at.should be_nil 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 response.should be_success
right.reload right.reload
@ -225,7 +264,7 @@ describe ApiJamTracksController do
it "success" do it "success" do
right = FactoryGirl.create(:jam_track_right, user: @user) 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 response.should be_success
json = JSON.parse(response.body) json = JSON.parse(response.body)
json['signing_state'].should eq('QUIET') json['signing_state'].should eq('QUIET')

BIN
web/spec/files/off.ogg Normal file

Binary file not shown.