2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-07-31 23:26:34 +02:00
require 'file_store/local_store'
2013-11-05 19:04:47 +01:00
describe FileStore :: LocalStore do
2013-07-31 23:26:34 +02:00
2013-11-05 19:04:47 +01:00
let ( :store ) { FileStore :: LocalStore . new }
2013-07-31 23:26:34 +02:00
2015-05-28 01:03:24 +02:00
let ( :upload ) { Fabricate ( :upload ) }
2014-07-14 17:34:23 +02:00
let ( :uploaded_file ) { file_from_fixtures ( " logo.png " ) }
2013-07-31 23:26:34 +02:00
2015-05-28 01:03:24 +02:00
let ( :optimized_image ) { Fabricate ( :optimized_image ) }
2014-09-29 18:31:53 +02:00
2013-11-05 19:04:47 +01:00
describe " .store_upload " do
2013-07-31 23:26:34 +02:00
it " returns a relative url " do
store . expects ( :copy_file )
2015-05-28 01:38:24 +02:00
expect ( store . store_upload ( uploaded_file , upload ) ) . to match ( / \/ uploads \/ default \/ original \/ .+e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98 \ .png / )
2013-07-31 23:26:34 +02:00
end
end
2013-11-05 19:04:47 +01:00
describe " .store_optimized_image " do
2013-07-31 23:26:34 +02:00
it " returns a relative url " do
store . expects ( :copy_file )
2015-05-28 01:38:24 +02:00
expect ( store . store_optimized_image ( { } , optimized_image ) ) . to match ( / \/ uploads \/ default \/ optimized \/ .+e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98_ #{ OptimizedImage :: VERSION } _100x200 \ .png / )
2013-07-31 23:26:34 +02:00
end
end
2013-11-05 19:04:47 +01:00
describe " .remove_upload " do
2013-07-31 23:26:34 +02:00
2013-08-13 22:08:29 +02:00
it " does not delete non uploaded " do
2013-11-27 22:01:41 +01:00
FileUtils . expects ( :mkdir_p ) . never
2013-08-13 22:08:29 +02:00
upload = Upload . new
upload . stubs ( :url ) . returns ( " /path/to/file " )
store . remove_upload ( upload )
2013-07-31 23:26:34 +02:00
end
2013-11-27 22:01:41 +01:00
it " moves the file to the tombstone " do
FileUtils . expects ( :mkdir_p )
FileUtils . expects ( :move )
2013-08-13 22:08:29 +02:00
upload = Upload . new
upload . stubs ( :url ) . returns ( " /uploads/default/42/253dc8edf9d4ada1.png " )
store . remove_upload ( upload )
2013-07-31 23:26:34 +02:00
end
end
2013-11-05 19:04:47 +01:00
describe " .remove_optimized_image " do
2013-08-13 22:08:29 +02:00
2013-11-27 22:01:41 +01:00
it " moves the file to the tombstone " do
FileUtils . expects ( :mkdir_p )
FileUtils . expects ( :move )
2013-11-05 19:04:47 +01:00
oi = OptimizedImage . new
oi . stubs ( :url ) . returns ( " /uploads/default/_optimized/42/253dc8edf9d4ada1.png " )
2013-11-27 22:01:41 +01:00
store . remove_optimized_image ( upload )
2013-11-05 19:04:47 +01:00
end
2013-08-13 22:08:29 +02:00
end
2013-11-05 19:04:47 +01:00
describe " .has_been_uploaded? " do
2013-08-13 22:08:29 +02:00
2013-11-05 19:04:47 +01:00
it " identifies relatives urls " do
2015-01-09 13:34:37 -03:00
expect ( store . has_been_uploaded? ( " /uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( true )
2013-11-05 19:04:47 +01:00
end
2013-07-31 23:26:34 +02:00
2013-11-05 19:04:47 +01:00
it " identifies local urls " do
Discourse . stubs ( :base_url_no_prefix ) . returns ( " http://discuss.site.com " )
2015-01-09 13:34:37 -03:00
expect ( store . has_been_uploaded? ( " http://discuss.site.com/uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( true )
expect ( store . has_been_uploaded? ( " //discuss.site.com/uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( true )
2013-07-31 23:26:34 +02:00
end
it " identifies local urls when using a CDN " do
Rails . configuration . action_controller . stubs ( :asset_host ) . returns ( " http://my.cdn.com " )
2015-01-09 13:34:37 -03:00
expect ( store . has_been_uploaded? ( " http://my.cdn.com/uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( true )
expect ( store . has_been_uploaded? ( " //my.cdn.com/uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( true )
2013-07-31 23:26:34 +02:00
end
it " does not match dummy urls " do
2015-01-09 13:34:37 -03:00
expect ( store . has_been_uploaded? ( " http://domain.com/uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( false )
expect ( store . has_been_uploaded? ( " //domain.com/uploads/default/42/0123456789ABCDEF.jpg " ) ) . to eq ( false )
2013-11-05 19:04:47 +01:00
end
end
describe " .absolute_base_url " do
it " is present " do
2015-01-09 13:34:37 -03:00
expect ( store . absolute_base_url ) . to eq ( " http://test.localhost/uploads/default " )
2013-11-05 19:04:47 +01:00
end
end
describe " .relative_base_url " do
it " is present " do
2015-01-09 13:34:37 -03:00
expect ( store . relative_base_url ) . to eq ( " /uploads/default " )
2013-11-05 19:04:47 +01:00
end
end
it " is internal " do
2015-01-09 13:34:37 -03:00
expect ( store . internal? ) . to eq ( true )
expect ( store . external? ) . to eq ( false )
2013-11-05 19:04:47 +01:00
end
2013-07-31 23:26:34 +02:00
end