2014-11-04 20:55:12 +00:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
|
|
describe JamTrackRight do
|
2014-12-16 00:02:51 +00:00
|
|
|
include UsesTempFiles
|
|
|
|
|
include CarrierWave::Test::Matchers
|
2014-11-04 20:55:12 +00:00
|
|
|
it "created" do
|
|
|
|
|
jam_track_right = FactoryGirl.create(:jam_track_right)
|
|
|
|
|
|
|
|
|
|
user = jam_track_right.user
|
|
|
|
|
jam_track = jam_track_right.jam_track
|
|
|
|
|
|
|
|
|
|
# verify that the user sees this as a purchased jam_track
|
|
|
|
|
user.purchased_jam_tracks.should == [jam_track]
|
|
|
|
|
|
|
|
|
|
# verify that the jam_track sees the user as an owner
|
|
|
|
|
jam_track.owners.should == [user]
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "validations" do
|
|
|
|
|
it "one purchase per user/jam_track combo" do
|
|
|
|
|
user = FactoryGirl.create(:user)
|
|
|
|
|
jam_track = FactoryGirl.create(:jam_track)
|
|
|
|
|
|
|
|
|
|
right_1 = FactoryGirl.create(:jam_track_right, user: user, jam_track: jam_track)
|
|
|
|
|
right_2 = FactoryGirl.build(:jam_track_right, user: user, jam_track: jam_track)
|
|
|
|
|
right_2.valid?.should be_false
|
|
|
|
|
right_2.errors[:user_id].should == ['has already been taken']
|
|
|
|
|
end
|
|
|
|
|
end
|
2014-12-15 18:15:44 +00:00
|
|
|
|
2014-12-16 00:02:51 +00:00
|
|
|
describe "JKZ" do
|
|
|
|
|
before(:all) do
|
|
|
|
|
original_storage = JamTrackTrackUploader.storage = :fog
|
|
|
|
|
original_storage = JamTrackRightUploader.storage = :fog
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
after(:all) do
|
|
|
|
|
JamTrackTrackUploader.storage = @original_storage
|
|
|
|
|
JamTrackRightUploader.storage = @original_storage
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
before(:each) do
|
|
|
|
|
#content_for_file('abc')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "should fail if no tracks" do
|
2014-12-15 18:15:44 +00:00
|
|
|
user = FactoryGirl.create(:user)
|
|
|
|
|
jam_track = FactoryGirl.create(:jam_track)
|
|
|
|
|
right = JamTrackRight.create(:user=>user, :jam_track=>jam_track)
|
|
|
|
|
expect {
|
|
|
|
|
JamRuby::JamTracksManager.save_jam_track_jkz(user, jam_track)
|
2014-12-16 00:02:51 +00:00
|
|
|
}.to raise_error(ArgumentError)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "should create" do
|
|
|
|
|
ogg_path = File.join('spec', 'files', 'on.ogg')
|
|
|
|
|
user = FactoryGirl.create(:user)
|
|
|
|
|
jam_track_track = FactoryGirl.create(:jam_track_track)
|
|
|
|
|
jam_track = jam_track_track.jam_track
|
2015-03-17 18:39:21 +00:00
|
|
|
|
|
|
|
|
s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key)
|
|
|
|
|
|
|
|
|
|
s3.upload(jam_track_track.manually_uploaded_filename(:url_48), ogg_path)
|
|
|
|
|
jam_track_track[:url_48] = jam_track_track.manually_uploaded_filename(:url_48)
|
2014-12-16 00:02:51 +00:00
|
|
|
jam_track_track.save!
|
2015-03-12 13:51:52 +00:00
|
|
|
|
2015-03-09 14:44:12 +00:00
|
|
|
jam_track_track[:url_48].should == jam_track_track.manually_uploaded_filename(:url_48)
|
2014-12-16 00:02:51 +00:00
|
|
|
|
|
|
|
|
# verify it's on S3
|
2015-02-25 23:19:03 +00:00
|
|
|
s3.exists?(jam_track_track[:url_48]).should be_true
|
|
|
|
|
s3.length(jam_track_track[:url_48]).should == File.size?(ogg_path)
|
2014-12-16 00:02:51 +00:00
|
|
|
|
|
|
|
|
jam_track_right = JamTrackRight.create(:user=>user, :jam_track=>jam_track)
|
2014-12-16 02:30:46 +00:00
|
|
|
#expect {
|
2014-12-16 00:02:51 +00:00
|
|
|
JamRuby::JamTracksManager.save_jam_track_jkz(user, jam_track)
|
2014-12-16 02:30:46 +00:00
|
|
|
#}.to_not raise_error(ArgumentError)
|
2014-12-16 00:02:51 +00:00
|
|
|
jam_track_right.reload
|
2015-05-01 17:09:18 +00:00
|
|
|
jam_track_right[:url_48].should == jam_track_right.store_dir + '/' + jam_track_right.filename(:url_48)
|
2014-12-16 00:02:51 +00:00
|
|
|
|
|
|
|
|
# verify it's on S3
|
2015-02-25 23:19:03 +00:00
|
|
|
url = jam_track_right[:url_48]
|
2014-12-16 00:02:51 +00:00
|
|
|
s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key)
|
2014-12-16 02:30:46 +00:00
|
|
|
s3.exists?(url).should be_true
|
|
|
|
|
s3.length(url).should > File.size?(ogg_path)
|
|
|
|
|
|
|
|
|
|
JamTrackRight.ready_to_clean.count.should == 0
|
|
|
|
|
jam_track_right.destroy
|
|
|
|
|
s3.exists?(url).should be_false
|
2014-12-16 00:02:51 +00:00
|
|
|
end
|
2014-12-15 18:15:44 +00:00
|
|
|
end
|
|
|
|
|
|
2015-01-05 22:53:43 +00:00
|
|
|
describe "list_keys" do
|
|
|
|
|
let(:user) {FactoryGirl.create(:user)}
|
|
|
|
|
|
|
|
|
|
it "empty" do
|
|
|
|
|
JamTrackRight.list_keys(user, nil).should eq([])
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "bogus key" do
|
2015-03-25 16:11:10 +00:00
|
|
|
JamTrackRight.list_keys(user, ['2112']).should eq([])
|
2015-01-05 22:53:43 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "valid track with no rights to it by querying user" do
|
|
|
|
|
jam_track = FactoryGirl.create(:jam_track)
|
|
|
|
|
keys = JamTrackRight.list_keys(user, [jam_track.id])
|
2015-01-06 01:02:48 +00:00
|
|
|
keys.should have(1).items
|
|
|
|
|
keys[0]['private_key'].should be_nil
|
2015-01-05 22:53:43 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "valid track with rights to it by querying user" do
|
2015-05-01 17:09:18 +00:00
|
|
|
jam_track_right = FactoryGirl.create(:jam_track_right, private_key_44: 'keyabc')
|
2015-01-05 22:53:43 +00:00
|
|
|
keys = JamTrackRight.list_keys(jam_track_right.user, [jam_track_right.jam_track.id])
|
2015-01-06 01:02:48 +00:00
|
|
|
keys.should have(1).items
|
2015-01-05 22:53:43 +00:00
|
|
|
keys[0].id.should == jam_track_right.jam_track.id
|
2015-05-01 17:09:18 +00:00
|
|
|
keys[0]['private_key_44'].should eq('keyabc')
|
|
|
|
|
keys[0]['private_key_48'].should be_nil
|
2015-01-05 22:53:43 +00:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2015-01-09 17:23:20 +00:00
|
|
|
describe "signing_state" do
|
|
|
|
|
it "quiet" do
|
|
|
|
|
right = FactoryGirl.create(:jam_track_right)
|
|
|
|
|
right.signing_state.should eq('QUIET')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "signed" do
|
2015-05-01 17:09:18 +00:00
|
|
|
right = FactoryGirl.create(:jam_track_right, signed_44: true, signing_started_at_44: Time.now)
|
2015-01-09 17:23:20 +00:00
|
|
|
right.signing_state.should eq('SIGNED')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "error" do
|
|
|
|
|
right = FactoryGirl.create(:jam_track_right, error_count: 1)
|
|
|
|
|
right.signing_state.should eq('ERROR')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "signing" do
|
2015-05-01 17:09:18 +00:00
|
|
|
right = FactoryGirl.create(:jam_track_right, signing_started_at_44: Time.now, packaging_steps: 3, current_packaging_step:0, last_step_at:Time.now)
|
|
|
|
|
right.signing_state(44).should eq('SIGNING')
|
2015-01-09 17:23:20 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "signing timeout" do
|
2015-05-01 17:09:18 +00:00
|
|
|
right = FactoryGirl.create(:jam_track_right, signing_started_at_48: Time.now - 100, packaging_steps: 3, current_packaging_step:0, last_step_at:Time.now)
|
|
|
|
|
right.signing_state(48).should eq('SIGNING_TIMEOUT')
|
2015-01-09 17:23:20 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "queued" do
|
|
|
|
|
right = FactoryGirl.create(:jam_track_right, signing_queued_at: Time.now)
|
2015-05-01 17:09:18 +00:00
|
|
|
right.signing_state(44).should eq('QUEUED')
|
2015-01-09 17:23:20 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "signing timeout" do
|
|
|
|
|
right = FactoryGirl.create(:jam_track_right, signing_queued_at: Time.now - (APP_CONFIG.signing_job_queue_max_time + 1))
|
2015-05-01 17:09:18 +00:00
|
|
|
right.signing_state(44).should eq('QUEUED_TIMEOUT')
|
2015-01-09 17:23:20 +00:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2014-11-04 20:55:12 +00:00
|
|
|
end
|
|
|
|
|
|