test/models/storage/test_file.rb in fog-azure-rm-0.1.1 vs test/models/storage/test_file.rb in fog-azure-rm-0.1.2
- old
+ new
@@ -1,294 +1,294 @@
-require File.expand_path '../../test_helper', __dir__
-
-# Test class for Storage Container Model
-class TestFile < Minitest::Test
- def setup
- @service = Fog::Storage::AzureRM.new(storage_account_credentials)
- @directory = directory(@service)
- @file = file(@service)
- @raw_cloud_blob = storage_blob
-
- @mocked_response = mocked_storage_http_error
- @blob = ApiStub::Models::Storage::File.blob
- @metadata = ApiStub::Models::Storage::File.blob_metadata
- @blob_list = ApiStub::Models::Storage::File.blob_list
- @blob_https_url = ApiStub::Models::Storage::File.blob_https_url
- end
-
- def test_model_methods
- methods = [
- :save,
- :body,
- :body=,
- :copy,
- :copy_from_uri,
- :destroy,
- :public?,
- :public_url,
- :url
- ]
- methods.each do |method|
- assert_respond_to @file, method
- end
- end
-
- def test_model_attributes
- attributes = [
- :key,
- :body,
- :directory,
- :accept_ranges,
- :content_length,
- :content_type,
- :content_md5,
- :content_encoding,
- :content_language,
- :cache_control,
- :content_disposition,
- :copy_completion_time,
- :copy_status,
- :copy_status_description,
- :copy_id,
- :copy_progress,
- :copy_source,
- :etag,
- :last_modified,
- :lease_duration,
- :lease_state,
- :lease_status,
- :sequence_number,
- :blob_type,
- :metadata
- ]
- attributes.each do |attribute|
- assert_respond_to @file, attribute
- end
- end
-
- def test_save_method_with_small_block_blob_success
- @file.body = 'd' * 1025 # SINGLE_BLOB_PUT_THRESHOLD is 32 * 1024 * 1024
-
- @service.stub :create_block_blob, @raw_cloud_blob do
- assert @file.save
- end
- end
-
- def test_save_method_with_large_block_blob_success
- @file.body = 'd' * (32 * 1024 * 1024 + 1) # SINGLE_BLOB_PUT_THRESHOLD is 32 * 1024 * 1024
-
- @service.stub :multipart_save_block_blob, true do
- @service.stub :get_blob_properties, @raw_cloud_blob do
- assert @file.save
- end
- end
- end
-
- def test_save_method_with_page_blob_success
- options = { blob_type: 'PageBlob' }
- @file.metadata = @metadata
- @file.body = 'd' * 5 * 1024 * 1024 # MAXIMUM_CHUNK_SIZE is 4 * 1024 * 1024
-
- @service.stub :save_page_blob, true do
- @service.stub :get_blob_properties, @raw_cloud_blob do
- assert @file.save(options)
- end
- end
- end
-
- def test_save_method_with_not_update_body_success
- options = { update_body: false }
- @file.metadata = @metadata
-
- @service.stub :put_blob_metadata, true do
- @service.stub :put_blob_properties, true do
- @service.stub :get_blob_properties, @raw_cloud_blob do
- assert @file.save(options)
- end
- end
- end
- end
-
- def test_save_method_without_directory_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:directory)
- @file.save
- end
- end
-
- def test_save_method_without_key_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:key)
- @file.save
- end
- end
-
- def test_save_method_create_without_body_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:body)
- @file.save
- end
- end
-
- def test_get_body_method_local_success
- @file.attributes[:body] = 'body'
- assert_equal 'body', @file.body
-
- @file.attributes[:body] = nil
- @file.attributes[:last_modified] = nil
- assert_equal '', @file.body
- end
-
- def test_get_body_method_remote_success
- @file.attributes[:body] = nil
- remote_file = @file.dup
- body_content = 'data'
- @file.collection.stub :get, remote_file do
- remote_file.stub :body, body_content do
- body = @file.body
- assert_equal body_content, body
- assert_equal body_content, @file.attributes[:body]
- end
- end
- end
-
- def test_get_body_method_remote_not_found_success
- @file.attributes[:body] = nil
- @file.collection.stub :get, nil do
- body = @file.body
- assert_equal '', body
- assert_equal '', @file.attributes[:body]
- end
- end
-
- def test_set_body_method_success
- @file.body = 'new_body'
- assert_equal 'new_body', @file.attributes[:body]
- end
-
- def test_copy_method_success
- copy_id = @raw_cloud_blob.properties[:copy_id]
- copy_status = 'pending'
-
- @service.stub :get_blob_properties, @raw_cloud_blob do
- @service.stub :copy_blob, [copy_id, copy_status] do
- @service.stub :wait_blob_copy_operation_to_finish, true do
- target_file = @file.copy('target_container', 'target_blob')
- assert_instance_of Fog::Storage::AzureRM::File, target_file
- end
- end
- end
- end
-
- def test_copy_from_uri_method_success
- copy_id = @raw_cloud_blob.properties[:copy_id]
- copy_status = 'pending'
-
- @service.stub :get_blob_properties, @raw_cloud_blob do
- @service.stub :copy_blob_from_uri, [copy_id, copy_status] do
- @service.stub :wait_blob_copy_operation_to_finish, true do
- assert @file.copy_from_uri('source_uri')
- end
- end
- end
- end
-
- def test_copy_from_uri_method_without_directory_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:directory)
- @file.copy_from_uri('source_uri')
- end
- end
-
- def test_copy_from_uri_method_without_key_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:key)
- @file.copy_from_uri('source_uri')
- end
- end
-
- def test_destroy_method_success
- @service.stub :delete_blob, true do
- assert @file.destroy
- assert @file.attributes[:body].nil?
- end
- end
-
- def test_destroy_method_without_directory_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:directory)
- @file.destroy
- end
- end
-
- def test_destroy_method_without_key_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:key)
- @file.destroy
- end
- end
-
- def test_public_method_success
- @file.directory.acl = 'container'
- assert @file.public?
-
- @file.directory.acl = 'blob'
- assert @file.public?
-
- @file.directory.acl = nil
- assert !@file.public?
- end
-
- def test_public_method_without_directory_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:directory)
- @file.public?
- end
- end
-
- def test_public_url_method_success
- @file.stub :public?, false do
- assert @file.public_url.nil?
- end
-
- @file.stub :public?, true do
- @service.stub :get_blob_url, @blob_https_url do
- assert @file.public_url, @blob_https_url
- end
- end
-
- http_url = @blob_https_url.gsub('https:', 'http:')
- options = { scheme: 'https' }
- @file.stub :public?, true do
- @service.stub :get_blob_url, http_url do
- assert @file.public_url(options), http_url
- end
- end
- end
-
- def test_public_url_method_without_directory_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:directory)
- @file.public_url
- end
- end
-
- def test_public_url_method_without_key_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:key)
- @file.public_url
- end
- end
-
- def test_url_method_success
- @file.collection.stub :get_url, @blob_https_url do
- assert @file.url(Time.now + 3600), @blob_https_url
- end
- end
-
- def test_url_method_without_key_exception
- assert_raises(ArgumentError) do
- @file.attributes.delete(:key)
- @file.url(Time.now + 3600)
- end
- end
-end
+require File.expand_path '../../test_helper', __dir__
+
+# Test class for Storage Container Model
+class TestFile < Minitest::Test
+ def setup
+ @service = Fog::Storage::AzureRM.new(storage_account_credentials)
+ @directory = directory(@service)
+ @file = file(@service)
+ @raw_cloud_blob = storage_blob
+
+ @mocked_response = mocked_storage_http_error
+ @blob = ApiStub::Models::Storage::File.blob
+ @metadata = ApiStub::Models::Storage::File.blob_metadata
+ @blob_list = ApiStub::Models::Storage::File.blob_list
+ @blob_https_url = ApiStub::Models::Storage::File.blob_https_url
+ end
+
+ def test_model_methods
+ methods = [
+ :save,
+ :body,
+ :body=,
+ :copy,
+ :copy_from_uri,
+ :destroy,
+ :public?,
+ :public_url,
+ :url
+ ]
+ methods.each do |method|
+ assert_respond_to @file, method
+ end
+ end
+
+ def test_model_attributes
+ attributes = [
+ :key,
+ :body,
+ :directory,
+ :accept_ranges,
+ :content_length,
+ :content_type,
+ :content_md5,
+ :content_encoding,
+ :content_language,
+ :cache_control,
+ :content_disposition,
+ :copy_completion_time,
+ :copy_status,
+ :copy_status_description,
+ :copy_id,
+ :copy_progress,
+ :copy_source,
+ :etag,
+ :last_modified,
+ :lease_duration,
+ :lease_state,
+ :lease_status,
+ :sequence_number,
+ :blob_type,
+ :metadata
+ ]
+ attributes.each do |attribute|
+ assert_respond_to @file, attribute
+ end
+ end
+
+ def test_save_method_with_small_block_blob_success
+ @file.body = 'd' * 1025 # SINGLE_BLOB_PUT_THRESHOLD is 32 * 1024 * 1024
+
+ @service.stub :create_block_blob, @raw_cloud_blob do
+ assert @file.save
+ end
+ end
+
+ def test_save_method_with_large_block_blob_success
+ @file.body = 'd' * (32 * 1024 * 1024 + 1) # SINGLE_BLOB_PUT_THRESHOLD is 32 * 1024 * 1024
+
+ @service.stub :multipart_save_block_blob, true do
+ @service.stub :get_blob_properties, @raw_cloud_blob do
+ assert @file.save
+ end
+ end
+ end
+
+ def test_save_method_with_page_blob_success
+ options = { blob_type: 'PageBlob' }
+ @file.metadata = @metadata
+ @file.body = 'd' * 5 * 1024 * 1024 # MAXIMUM_CHUNK_SIZE is 4 * 1024 * 1024
+
+ @service.stub :save_page_blob, true do
+ @service.stub :get_blob_properties, @raw_cloud_blob do
+ assert @file.save(options)
+ end
+ end
+ end
+
+ def test_save_method_with_not_update_body_success
+ options = { update_body: false }
+ @file.metadata = @metadata
+
+ @service.stub :put_blob_metadata, true do
+ @service.stub :put_blob_properties, true do
+ @service.stub :get_blob_properties, @raw_cloud_blob do
+ assert @file.save(options)
+ end
+ end
+ end
+ end
+
+ def test_save_method_without_directory_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:directory)
+ @file.save
+ end
+ end
+
+ def test_save_method_without_key_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:key)
+ @file.save
+ end
+ end
+
+ def test_save_method_create_without_body_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:body)
+ @file.save
+ end
+ end
+
+ def test_get_body_method_local_success
+ @file.attributes[:body] = 'body'
+ assert_equal 'body', @file.body
+
+ @file.attributes[:body] = nil
+ @file.attributes[:last_modified] = nil
+ assert_equal '', @file.body
+ end
+
+ def test_get_body_method_remote_success
+ @file.attributes[:body] = nil
+ remote_file = @file.dup
+ body_content = 'data'
+ @file.collection.stub :get, remote_file do
+ remote_file.stub :body, body_content do
+ body = @file.body
+ assert_equal body_content, body
+ assert_equal body_content, @file.attributes[:body]
+ end
+ end
+ end
+
+ def test_get_body_method_remote_not_found_success
+ @file.attributes[:body] = nil
+ @file.collection.stub :get, nil do
+ body = @file.body
+ assert_equal '', body
+ assert_equal '', @file.attributes[:body]
+ end
+ end
+
+ def test_set_body_method_success
+ @file.body = 'new_body'
+ assert_equal 'new_body', @file.attributes[:body]
+ end
+
+ def test_copy_method_success
+ copy_id = @raw_cloud_blob.properties[:copy_id]
+ copy_status = 'pending'
+
+ @service.stub :get_blob_properties, @raw_cloud_blob do
+ @service.stub :copy_blob, [copy_id, copy_status] do
+ @service.stub :wait_blob_copy_operation_to_finish, true do
+ target_file = @file.copy('target_container', 'target_blob')
+ assert_instance_of Fog::Storage::AzureRM::File, target_file
+ end
+ end
+ end
+ end
+
+ def test_copy_from_uri_method_success
+ copy_id = @raw_cloud_blob.properties[:copy_id]
+ copy_status = 'pending'
+
+ @service.stub :get_blob_properties, @raw_cloud_blob do
+ @service.stub :copy_blob_from_uri, [copy_id, copy_status] do
+ @service.stub :wait_blob_copy_operation_to_finish, true do
+ assert @file.copy_from_uri('source_uri')
+ end
+ end
+ end
+ end
+
+ def test_copy_from_uri_method_without_directory_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:directory)
+ @file.copy_from_uri('source_uri')
+ end
+ end
+
+ def test_copy_from_uri_method_without_key_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:key)
+ @file.copy_from_uri('source_uri')
+ end
+ end
+
+ def test_destroy_method_success
+ @service.stub :delete_blob, true do
+ assert @file.destroy
+ assert @file.attributes[:body].nil?
+ end
+ end
+
+ def test_destroy_method_without_directory_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:directory)
+ @file.destroy
+ end
+ end
+
+ def test_destroy_method_without_key_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:key)
+ @file.destroy
+ end
+ end
+
+ def test_public_method_success
+ @file.directory.acl = 'container'
+ assert @file.public?
+
+ @file.directory.acl = 'blob'
+ assert @file.public?
+
+ @file.directory.acl = nil
+ assert !@file.public?
+ end
+
+ def test_public_method_without_directory_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:directory)
+ @file.public?
+ end
+ end
+
+ def test_public_url_method_success
+ @file.stub :public?, false do
+ assert @file.public_url.nil?
+ end
+
+ @file.stub :public?, true do
+ @service.stub :get_blob_url, @blob_https_url do
+ assert @file.public_url, @blob_https_url
+ end
+ end
+
+ http_url = @blob_https_url.gsub('https:', 'http:')
+ options = { scheme: 'https' }
+ @file.stub :public?, true do
+ @service.stub :get_blob_url, http_url do
+ assert @file.public_url(options), http_url
+ end
+ end
+ end
+
+ def test_public_url_method_without_directory_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:directory)
+ @file.public_url
+ end
+ end
+
+ def test_public_url_method_without_key_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:key)
+ @file.public_url
+ end
+ end
+
+ def test_url_method_success
+ @file.collection.stub :get_url, @blob_https_url do
+ assert @file.url(Time.now + 3600), @blob_https_url
+ end
+ end
+
+ def test_url_method_without_key_exception
+ assert_raises(ArgumentError) do
+ @file.attributes.delete(:key)
+ @file.url(Time.now + 3600)
+ end
+ end
+end