pothoven-attachment_fu 3.2.6 → 3.2.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ * Apr 10, 2013 *
2
+ * Ruby 2 compatibility fix
3
+ * Removed some lingering occurrences of RAILS_ROOT
4
+ * clean up of gemspec file
5
+ * no longer package unnecessary files like the test files
6
+
1
7
  * Mar 12, 2013 *
2
8
  * Pull in changes from https://github.com/aalong/attachment_fu to use Ruby 1.9.2 Tempfile naming strategy to fix conflicts with Sprockets (see https://github.com/aalong/attachment_fu/commit/938ec3b8597fbf82b1de8c98de12c4688463450a)
3
9
 
@@ -9,15 +9,15 @@ module Technoweenie # :nodoc:
9
9
  #
10
10
  # == Requirements
11
11
  #
12
- # Requires the {Cloud Files Gem}[http://www.mosso.com/cloudfiles.jsp] by Rackspace
12
+ # Requires the {Cloud Files Gem}[http://www.mosso.com/cloudfiles.jsp] by Rackspace
13
13
  #
14
14
  # == Configuration
15
15
  #
16
- # Configuration is done via <tt>RAILS_ROOT/config/rackspace_cloudfiles.yml</tt> and is loaded according to the <tt>RAILS_ENV</tt>.
16
+ # Configuration is done via <tt>Rails.root.to_s/config/rackspace_cloudfiles.yml</tt> and is loaded according to the <tt>RAILS_ENV</tt>.
17
17
  # The minimum connection options that you must specify are a container name, your Mosso login name and your Mosso API key.
18
- # You can sign up for Cloud Files and get access keys by visiting https://www.mosso.com/buy.htm
18
+ # You can sign up for Cloud Files and get access keys by visiting https://www.mosso.com/buy.htm
19
19
  #
20
- # Example configuration (RAILS_ROOT/config/rackspace_cloudfiles.yml)
20
+ # Example configuration (Rails.root.to_s/config/rackspace_cloudfiles.yml)
21
21
  #
22
22
  # development:
23
23
  # container_name: appname_development
@@ -36,7 +36,7 @@ module Technoweenie # :nodoc:
36
36
  #
37
37
  # You can change the location of the config path by passing a full path to the :cloudfiles_config_path option.
38
38
  #
39
- # has_attachment :storage => :cloud_files, :cloudfiles_config_path => (RAILS_ROOT + '/config/mosso.yml')
39
+ # has_attachment :storage => :cloud_files, :cloudfiles_config_path => (Rails.root.to_s + '/config/mosso.yml')
40
40
  #
41
41
  # === Required configuration parameters
42
42
  #
@@ -116,7 +116,7 @@ module Technoweenie # :nodoc:
116
116
  end
117
117
 
118
118
  begin
119
- @@cloudfiles_config_path = base.attachment_options[:cloudfiles_config_path] || (RAILS_ROOT + '/config/rackspace_cloudfiles.yml')
119
+ @@cloudfiles_config_path = base.attachment_options[:cloudfiles_config_path] || (Rails.root.to_s + '/config/rackspace_cloudfiles.yml')
120
120
  @@cloudfiles_config = @@cloudfiles_config = YAML.load(ERB.new(File.read(@@cloudfiles_config_path)).result)[RAILS_ENV].symbolize_keys
121
121
  rescue
122
122
  #raise ConfigFileNotFoundError.new('File %s not found' % @@cloudfiles_config_path)
@@ -125,7 +125,7 @@ module Technoweenie # :nodoc:
125
125
  @@container_name = @@cloudfiles_config[:container_name]
126
126
  @@cf = CloudFiles::Connection.new(@@cloudfiles_config[:username], @@cloudfiles_config[:api_key])
127
127
  @@container = @@cf.container(@@container_name)
128
-
128
+
129
129
  base.before_update :rename_file
130
130
  end
131
131
 
@@ -9,12 +9,12 @@ module Technoweenie # :nodoc:
9
9
  def self.included(base) #:nodoc:
10
10
  base.before_update :rename_file
11
11
  end
12
-
12
+
13
13
  # Gets the full path to the filename in this format:
14
14
  #
15
15
  # # This assumes a model name like MyModel
16
- # # public/#{table_name} is the default filesystem path
17
- # RAILS_ROOT/public/my_models/5/blah.jpg
16
+ # # public/#{table_name} is the default filesystem path
17
+ # #{Rails.root}/public/my_models/5/blah.jpg
18
18
  #
19
19
  # Overwrite this method in your model to customize the filename.
20
20
  # The optional thumbnail argument will output the thumbnail's filename.
@@ -22,17 +22,17 @@ module Technoweenie # :nodoc:
22
22
  file_system_path = (thumbnail ? thumbnail_class : self).attachment_options[:path_prefix].to_s
23
23
  Rails.root.join( file_system_path, *partitioned_path(thumbnail_name_for(thumbnail))).to_s
24
24
  end
25
-
25
+
26
26
  # Used as the base path that #public_filename strips off full_filename to create the public path
27
27
  def base_path
28
28
  @base_path ||= Rails.root.join('public').to_s
29
29
  end
30
-
30
+
31
31
  # The attachment ID used in the full path of a file
32
32
  def attachment_path_id
33
33
  ((respond_to?(:parent_id) && parent_id) || id) || 0
34
34
  end
35
-
35
+
36
36
  # Partitions the given path into an array of path components.
37
37
  #
38
38
  # For example, given an <tt>*args</tt> of ["foo", "bar"], it will return
@@ -42,10 +42,10 @@ module Technoweenie # :nodoc:
42
42
  # hashing the string value of the id with SHA-512, and splitting the result
43
43
  # into 4 components. If the id a 128-bit UUID (as set by :uuid_primary_key => true)
44
44
  # then it will be split into 2 components.
45
- #
45
+ #
46
46
  # To turn this off entirely, set :partition => false.
47
47
  def partitioned_path(*args)
48
- if respond_to?(:attachment_options) && attachment_options[:partition] == false
48
+ if respond_to?(:attachment_options) && attachment_options[:partition] == false
49
49
  args
50
50
  elsif attachment_options[:uuid_primary_key]
51
51
  # Primary key is a 128-bit UUID in hex format. Split it into 2 components.
@@ -65,13 +65,13 @@ module Technoweenie # :nodoc:
65
65
  end
66
66
  end
67
67
  end
68
-
68
+
69
69
  # Gets the public path to the file
70
70
  # The optional thumbnail argument will output the thumbnail's filename.
71
71
  def public_filename(thumbnail = nil)
72
72
  full_filename(thumbnail).gsub %r(^#{Regexp.escape(base_path)}), ''
73
73
  end
74
-
74
+
75
75
  def filename=(value)
76
76
  @old_filename = full_filename unless filename.nil? || @old_filename
77
77
  write_attribute :filename, sanitize_filename(value)
@@ -104,7 +104,7 @@ module Technoweenie # :nodoc:
104
104
  @old_filename = nil
105
105
  true
106
106
  end
107
-
107
+
108
108
  # Saves the file to the file system
109
109
  def save_to_storage
110
110
  if save_attachment?
@@ -116,7 +116,7 @@ module Technoweenie # :nodoc:
116
116
  @old_filename = nil
117
117
  true
118
118
  end
119
-
119
+
120
120
  def current_data
121
121
  File.file?(full_filename) ? File.read(full_filename) : nil
122
122
  end
@@ -12,7 +12,7 @@ module Technoweenie # :nodoc:
12
12
  #
13
13
  # == Configuration
14
14
  #
15
- # Configuration is done via <tt>RAILS_ROOT/config/amazon_s3.yml</tt> and is loaded according to the <tt>RAILS_ENV</tt>.
15
+ # Configuration is done via <tt>#{Rails.root}/config/amazon_s3.yml</tt> and is loaded according to the <tt>RAILS_ENV</tt>.
16
16
  # The minimum connection options that you must specify are a bucket name, your access key id and your secret access key.
17
17
  # If you don't already have your access keys, all you need to sign up for the S3 service is an account at Amazon.
18
18
  # You can sign up for S3 and get access keys by visiting http://aws.amazon.com/s3.
@@ -20,7 +20,7 @@ module Technoweenie # :nodoc:
20
20
  # If you wish to use Amazon CloudFront to serve the files, you can also specify a distibution domain for the bucket.
21
21
  # To read more about CloudFront, visit http://aws.amazon.com/cloudfront
22
22
  #
23
- # Example configuration (RAILS_ROOT/config/amazon_s3.yml)
23
+ # Example configuration (#{Rails.root}/config/amazon_s3.yml)
24
24
  #
25
25
  # development:
26
26
  # bucket_name: appname_development
@@ -42,7 +42,7 @@ module Technoweenie # :nodoc:
42
42
  #
43
43
  # You can change the location of the config path by passing a full path to the :s3_config_path option.
44
44
  #
45
- # has_attachment :storage => :s3, :s3_config_path => (RAILS_ROOT + '/config/s3.yml')
45
+ # has_attachment :storage => :s3, :s3_config_path => (#{Rails.root} + '/config/s3.yml')
46
46
  #
47
47
  # === Required configuration parameters
48
48
  #
@@ -158,9 +158,9 @@ module Technoweenie # :nodoc:
158
158
  #
159
159
  # Niether <tt>base_path</tt> or <tt>full_filename</tt> include the bucket name as part of the path.
160
160
  # You can retrieve the bucket name using the <tt>bucket_name</tt> method.
161
- #
161
+ #
162
162
  # === Accessing CloudFront URLs
163
- #
163
+ #
164
164
  # You can get an object's CloudFront URL using the cloudfront_url accessor. Using the example from above:
165
165
  # @postcard.cloudfront_url # => http://XXXX.cloudfront.net/photos/1/mexico.jpg
166
166
  #
@@ -183,7 +183,7 @@ module Technoweenie # :nodoc:
183
183
  end
184
184
 
185
185
  begin
186
- @@s3_config_path = base.attachment_options[:s3_config_path] || (RAILS_ROOT + '/config/amazon_s3.yml')
186
+ @@s3_config_path = base.attachment_options[:s3_config_path] || (Rails.root.to_s + '/config/amazon_s3.yml')
187
187
  @@s3_config = @@s3_config = YAML.load(ERB.new(File.read(@@s3_config_path)).result)[RAILS_ENV].symbolize_keys
188
188
  #rescue
189
189
  # raise ConfigFileNotFoundError.new('File %s not found' % @@s3_config_path)
@@ -216,7 +216,7 @@ module Technoweenie # :nodoc:
216
216
  def self.port_string
217
217
  @port_string ||= (s3_config[:port].nil? || s3_config[:port] == (s3_config[:use_ssl] ? 443 : 80)) ? '' : ":#{s3_config[:port]}"
218
218
  end
219
-
219
+
220
220
  def self.distribution_domain
221
221
  @distribution_domain = s3_config[:distribution_domain]
222
222
  end
@@ -233,7 +233,7 @@ module Technoweenie # :nodoc:
233
233
  def s3_port_string
234
234
  Technoweenie::AttachmentFu::Backends::S3Backend.port_string
235
235
  end
236
-
236
+
237
237
  def cloudfront_distribution_domain
238
238
  Technoweenie::AttachmentFu::Backends::S3Backend.distribution_domain
239
239
  end
@@ -269,26 +269,26 @@ module Technoweenie # :nodoc:
269
269
  #
270
270
  # The resulting url is in the form: <tt>http(s)://:server/:bucket_name/:table_name/:id/:file</tt> where
271
271
  # the <tt>:server</tt> variable defaults to <tt>AWS::S3 URL::DEFAULT_HOST</tt> (s3.amazonaws.com) and can be
272
- # set using the configuration parameters in <tt>RAILS_ROOT/config/amazon_s3.yml</tt>.
272
+ # set using the configuration parameters in <tt>#{Rails.root}/config/amazon_s3.yml</tt>.
273
273
  #
274
274
  # The optional thumbnail argument will output the thumbnail's filename (if any).
275
275
  def s3_url(thumbnail = nil)
276
276
  File.join(s3_protocol + s3_hostname + s3_port_string, bucket_name, full_filename(thumbnail))
277
277
  end
278
-
278
+
279
279
  # All public objects are accessible via a GET request to CloudFront. You can generate a
280
280
  # url for an object using the cloudfront_url method.
281
281
  #
282
282
  # @photo.cloudfront_url
283
283
  #
284
284
  # The resulting url is in the form: <tt>http://:distribution_domain/:table_name/:id/:file</tt> using
285
- # the <tt>:distribution_domain</tt> variable set in the configuration parameters in <tt>RAILS_ROOT/config/amazon_s3.yml</tt>.
285
+ # the <tt>:distribution_domain</tt> variable set in the configuration parameters in <tt>#{Rails.root}/config/amazon_s3.yml</tt>.
286
286
  #
287
287
  # The optional thumbnail argument will output the thumbnail's filename (if any).
288
288
  def cloudfront_url(thumbnail = nil)
289
289
  "http://" + cloudfront_distribution_domain + "/" + full_filename(thumbnail)
290
290
  end
291
-
291
+
292
292
  def public_filename(*args)
293
293
  if attachment_options[:cloudfront]
294
294
  cloudfront_url(args)
@@ -347,7 +347,7 @@ module Technoweenie # :nodoc:
347
347
  def s3_port_string
348
348
  Technoweenie::AttachmentFu::Backends::S3Backend.port_string
349
349
  end
350
-
350
+
351
351
  def cloudfront_distribution_domain
352
352
  Technoweenie::AttachmentFu::Backends::S3Backend.distribution_domain
353
353
  end
@@ -474,7 +474,7 @@ module Technoweenie # :nodoc:
474
474
  # Cleans up after processing. Thumbnails are created, the attachment is stored to the backend, and the temp_paths are cleared.
475
475
  def after_process_attachment
476
476
  if @saved_attachment
477
- if respond_to?(:process_attachment_with_processing) && thumbnailable? && !attachment_options[:thumbnails].blank? && parent_id.nil?
477
+ if respond_to?(:process_attachment_with_processing, true) && thumbnailable? && !attachment_options[:thumbnails].blank? && parent_id.nil?
478
478
  temp_file = temp_path || create_temp_file
479
479
  attachment_options[:thumbnails].each { |suffix, size|
480
480
  if size.is_a?(Symbol)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pothoven-attachment_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.6
4
+ version: 3.2.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-12 00:00:00.000000000 Z
13
+ date: 2013-04-10 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: This is a fork of Rick Olson’s attachment_fu adding Ruby 1.9 and Rails
16
16
  3.2 support as well as some other enhancements.
@@ -20,54 +20,30 @@ extensions: []
20
20
  extra_rdoc_files:
21
21
  - README
22
22
  files:
23
- - CHANGELOG
24
- - LICENSE
25
- - README
26
- - Rakefile
27
- - install.rb
28
- - amazon_s3.yml.tpl
29
- - rackspace_cloudfiles.yml.tpl
30
23
  - lib/geometry.rb
31
24
  - lib/pothoven-attachment_fu.rb
32
- - lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb
33
- - lib/technoweenie/attachment_fu/backends/db_file_backend.rb
34
- - lib/technoweenie/attachment_fu/backends/file_system_backend.rb
35
- - lib/technoweenie/attachment_fu/backends/s3_backend.rb
36
- - lib/technoweenie/attachment_fu/processors/core_image_processor.rb
25
+ - lib/technoweenie/attachment_fu.rb
37
26
  - lib/technoweenie/attachment_fu/processors/gd2_processor.rb
38
- - lib/technoweenie/attachment_fu/processors/image_science_processor.rb
39
27
  - lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb
40
28
  - lib/technoweenie/attachment_fu/processors/rmagick_processor.rb
41
- - lib/technoweenie/attachment_fu.rb
42
- - test/base_attachment_tests.rb
43
- - test/basic_test.rb
44
- - test/database.yml
45
- - test/extra_attachment_test.rb
46
- - test/geometry_test.rb
47
- - test/schema.rb
48
- - test/test_helper.rb
49
- - test/validation_test.rb
50
- - test/backends/db_file_test.rb
51
- - test/backends/file_system_test.rb
52
- - test/backends/remote/cloudfiles_test.rb
53
- - test/backends/remote/s3_test.rb
54
- - test/fixtures/attachment.rb
55
- - test/fixtures/files/foo.txt
56
- - test/fixtures/files/rails.jpg
57
- - test/fixtures/files/rails.png
58
- - test/fixtures/files/fake/rails.png
59
- - test/processors/core_image_test.rb
60
- - test/processors/gd2_test.rb
61
- - test/processors/image_science_test.rb
62
- - test/processors/mini_magick_test.rb
63
- - test/processors/rmagick_test.rb
29
+ - lib/technoweenie/attachment_fu/processors/core_image_processor.rb
30
+ - lib/technoweenie/attachment_fu/processors/image_science_processor.rb
31
+ - lib/technoweenie/attachment_fu/backends/s3_backend.rb
32
+ - lib/technoweenie/attachment_fu/backends/file_system_backend.rb
33
+ - lib/technoweenie/attachment_fu/backends/db_file_backend.rb
34
+ - lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb
64
35
  - vendor/red_artisan/core_image/processor.rb
65
36
  - vendor/red_artisan/core_image/filters/color.rb
66
- - vendor/red_artisan/core_image/filters/effects.rb
67
- - vendor/red_artisan/core_image/filters/perspective.rb
68
37
  - vendor/red_artisan/core_image/filters/quality.rb
69
- - vendor/red_artisan/core_image/filters/scale.rb
70
38
  - vendor/red_artisan/core_image/filters/watermark.rb
39
+ - vendor/red_artisan/core_image/filters/scale.rb
40
+ - vendor/red_artisan/core_image/filters/effects.rb
41
+ - vendor/red_artisan/core_image/filters/perspective.rb
42
+ - CHANGELOG
43
+ - LICENSE
44
+ - README
45
+ - amazon_s3.yml.tpl
46
+ - rackspace_cloudfiles.yml.tpl
71
47
  homepage: http://github.com/pothoven/attachment_fu
72
48
  licenses: []
73
49
  post_install_message:
data/Rakefile DELETED
@@ -1,22 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- desc 'Default: run unit tests.'
6
- task :default => :test
7
-
8
- desc 'Test the attachment_fu plugin.'
9
- Rake::TestTask.new(:test) do |t|
10
- t.libs << 'lib'
11
- t.pattern = 'test/**/*_test.rb'
12
- t.verbose = true
13
- end
14
-
15
- desc 'Generate documentation for the attachment_fu plugin.'
16
- Rake::RDocTask.new(:rdoc) do |rdoc|
17
- rdoc.rdoc_dir = 'rdoc'
18
- rdoc.title = 'ActsAsAttachment'
19
- rdoc.options << '--line-numbers --inline-source'
20
- rdoc.rdoc_files.include('README')
21
- rdoc.rdoc_files.include('lib/**/*.rb')
22
- end
data/install.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'fileutils'
2
-
3
- s3_config = File.dirname(__FILE__) + '/../../../config/amazon_s3.yml'
4
- FileUtils.cp File.dirname(__FILE__) + '/amazon_s3.yml.tpl', s3_config unless File.exist?(s3_config)
5
- cloudfiles_config = File.dirname(__FILE__) + '/../../../config/rackspace_cloudfiles.yml'
6
- FileUtils.cp File.dirname(__FILE__) + '/rackspace_cloudfiles.yml.tpl', cloudfiles_config unless File.exist?(cloudfiles_config)
7
- puts IO.read(File.join(File.dirname(__FILE__), 'README'))
@@ -1,16 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
-
3
- class DbFileTest < Test::Unit::TestCase
4
- include BaseAttachmentTests
5
- attachment_model Attachment
6
-
7
- def test_should_call_after_attachment_saved(klass = Attachment)
8
- attachment_model.saves = 0
9
- assert_created do
10
- upload_file :filename => '/files/rails.png'
11
- end
12
- assert_equal 1, attachment_model.saves
13
- end
14
-
15
- test_against_subclass :test_should_call_after_attachment_saved, Attachment
16
- end
@@ -1,143 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
- require 'digest/sha2'
3
-
4
- class FileSystemTest < Test::Unit::TestCase
5
- include BaseAttachmentTests
6
- attachment_model FileAttachment
7
-
8
- def test_filesystem_size_for_file_attachment(klass = FileAttachment)
9
- attachment_model klass
10
- assert_created 1 do
11
- attachment = upload_file :filename => '/files/rails.png'
12
- assert_equal attachment.size, File.open(attachment.full_filename).stat.size
13
- end
14
- end
15
-
16
- test_against_subclass :test_filesystem_size_for_file_attachment, FileAttachment
17
-
18
- def test_should_not_overwrite_file_attachment(klass = FileAttachment)
19
- attachment_model klass
20
- assert_created 2 do
21
- real = upload_file :filename => '/files/rails.png'
22
- assert_valid real
23
- assert !real.new_record?, real.errors.full_messages.join("\n")
24
- assert !real.size.zero?
25
-
26
- fake = upload_file :filename => '/files/fake/rails.png'
27
- assert_valid fake
28
- assert !fake.size.zero?
29
-
30
- assert_not_equal File.open(real.full_filename).stat.size, File.open(fake.full_filename).stat.size
31
- end
32
- end
33
-
34
- test_against_subclass :test_should_not_overwrite_file_attachment, FileAttachment
35
-
36
- def test_should_store_file_attachment_in_filesystem(klass = FileAttachment)
37
- attachment_model klass
38
- attachment = nil
39
- assert_created do
40
- attachment = upload_file :filename => '/files/rails.png'
41
- assert_valid attachment
42
- assert File.exists?(attachment.full_filename), "#{attachment.full_filename} does not exist"
43
- end
44
- attachment
45
- end
46
-
47
- test_against_subclass :test_should_store_file_attachment_in_filesystem, FileAttachment
48
-
49
- def test_should_delete_old_file_when_updating(klass = FileAttachment)
50
- attachment_model klass
51
- attachment = upload_file :filename => '/files/rails.png'
52
- old_filename = attachment.full_filename
53
- assert_not_created do
54
- use_temp_file 'files/rails.png' do |file|
55
- attachment.filename = 'rails2.png'
56
- attachment.temp_paths.unshift File.join(FIXTURE_PATH, file)
57
- attachment.save!
58
- assert File.exists?(attachment.full_filename), "#{attachment.full_filename} does not exist"
59
- assert !File.exists?(old_filename), "#{old_filename} still exists"
60
- end
61
- end
62
- end
63
-
64
- test_against_subclass :test_should_delete_old_file_when_updating, FileAttachment
65
-
66
- def test_should_delete_old_file_when_renaming(klass = FileAttachment)
67
- attachment_model klass
68
- attachment = upload_file :filename => '/files/rails.png'
69
- old_filename = attachment.full_filename
70
- assert_not_created do
71
- attachment.filename = 'rails2.png'
72
- attachment.save
73
- assert File.exists?(attachment.full_filename), "#{attachment.full_filename} does not exist"
74
- assert !File.exists?(old_filename), "#{old_filename} still exists"
75
- assert !attachment.reload.size.zero?
76
- assert_equal 'rails2.png', attachment.filename
77
- end
78
- end
79
-
80
- test_against_subclass :test_should_delete_old_file_when_renaming, FileAttachment
81
-
82
- def test_path_partitioning_works_on_integer_id(klass = FileAttachment)
83
- attachment_model klass
84
-
85
- # Create a random attachment object, doesn't matter what.
86
- attachment = upload_file :filename => '/files/rails.png'
87
- old_id = attachment.id
88
- attachment.id = 1
89
-
90
- begin
91
- assert_equal ["0000", "0001", "bar.txt"], attachment.send(:partitioned_path, "bar.txt")
92
- ensure
93
- attachment.id = old_id
94
- end
95
- end
96
-
97
- test_against_subclass :test_path_partitioning_works_on_integer_id, FileAttachment
98
-
99
- def test_path_partitioning_with_string_id_works_by_generating_hash(klass = FileAttachmentWithStringId)
100
- attachment_model klass
101
-
102
- # Create a random attachment object, doesn't matter what.
103
- attachment = upload_file :filename => '/files/rails.png'
104
- old_id = attachment.id
105
- attachment.id = "hello world some long string"
106
- hash = Digest::SHA512.hexdigest("hello world some long string")
107
-
108
- begin
109
- assert_equal [
110
- hash[0..31],
111
- hash[32..63],
112
- hash[64..95],
113
- hash[96..127],
114
- "bar.txt"
115
- ], attachment.send(:partitioned_path, "bar.txt")
116
- ensure
117
- attachment.id = old_id
118
- end
119
- end
120
-
121
- test_against_subclass :test_path_partitioning_with_string_id_works_by_generating_hash, FileAttachmentWithStringId
122
-
123
- def test_path_partition_string_id_hashing_is_turned_off_if_id_is_uuid(klass = FileAttachmentWithUuid)
124
- attachment_model klass
125
-
126
- # Create a random attachment object, doesn't matter what.
127
- attachment = upload_file :filename => '/files/rails.png'
128
- old_id = attachment.id
129
- attachment.id = "0c0743b698483569dc65909a8cdb3bf9"
130
-
131
- begin
132
- assert_equal [
133
- "0c0743b698483569",
134
- "dc65909a8cdb3bf9",
135
- "bar.txt"
136
- ], attachment.send(:partitioned_path, "bar.txt")
137
- ensure
138
- attachment.id = old_id
139
- end
140
- end
141
-
142
- test_against_subclass :test_path_partition_string_id_hashing_is_turned_off_if_id_is_uuid, FileAttachmentWithUuid
143
- end
@@ -1,102 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper'))
2
- require 'net/http'
3
-
4
- class CloudfilesTest < Test::Unit::TestCase
5
- def self.test_CloudFiles?
6
- true unless ENV["TEST_CLOUDFILES"] == "false"
7
- end
8
-
9
- if test_CloudFiles? && File.exist?(File.join(File.dirname(__FILE__), '../../rackspace_cloudfiles.yml'))
10
- include BaseAttachmentTests
11
- attachment_model CloudFilesAttachment
12
-
13
- def test_should_create_correct_container_name(klass = CloudFilesAttachment)
14
- attachment_model klass
15
- attachment = upload_file :filename => '/files/rails.png'
16
- assert_equal attachment.cloudfiles_config[:container_name], attachment.container_name
17
- end
18
-
19
- test_against_subclass :test_should_create_correct_container_name, CloudFilesAttachment
20
-
21
- def test_should_create_default_path_prefix(klass = CloudFilesAttachment)
22
- attachment_model klass
23
- attachment = upload_file :filename => '/files/rails.png'
24
- assert_equal File.join(attachment_model.table_name, attachment.attachment_path_id), attachment.base_path
25
- end
26
-
27
- test_against_subclass :test_should_create_default_path_prefix, CloudFilesAttachment
28
-
29
- def test_should_create_custom_path_prefix(klass = CloudFilesWithPathPrefixAttachment)
30
- attachment_model klass
31
- attachment = upload_file :filename => '/files/rails.png'
32
- assert_equal File.join('some/custom/path/prefix', attachment.attachment_path_id), attachment.base_path
33
- end
34
-
35
- test_against_subclass :test_should_create_custom_path_prefix, CloudFilesWithPathPrefixAttachment
36
-
37
-
38
- def test_should_create_valid_url(klass = CloudFilesAttachment)
39
- attachment_model klass
40
- attachment = upload_file :filename => '/files/rails.png'
41
- assert_match(%r!http://cdn.cloudfiles.mosso.com/(.*?)/cloud_files_attachments/1/rails.png!, attachment.cloudfiles_url)
42
- end
43
-
44
- test_against_subclass :test_should_create_valid_url, CloudFilesAttachment
45
-
46
- def test_should_save_attachment(klass = CloudFilesAttachment)
47
- attachment_model klass
48
- assert_created do
49
- attachment = upload_file :filename => '/files/rails.png'
50
- assert_valid attachment
51
- assert attachment.image?
52
- assert !attachment.size.zero?
53
- assert_kind_of Net::HTTPOK, http_response_for(attachment.cloudfiles_url)
54
- end
55
- end
56
-
57
- test_against_subclass :test_should_save_attachment, CloudFilesAttachment
58
-
59
- def test_should_delete_attachment_from_cloud_files_when_attachment_record_destroyed(klass = CloudFilesAttachment)
60
- attachment_model klass
61
- attachment = upload_file :filename => '/files/rails.png'
62
-
63
- urls = [attachment.cloudfiles_url] + attachment.thumbnails.collect(&:cloudfiles_url)
64
-
65
- urls.each {|url| assert_kind_of Net::HTTPOK, http_response_for(url) }
66
- attachment.destroy
67
- urls.each do |url|
68
- begin
69
- http_response_for(url)
70
- rescue Net::HTTPForbidden, Net::HTTPNotFound
71
- nil
72
- end
73
- end
74
- end
75
-
76
- test_against_subclass :test_should_delete_attachment_from_cloud_files_when_attachment_record_destroyed, CloudFilesAttachment
77
-
78
-
79
-
80
- protected
81
- def http_response_for(url)
82
- url = URI.parse(url)
83
- Net::HTTP.start(url.host, url.port) {|http| http.request_head(url.path) }
84
- end
85
-
86
- def s3_protocol
87
- Technoweenie::AttachmentFu::Backends::S3Backend.protocol
88
- end
89
-
90
- def s3_hostname
91
- Technoweenie::AttachmentFu::Backends::S3Backend.hostname
92
- end
93
-
94
- def s3_port_string
95
- Technoweenie::AttachmentFu::Backends::S3Backend.port_string
96
- end
97
- else
98
- def test_flunk_s3
99
- puts "s3 config file not loaded, tests not running"
100
- end
101
- end
102
- end