test/storage_test.rb in thoughtbot-paperclip-2.3.0 vs test/storage_test.rb in thoughtbot-paperclip-2.3.1
- old
+ new
@@ -1,10 +1,18 @@
require 'test/helper'
+require 'aws/s3'
class StorageTest < Test::Unit::TestCase
+ def rails_env(env)
+ silence_warnings do
+ Object.const_set(:RAILS_ENV, env)
+ end
+ end
+
context "Parsing S3 credentials" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:bucket => "testing",
:s3_credentials => {:not => :important}
@dummy = Dummy.new
@@ -12,35 +20,36 @@
@current_env = RAILS_ENV
end
teardown do
- Object.const_set("RAILS_ENV", @current_env)
+ rails_env(@current_env)
end
should "get the correct credentials when RAILS_ENV is production" do
- Object.const_set('RAILS_ENV', "production")
+ rails_env("production")
assert_equal({:key => "12345"},
@avatar.parse_credentials('production' => {:key => '12345'},
:development => {:key => "54321"}))
end
should "get the correct credentials when RAILS_ENV is development" do
- Object.const_set('RAILS_ENV', "development")
+ rails_env("development")
assert_equal({:key => "54321"},
@avatar.parse_credentials('production' => {:key => '12345'},
:development => {:key => "54321"}))
end
should "return the argument if the key does not exist" do
- Object.const_set('RAILS_ENV', "not really an env")
+ rails_env("not really an env")
assert_equal({:test => "12345"}, @avatar.parse_credentials(:test => "12345"))
end
end
context "" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:s3_credentials => {},
:bucket => "bucket",
:path => ":attachment/:basename.:extension",
:url => ":s3_path_url"
@@ -52,10 +61,11 @@
assert_match %r{^http://s3.amazonaws.com/bucket/avatars/stringio.txt}, @dummy.avatar.url
end
end
context "" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:s3_credentials => {},
:bucket => "bucket",
:path => ":attachment/:basename.:extension",
:url => ":s3_domain_url"
@@ -67,10 +77,11 @@
assert_match %r{^http://bucket.s3.amazonaws.com/avatars/stringio.txt}, @dummy.avatar.url
end
end
context "" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:s3_credentials => {
:production => { :bucket => "prod_bucket" },
:development => { :bucket => "dev_bucket" }
},
@@ -86,28 +97,29 @@
end
end
context "Parsing S3 credentials with a bucket in them" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:s3_credentials => {
:production => { :bucket => "prod_bucket" },
:development => { :bucket => "dev_bucket" }
}
@dummy = Dummy.new
@old_env = RAILS_ENV
end
- teardown{ Object.const_set("RAILS_ENV", @old_env) }
+ teardown{ rails_env(@old_env) }
should "get the right bucket in production" do
- Object.const_set("RAILS_ENV", "production")
+ rails_env("production")
assert_equal "prod_bucket", @dummy.avatar.bucket_name
end
should "get the right bucket in development" do
- Object.const_set("RAILS_ENV", "development")
+ rails_env("development")
assert_equal "dev_bucket", @dummy.avatar.bucket_name
end
end
context "An attachment with S3 storage" do
@@ -144,35 +156,23 @@
assert_match %r{^http://s3\.amazonaws\.com/testing/avatars/original/5k\.png}, @dummy.avatar.url
end
context "and saved" do
setup do
- @s3_mock = stub
- @bucket_mock = stub
- RightAws::S3.expects(:new).with("12345", "54321", {}).returns(@s3_mock)
- @s3_mock.expects(:bucket).with("testing", true, "public-read").returns(@bucket_mock)
- @key_mock = stub
- @bucket_mock.expects(:key).returns(@key_mock)
- @key_mock.expects(:data=)
- @key_mock.expects(:put).with(nil, 'public-read', 'Content-type' => 'image/png')
+ AWS::S3::S3Object.stubs(:store).with(@dummy.avatar.path, anything, 'testing', :content_type => 'image/png', :access => :public_read)
@dummy.save
end
should "succeed" do
assert true
end
end
context "and remove" do
setup do
- @s3_mock = stub
- @bucket_mock = stub
- RightAws::S3.expects(:new).with("12345", "54321", {}).returns(@s3_mock)
- @s3_mock.expects(:bucket).with("testing", true, "public-read").returns(@bucket_mock)
- @key_mock = stub
- @bucket_mock.expects(:key).at_least(2).returns(@key_mock)
- @key_mock.expects(:delete)
+ AWS::S3::S3Object.stubs(:exists?).returns(true)
+ AWS::S3::S3Object.stubs(:delete)
@dummy.destroy_attached_files
end
should "succeed" do
assert true
@@ -181,10 +181,11 @@
end
end
context "An attachment with S3 storage and bucket defined as a Proc" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:bucket => lambda { |attachment| "bucket_#{attachment.instance.other}" },
:s3_credentials => {:not => :important}
end
@@ -194,10 +195,11 @@
end
end
context "An attachment with S3 storage and specific s3 headers set" do
setup do
+ AWS::S3::Base.stubs(:establish_connection!)
rebuild_model :storage => :s3,
:bucket => "testing",
:path => ":attachment/:style/:basename.:extension",
:s3_credentials => {
'access_key_id' => "12345",
@@ -215,21 +217,17 @@
teardown { @file.close }
context "and saved" do
setup do
- @s3_mock = stub
- @bucket_mock = stub
- RightAws::S3.expects(:new).with("12345", "54321", {}).returns(@s3_mock)
- @s3_mock.expects(:bucket).with("testing", true, "public-read").returns(@bucket_mock)
- @key_mock = stub
- @bucket_mock.expects(:key).returns(@key_mock)
- @key_mock.expects(:data=)
- @key_mock.expects(:put).with(nil,
- 'public-read',
- 'Content-type' => 'image/png',
- 'Cache-Control' => 'max-age=31557600')
+ AWS::S3::Base.stubs(:establish_connection!)
+ AWS::S3::S3Object.stubs(:store).with(@dummy.avatar.path,
+ anything,
+ 'testing',
+ :content_type => 'image/png',
+ :access => :public_read,
+ 'Cache-Control' => 'max-age=31557600')
@dummy.save
end
should "succeed" do
assert true
@@ -261,11 +259,11 @@
@dummy.avatar = @file
end
teardown { @file.close }
- should "still return a Tempfile when sent #to_io" do
- assert_equal Tempfile, @dummy.avatar.to_io.class
+ should "still return a Tempfile when sent #to_file" do
+ assert_equal Tempfile, @dummy.avatar.to_file.class
end
context "and saved" do
setup do
@dummy.save