jam-cloud/ruby/spec/jam_ruby/models/jam_track_right_spec.rb

128 lines
4.1 KiB
Ruby

require 'spec_helper'
describe JamTrackRight do
include UsesTempFiles
include CarrierWave::Test::Matchers
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
it "lists" do
jam_track_right = FactoryGirl.create(:jam_track_right)
jam_tracks = JamTrack.list_downloads(jam_track_right.user)
jam_tracks.should have_key('downloads')
jam_tracks.should have_key('next')
jam_tracks['downloads'].should have(1).items
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
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
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)
}.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
uploader = JamTrackTrackUploader.new(jam_track_track, :url)
uploader.store!(File.open(ogg_path, 'rb'))
jam_track_track.save!
jam_track_track[:url].should == jam_track_track.store_dir + '/' + jam_track_track.filename
# verify it's on S3
s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key)
s3.exists?(jam_track_track[:url]).should be_true
s3.length(jam_track_track[:url]).should == File.size?(ogg_path)
jam_track_right = JamTrackRight.create(:user=>user, :jam_track=>jam_track)
#expect {
JamRuby::JamTracksManager.save_jam_track_jkz(user, jam_track)
#}.to_not raise_error(ArgumentError)
jam_track_right.reload
jam_track_right[:url].should == jam_track_right.store_dir + '/' + jam_track_right.filename
# verify it's on S3
url = jam_track_right[:url]
s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key)
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
end
end
describe "list_keys" do
let(:user) {FactoryGirl.create(:user)}
it "empty" do
JamTrackRight.list_keys(user, nil).should eq([])
end
it "bogus key" do
JamTrackRight.list_keys(user, ['a']).should eq([])
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])
keys.length.should == 0
end
it "valid track with rights to it by querying user" do
jam_track_right = FactoryGirl.create(:jam_track_right, private_key: 'keyabc')
keys = JamTrackRight.list_keys(jam_track_right.user, [jam_track_right.jam_track.id])
keys.length.should == 1
keys[0].id.should == jam_track_right.jam_track.id
keys[0]['private_key'].should eq('keyabc')
end
end
end