stuartpreston-azure-sdk-for-ruby 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +11 -11
- data/.travis.yml +10 -10
- data/ChangeLog.txt +70 -68
- data/Gemfile +15 -15
- data/README.md +618 -618
- data/Rakefile +133 -133
- data/azure.gemspec +44 -44
- data/lib/azure.rb +52 -52
- data/lib/azure/base_management/affinity_group.rb +32 -32
- data/lib/azure/base_management/base_management_service.rb +304 -304
- data/lib/azure/base_management/location.rb +27 -27
- data/lib/azure/base_management/management_http_request.rb +171 -171
- data/lib/azure/base_management/serialization.rb +129 -129
- data/lib/azure/base_management/sql_management_http_request.rb +45 -45
- data/lib/azure/blob/blob.rb +31 -31
- data/lib/azure/blob/blob_service.rb +1423 -1423
- data/lib/azure/blob/block.rb +30 -30
- data/lib/azure/blob/container.rb +31 -31
- data/lib/azure/blob/serialization.rb +284 -284
- data/lib/azure/cloud_service_management/cloud_service.rb +38 -38
- data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -140
- data/lib/azure/cloud_service_management/serialization.rb +117 -117
- data/lib/azure/core.rb +39 -39
- data/lib/azure/core/auth/authorizer.rb +36 -36
- data/lib/azure/core/auth/shared_key.rb +110 -110
- data/lib/azure/core/auth/shared_key_lite.rb +48 -48
- data/lib/azure/core/auth/signer.rb +48 -48
- data/lib/azure/core/configuration.rb +211 -211
- data/lib/azure/core/error.rb +22 -22
- data/lib/azure/core/filtered_service.rb +43 -43
- data/lib/azure/core/http/debug_filter.rb +35 -35
- data/lib/azure/core/http/http_error.rb +88 -88
- data/lib/azure/core/http/http_filter.rb +52 -52
- data/lib/azure/core/http/http_request.rb +157 -157
- data/lib/azure/core/http/http_response.rb +140 -140
- data/lib/azure/core/http/retry_policy.rb +73 -73
- data/lib/azure/core/http/signer_filter.rb +33 -33
- data/lib/azure/core/service.rb +62 -62
- data/lib/azure/core/signed_service.rb +42 -42
- data/lib/azure/core/utility.rb +190 -190
- data/lib/azure/queue/message.rb +29 -29
- data/lib/azure/queue/queue.rb +28 -28
- data/lib/azure/queue/queue_service.rb +567 -567
- data/lib/azure/queue/serialization.rb +106 -106
- data/lib/azure/service/access_policy.rb +25 -25
- data/lib/azure/service/cors.rb +11 -11
- data/lib/azure/service/cors_rule.rb +15 -15
- data/lib/azure/service/enumeration_results.rb +20 -20
- data/lib/azure/service/logging.rb +31 -31
- data/lib/azure/service/metrics.rb +30 -30
- data/lib/azure/service/retention_policy.rb +24 -24
- data/lib/azure/service/serialization.rb +297 -297
- data/lib/azure/service/signed_identifier.rb +29 -29
- data/lib/azure/service/storage_service.rb +82 -82
- data/lib/azure/service/storage_service_properties.rb +37 -37
- data/lib/azure/service_bus/action.rb +21 -21
- data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
- data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
- data/lib/azure/service_bus/brokered_message.rb +123 -123
- data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
- data/lib/azure/service_bus/correlation_filter.rb +45 -45
- data/lib/azure/service_bus/empty_rule_action.rb +29 -29
- data/lib/azure/service_bus/false_filter.rb +38 -38
- data/lib/azure/service_bus/filter.rb +21 -21
- data/lib/azure/service_bus/interval.rb +103 -103
- data/lib/azure/service_bus/queue.rb +229 -229
- data/lib/azure/service_bus/relay.rb +87 -87
- data/lib/azure/service_bus/resource.rb +108 -108
- data/lib/azure/service_bus/rule.rb +97 -97
- data/lib/azure/service_bus/rule_aspect.rb +34 -34
- data/lib/azure/service_bus/serialization.rb +161 -161
- data/lib/azure/service_bus/service_bus_service.rb +896 -896
- data/lib/azure/service_bus/sql_filter.rb +50 -50
- data/lib/azure/service_bus/sql_rule_action.rb +50 -50
- data/lib/azure/service_bus/subscription.rb +183 -183
- data/lib/azure/service_bus/topic.rb +186 -186
- data/lib/azure/service_bus/true_filter.rb +38 -38
- data/lib/azure/sql_database_management/serialization.rb +111 -111
- data/lib/azure/sql_database_management/sql_database.rb +31 -31
- data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -200
- data/lib/azure/storage_management/serialization.rb +184 -184
- data/lib/azure/storage_management/storage_account.rb +40 -40
- data/lib/azure/storage_management/storage_management_service.rb +166 -166
- data/lib/azure/table/auth/shared_key.rb +92 -92
- data/lib/azure/table/auth/shared_key_lite.rb +44 -44
- data/lib/azure/table/batch.rb +329 -329
- data/lib/azure/table/batch_response.rb +118 -118
- data/lib/azure/table/edmtype.rb +126 -126
- data/lib/azure/table/entity.rb +30 -30
- data/lib/azure/table/guid.rb +23 -23
- data/lib/azure/table/query.rb +111 -111
- data/lib/azure/table/serialization.rb +107 -107
- data/lib/azure/table/table_service.rb +559 -559
- data/lib/azure/version.rb +31 -31
- data/lib/azure/virtual_machine_image_management/serialization.rb +66 -66
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -25
- data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -25
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -94
- data/lib/azure/virtual_machine_management/serialization.rb +462 -462
- data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -45
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +588 -588
- data/lib/azure/virtual_network_management/serialization.rb +190 -190
- data/lib/azure/virtual_network_management/virtual_network.rb +37 -37
- data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
- data/test/fixtures/affinity_group.xml +33 -33
- data/test/fixtures/all_containers.xml +20 -20
- data/test/fixtures/all_tables.xml +22 -22
- data/test/fixtures/certificate.pem +21 -21
- data/test/fixtures/container_acl.xml +11 -11
- data/test/fixtures/create_sql_database_server.xml +1 -1
- data/test/fixtures/create_storage_desc_error.xml +5 -5
- data/test/fixtures/create_storage_extendedprop_error.xml +8 -8
- data/test/fixtures/create_storage_extendedpropname_error.xml +6 -6
- data/test/fixtures/create_storage_full_error.xml +6 -6
- data/test/fixtures/create_storage_label_error.xml +5 -5
- data/test/fixtures/create_storage_location_error.xml +5 -5
- data/test/fixtures/create_storage_name_error.xml +6 -6
- data/test/fixtures/create_table_response_entry.xml +15 -15
- data/test/fixtures/delete_storage_container_error.xml +5 -5
- data/test/fixtures/delete_storage_error.xml +5 -5
- data/test/fixtures/deployment_error.xml +5 -5
- data/test/fixtures/get_storage_account_error.xml +5 -5
- data/test/fixtures/get_storage_account_properties.xml +31 -31
- data/test/fixtures/get_storage_account_properties_new.xml +31 -31
- data/test/fixtures/http_error.xml +5 -5
- data/test/fixtures/insert_entity_response_entry.xml +25 -25
- data/test/fixtures/list_affinity_groups.xml +22 -22
- data/test/fixtures/list_blobs.xml +120 -120
- data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
- data/test/fixtures/list_blocks_all.xml +22 -22
- data/test/fixtures/list_blocks_committed.xml +12 -12
- data/test/fixtures/list_cloud_services.xml +38 -38
- data/test/fixtures/list_containers.xml +37 -37
- data/test/fixtures/list_firewall_management_endpoint.xml +27 -27
- data/test/fixtures/list_images.xml +110 -110
- data/test/fixtures/list_locations.xml +62 -62
- data/test/fixtures/list_page_ranges.xml +10 -10
- data/test/fixtures/list_sql_database.xml +36 -36
- data/test/fixtures/list_sql_server_firewall.xml +23 -23
- data/test/fixtures/list_storage_account_single.xml +24 -24
- data/test/fixtures/list_storage_accounts.xml +45 -45
- data/test/fixtures/list_virtual_networks.xml +92 -92
- data/test/fixtures/logging.xml +11 -11
- data/test/fixtures/management_certificate.pem +55 -55
- data/test/fixtures/messages.xml +12 -12
- data/test/fixtures/metrics.xml +10 -10
- data/test/fixtures/privatekey.key +28 -28
- data/test/fixtures/query_entities_empty_response.xml +7 -7
- data/test/fixtures/query_entities_response.xml +45 -45
- data/test/fixtures/queue_service_properties.xml +22 -22
- data/test/fixtures/queue_service_properties_original.xml +19 -19
- data/test/fixtures/queues.xml +16 -16
- data/test/fixtures/retention_policy.xml +5 -5
- data/test/fixtures/sb_default_create_queue_response.xml +23 -23
- data/test/fixtures/sb_default_create_relay_response.xml +15 -15
- data/test/fixtures/sb_default_create_topic_response.xml +18 -18
- data/test/fixtures/sb_get_access_token_response.txt +1 -1
- data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
- data/test/fixtures/storage_service_properties.xml +54 -54
- data/test/fixtures/update_storage_account.xml +16 -16
- data/test/fixtures/update_storage_error.xml +4 -4
- data/test/fixtures/updated_storage_accounts.xml +52 -52
- data/test/fixtures/virtual_machine.xml +113 -113
- data/test/fixtures/windows_virtual_machine.xml +106 -106
- data/test/integration/affinity_group/Affinity_test.rb +55 -55
- data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
- data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
- data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
- data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
- data/test/integration/blob/blob_gb18030_test.rb +199 -199
- data/test/integration/blob/blob_metadata_test.rb +75 -75
- data/test/integration/blob/blob_pages_test.rb +119 -119
- data/test/integration/blob/blob_properties_test.rb +77 -77
- data/test/integration/blob/block_blob_test.rb +254 -254
- data/test/integration/blob/container/container_acl_test.rb +69 -69
- data/test/integration/blob/container/container_metadata_test.rb +50 -50
- data/test/integration/blob/container/create_container_test.rb +60 -60
- data/test/integration/blob/container/delete_container_test.rb +39 -39
- data/test/integration/blob/container/get_container_properties_test.rb +48 -48
- data/test/integration/blob/container/list_containers_test.rb +79 -79
- data/test/integration/blob/container/root_container_test.rb +53 -53
- data/test/integration/blob/copy_blob_test.rb +113 -113
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
- data/test/integration/blob/create_page_blob_test.rb +83 -83
- data/test/integration/blob/delete_blob_test.rb +159 -159
- data/test/integration/blob/get_blob_test.rb +65 -65
- data/test/integration/blob/informative_errors_test.rb +38 -38
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
- data/test/integration/blob/lease/break_lease_test.rb +40 -40
- data/test/integration/blob/lease/release_lease_test.rb +40 -40
- data/test/integration/blob/lease/renew_lease_test.rb +42 -42
- data/test/integration/blob/list_blobs_test.rb +113 -113
- data/test/integration/cloud_service/Cloud_Create_test.rb +44 -44
- data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -44
- data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
- data/test/integration/database/create_sql_server_test.rb +53 -53
- data/test/integration/database/delete_sql_server_firewall_test.rb +70 -70
- data/test/integration/database/delete_sql_server_test.rb +58 -58
- data/test/integration/database/list_sql_server_firewall_test.rb +45 -45
- data/test/integration/database/list_sql_servers_test.rb +44 -44
- data/test/integration/database/reset_password_sql_server_test.rb +55 -55
- data/test/integration/location/Location_List_test.rb +39 -39
- data/test/integration/queue/clear_messages_test.rb +42 -42
- data/test/integration/queue/create_message_test.rb +75 -75
- data/test/integration/queue/create_queue_test.rb +50 -50
- data/test/integration/queue/delete_message_test.rb +67 -67
- data/test/integration/queue/delete_queue_test.rb +45 -45
- data/test/integration/queue/informative_errors_test.rb +41 -41
- data/test/integration/queue/list_messages_encoded_test.rb +79 -79
- data/test/integration/queue/list_messages_test.rb +79 -79
- data/test/integration/queue/list_queues_test.rb +44 -44
- data/test/integration/queue/peek_messages_test.rb +59 -59
- data/test/integration/queue/queue_gb18030_test.rb +131 -131
- data/test/integration/queue/queue_metadata_test.rb +40 -40
- data/test/integration/queue/update_message_test.rb +74 -74
- data/test/integration/service_bus/informative_errors_test.rb +36 -36
- data/test/integration/service_bus/queues_scenario_test.rb +200 -200
- data/test/integration/service_bus/queues_test.rb +265 -265
- data/test/integration/service_bus/relay_test.rb +131 -131
- data/test/integration/service_bus/rules_test.rb +144 -144
- data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
- data/test/integration/service_bus/scenario_test.rb +101 -101
- data/test/integration/service_bus/subscriptions_test.rb +211 -211
- data/test/integration/service_bus/topics_scenario_test.rb +406 -406
- data/test/integration/service_bus/topics_test.rb +129 -129
- data/test/integration/storage_management/storage_management_test.rb +160 -160
- data/test/integration/table/create_table_test.rb +35 -35
- data/test/integration/table/delete_entity_batch_test.rb +106 -106
- data/test/integration/table/delete_entity_test.rb +93 -93
- data/test/integration/table/delete_table_test.rb +39 -39
- data/test/integration/table/get_table_test.rb +36 -36
- data/test/integration/table/informative_errors_test.rb +38 -38
- data/test/integration/table/insert_entity_batch_test.rb +99 -99
- data/test/integration/table/insert_entity_test.rb +87 -87
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
- data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
- data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
- data/test/integration/table/merge_entity_batch_test.rb +127 -127
- data/test/integration/table/merge_entity_test.rb +112 -112
- data/test/integration/table/query_entities_test.rb +194 -194
- data/test/integration/table/query_tables_test.rb +42 -42
- data/test/integration/table/query_test.rb +250 -250
- data/test/integration/table/table_acl_test.rb +51 -51
- data/test/integration/table/table_gb18030_test.rb +355 -355
- data/test/integration/table/update_entity_batch_test.rb +148 -148
- data/test/integration/table/update_entity_test.rb +130 -130
- data/test/integration/test_helper.rb +42 -42
- data/test/integration/vm/VM_Create_test.rb +260 -260
- data/test/integration/vm/VM_Delete_test.rb +55 -55
- data/test/integration/vm/VM_Operations_test.rb +173 -173
- data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
- data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
- data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
- data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
- data/test/support/env.rb +19 -19
- data/test/support/fixtures.rb +36 -36
- data/test/support/name_generator.rb +168 -168
- data/test/support/stubs.rb +42 -42
- data/test/support/virtual_machine_name_generator.rb +102 -102
- data/test/support/virtual_network_helper.rb +73 -73
- data/test/test_helper.rb +53 -53
- data/test/unit/affinity_group/affinity_group_test.rb +192 -192
- data/test/unit/affinity_group/serialization_test.rb +88 -88
- data/test/unit/base_management/location_test.rb +57 -57
- data/test/unit/blob/blob_service_test.rb +1946 -1946
- data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
- data/test/unit/cloud_service_management/serialization_test.rb +169 -169
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
- data/test/unit/core/auth/shared_key_test.rb +58 -58
- data/test/unit/core/auth/signer_test.rb +30 -30
- data/test/unit/core/http/http_error_test.rb +57 -57
- data/test/unit/core/http/http_request_test.rb +66 -66
- data/test/unit/core/http/http_response_test.rb +45 -45
- data/test/unit/core/http/retry_policy_test.rb +23 -23
- data/test/unit/database/serialization_test.rb +97 -97
- data/test/unit/database/sql_database_server_service_test.rb +288 -288
- data/test/unit/service/serialization_test.rb +532 -532
- data/test/unit/service/storage_service_test.rb +292 -292
- data/test/unit/storage_management/serialization_test.rb +232 -232
- data/test/unit/storage_management/storage_management_service_test.rb +261 -261
- data/test/unit/table/edmtype_test.rb +107 -107
- data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -35
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -65
- data/test/unit/virtual_machine_management/serialization_test.rb +258 -258
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -440
- data/test/unit/vnet/serialization_test.rb +187 -187
- data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
- metadata +34 -27
@@ -1,80 +1,80 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
require "azure/blob/blob_service"
|
17
|
-
|
18
|
-
describe Azure::Blob::BlobService do
|
19
|
-
subject { Azure::Blob::BlobService.new }
|
20
|
-
after { TableNameHelper.clean }
|
21
|
-
|
22
|
-
describe '#create_blob_snapshot' do
|
23
|
-
let(:container_name) { ContainerNameHelper.name }
|
24
|
-
let(:blob_name) { "blobname" }
|
25
|
-
let(:content) { content = ""; 1024.times.each{|i| content << "@" }; content }
|
26
|
-
let(:metadata) { { "CustomMetadataProperty"=>"CustomMetadataValue" } }
|
27
|
-
let(:options) { { :blob_content_type=>"application/foo", :metadata => metadata } }
|
28
|
-
|
29
|
-
before {
|
30
|
-
subject.create_container container_name
|
31
|
-
subject.create_block_blob container_name, blob_name, content, options
|
32
|
-
}
|
33
|
-
|
34
|
-
it 'errors if the container does not exist' do
|
35
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
36
|
-
subject.create_blob_snapshot ContainerNameHelper.name, blob_name
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'errors if the blob does not exist' do
|
41
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
42
|
-
subject.create_blob_snapshot container_name, "unknown-blob"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'creates a snapshot of blob contents, metadata, and properties' do
|
47
|
-
snapshot = subject.create_blob_snapshot container_name, blob_name
|
48
|
-
|
49
|
-
content2= ""
|
50
|
-
1024.times.each{|i| content2 << "!" }
|
51
|
-
options2 = options.dup
|
52
|
-
options2[:metadata] = options[:metadata].dup
|
53
|
-
options2[:blob_content_type] = "application/bar"
|
54
|
-
options2[:metadata]["CustomMetadataValue1"] = "NewMetadata"
|
55
|
-
subject.create_block_blob container_name, blob_name, content2, options2
|
56
|
-
|
57
|
-
# content/properties/metadata in blob is new version
|
58
|
-
blob, returned_content = subject.get_blob container_name, blob_name, { :start_range => 0, :end_range => 511 }
|
59
|
-
returned_content.length.must_equal 512
|
60
|
-
returned_content.must_equal content2[0..511]
|
61
|
-
blob.properties[:content_type].must_equal options2[:blob_content_type]
|
62
|
-
options2[:metadata].each { |k,v|
|
63
|
-
blob.metadata.must_include k.downcase
|
64
|
-
blob.metadata[k.downcase].must_equal v
|
65
|
-
}
|
66
|
-
|
67
|
-
# content/properties/metadata in snapshot is old version
|
68
|
-
blob, returned_content = subject.get_blob container_name, blob_name, { :start_range => 0, :end_range => 511, :snapshot => snapshot }
|
69
|
-
|
70
|
-
returned_content.length.must_equal 512
|
71
|
-
returned_content.must_equal content[0..511]
|
72
|
-
blob.properties[:content_type].must_equal options[:blob_content_type]
|
73
|
-
options[:metadata].each { |k,v|
|
74
|
-
blob.metadata.must_include k.downcase
|
75
|
-
blob.metadata[k.downcase].must_equal v
|
76
|
-
}
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
require "azure/blob/blob_service"
|
17
|
+
|
18
|
+
describe Azure::Blob::BlobService do
|
19
|
+
subject { Azure::Blob::BlobService.new }
|
20
|
+
after { TableNameHelper.clean }
|
21
|
+
|
22
|
+
describe '#create_blob_snapshot' do
|
23
|
+
let(:container_name) { ContainerNameHelper.name }
|
24
|
+
let(:blob_name) { "blobname" }
|
25
|
+
let(:content) { content = ""; 1024.times.each{|i| content << "@" }; content }
|
26
|
+
let(:metadata) { { "CustomMetadataProperty"=>"CustomMetadataValue" } }
|
27
|
+
let(:options) { { :blob_content_type=>"application/foo", :metadata => metadata } }
|
28
|
+
|
29
|
+
before {
|
30
|
+
subject.create_container container_name
|
31
|
+
subject.create_block_blob container_name, blob_name, content, options
|
32
|
+
}
|
33
|
+
|
34
|
+
it 'errors if the container does not exist' do
|
35
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
36
|
+
subject.create_blob_snapshot ContainerNameHelper.name, blob_name
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'errors if the blob does not exist' do
|
41
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
42
|
+
subject.create_blob_snapshot container_name, "unknown-blob"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'creates a snapshot of blob contents, metadata, and properties' do
|
47
|
+
snapshot = subject.create_blob_snapshot container_name, blob_name
|
48
|
+
|
49
|
+
content2= ""
|
50
|
+
1024.times.each{|i| content2 << "!" }
|
51
|
+
options2 = options.dup
|
52
|
+
options2[:metadata] = options[:metadata].dup
|
53
|
+
options2[:blob_content_type] = "application/bar"
|
54
|
+
options2[:metadata]["CustomMetadataValue1"] = "NewMetadata"
|
55
|
+
subject.create_block_blob container_name, blob_name, content2, options2
|
56
|
+
|
57
|
+
# content/properties/metadata in blob is new version
|
58
|
+
blob, returned_content = subject.get_blob container_name, blob_name, { :start_range => 0, :end_range => 511 }
|
59
|
+
returned_content.length.must_equal 512
|
60
|
+
returned_content.must_equal content2[0..511]
|
61
|
+
blob.properties[:content_type].must_equal options2[:blob_content_type]
|
62
|
+
options2[:metadata].each { |k,v|
|
63
|
+
blob.metadata.must_include k.downcase
|
64
|
+
blob.metadata[k.downcase].must_equal v
|
65
|
+
}
|
66
|
+
|
67
|
+
# content/properties/metadata in snapshot is old version
|
68
|
+
blob, returned_content = subject.get_blob container_name, blob_name, { :start_range => 0, :end_range => 511, :snapshot => snapshot }
|
69
|
+
|
70
|
+
returned_content.length.must_equal 512
|
71
|
+
returned_content.must_equal content[0..511]
|
72
|
+
blob.properties[:content_type].must_equal options[:blob_content_type]
|
73
|
+
options[:metadata].each { |k,v|
|
74
|
+
blob.metadata.must_include k.downcase
|
75
|
+
blob.metadata[k.downcase].must_equal v
|
76
|
+
}
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -1,83 +1,83 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
require "azure/blob/blob_service"
|
17
|
-
|
18
|
-
describe Azure::Blob::BlobService do
|
19
|
-
subject { Azure::Blob::BlobService.new }
|
20
|
-
after { TableNameHelper.clean }
|
21
|
-
|
22
|
-
describe '#create_page_blob' do
|
23
|
-
let(:container_name) { ContainerNameHelper.name }
|
24
|
-
let(:blob_name) { "blobname" }
|
25
|
-
let(:complex_blob_name) { 'qa-872053-/*"\'&.({[<+ ' + [ 0x7D, 0xEB, 0x8B, 0xA4].pack('U*') + '_' + "0" }
|
26
|
-
let(:length) { 1024 }
|
27
|
-
before {
|
28
|
-
subject.create_container container_name
|
29
|
-
}
|
30
|
-
|
31
|
-
it 'creates a page blob' do
|
32
|
-
blob = subject.create_page_blob container_name, blob_name, length
|
33
|
-
blob.name.must_equal blob_name
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'creates a page blob with complex name' do
|
37
|
-
blob = subject.create_page_blob container_name, complex_blob_name, length
|
38
|
-
blob.name.must_equal complex_blob_name
|
39
|
-
|
40
|
-
complex_blob_name.force_encoding("UTF-8")
|
41
|
-
found_complex_name = false
|
42
|
-
result = subject.list_blobs container_name
|
43
|
-
result.each { |blob|
|
44
|
-
found_complex_name = true if blob.name == complex_blob_name
|
45
|
-
}
|
46
|
-
|
47
|
-
found_complex_name.must_equal true
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'sets additional properties when the options hash is used' do
|
51
|
-
options = {
|
52
|
-
:content_type=>"application/xml",
|
53
|
-
:content_encoding=>"utf-8",
|
54
|
-
:content_language=>"en-US",
|
55
|
-
:cache_control=>"max-age=1296000",
|
56
|
-
:metadata => { "CustomMetadataProperty"=>"CustomMetadataValue"}
|
57
|
-
}
|
58
|
-
|
59
|
-
blob = subject.create_page_blob container_name, blob_name, length, options
|
60
|
-
blob = subject.get_blob_properties container_name, blob_name
|
61
|
-
blob.name.must_equal blob_name
|
62
|
-
blob.properties[:content_type].must_equal options[:content_type]
|
63
|
-
blob.properties[:content_encoding].must_equal options[:content_encoding]
|
64
|
-
blob.properties[:cache_control].must_equal options[:cache_control]
|
65
|
-
|
66
|
-
blob = subject.get_blob_metadata container_name, blob_name
|
67
|
-
blob.name.must_equal blob_name
|
68
|
-
blob.metadata["custommetadataproperty"].must_equal "CustomMetadataValue"
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'errors if the container does not exist' do
|
72
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
73
|
-
subject.create_page_blob ContainerNameHelper.name, blob_name, length
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'errors if the length is not 512 byte aligned' do
|
78
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
79
|
-
subject.create_page_blob container_name, blob_name, length + 1
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
require "azure/blob/blob_service"
|
17
|
+
|
18
|
+
describe Azure::Blob::BlobService do
|
19
|
+
subject { Azure::Blob::BlobService.new }
|
20
|
+
after { TableNameHelper.clean }
|
21
|
+
|
22
|
+
describe '#create_page_blob' do
|
23
|
+
let(:container_name) { ContainerNameHelper.name }
|
24
|
+
let(:blob_name) { "blobname" }
|
25
|
+
let(:complex_blob_name) { 'qa-872053-/*"\'&.({[<+ ' + [ 0x7D, 0xEB, 0x8B, 0xA4].pack('U*') + '_' + "0" }
|
26
|
+
let(:length) { 1024 }
|
27
|
+
before {
|
28
|
+
subject.create_container container_name
|
29
|
+
}
|
30
|
+
|
31
|
+
it 'creates a page blob' do
|
32
|
+
blob = subject.create_page_blob container_name, blob_name, length
|
33
|
+
blob.name.must_equal blob_name
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'creates a page blob with complex name' do
|
37
|
+
blob = subject.create_page_blob container_name, complex_blob_name, length
|
38
|
+
blob.name.must_equal complex_blob_name
|
39
|
+
|
40
|
+
complex_blob_name.force_encoding("UTF-8")
|
41
|
+
found_complex_name = false
|
42
|
+
result = subject.list_blobs container_name
|
43
|
+
result.each { |blob|
|
44
|
+
found_complex_name = true if blob.name == complex_blob_name
|
45
|
+
}
|
46
|
+
|
47
|
+
found_complex_name.must_equal true
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'sets additional properties when the options hash is used' do
|
51
|
+
options = {
|
52
|
+
:content_type=>"application/xml",
|
53
|
+
:content_encoding=>"utf-8",
|
54
|
+
:content_language=>"en-US",
|
55
|
+
:cache_control=>"max-age=1296000",
|
56
|
+
:metadata => { "CustomMetadataProperty"=>"CustomMetadataValue"}
|
57
|
+
}
|
58
|
+
|
59
|
+
blob = subject.create_page_blob container_name, blob_name, length, options
|
60
|
+
blob = subject.get_blob_properties container_name, blob_name
|
61
|
+
blob.name.must_equal blob_name
|
62
|
+
blob.properties[:content_type].must_equal options[:content_type]
|
63
|
+
blob.properties[:content_encoding].must_equal options[:content_encoding]
|
64
|
+
blob.properties[:cache_control].must_equal options[:cache_control]
|
65
|
+
|
66
|
+
blob = subject.get_blob_metadata container_name, blob_name
|
67
|
+
blob.name.must_equal blob_name
|
68
|
+
blob.metadata["custommetadataproperty"].must_equal "CustomMetadataValue"
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'errors if the container does not exist' do
|
72
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
73
|
+
subject.create_page_blob ContainerNameHelper.name, blob_name, length
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'errors if the length is not 512 byte aligned' do
|
78
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
79
|
+
subject.create_page_blob container_name, blob_name, length + 1
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -1,159 +1,159 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
require "azure/blob/blob_service"
|
17
|
-
|
18
|
-
describe Azure::Blob::BlobService do
|
19
|
-
subject { Azure::Blob::BlobService.new }
|
20
|
-
after { TableNameHelper.clean }
|
21
|
-
|
22
|
-
describe '#delete_blob' do
|
23
|
-
let(:container_name) { ContainerNameHelper.name }
|
24
|
-
let(:blob_name) { "blobname" }
|
25
|
-
let(:length) { 1024 }
|
26
|
-
before {
|
27
|
-
subject.create_container container_name
|
28
|
-
subject.create_page_blob container_name, blob_name, length
|
29
|
-
}
|
30
|
-
|
31
|
-
it 'deletes a blob' do
|
32
|
-
subject.delete_blob container_name, blob_name
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'errors if the container does not exist' do
|
36
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
37
|
-
subject.delete_blob ContainerNameHelper.name, blob_name
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'errors if the blob does not exist' do
|
42
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
43
|
-
subject.delete_blob container_name, "unknown-blob"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe 'when a blob has snapshots' do
|
48
|
-
let(:snapshot) {
|
49
|
-
subject.create_blob_snapshot container_name, blob_name
|
50
|
-
}
|
51
|
-
|
52
|
-
# ensure snapshot gets created before tests run. silly.
|
53
|
-
before { s = snapshot }
|
54
|
-
|
55
|
-
it 'deletes the blob, and all the snapshots for the blob, if optional paramters are not used' do
|
56
|
-
# verify snapshot exists
|
57
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
58
|
-
|
59
|
-
snapshot_exists = false
|
60
|
-
result.each { |b|
|
61
|
-
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
62
|
-
}
|
63
|
-
snapshot_exists.must_equal true
|
64
|
-
|
65
|
-
# delete blob
|
66
|
-
subject.delete_blob container_name, blob_name
|
67
|
-
|
68
|
-
# verify blob is gone and snapshot remains
|
69
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
70
|
-
result.length.must_equal 0
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'the snapshot parameter deletes a specific blob snapshot' do
|
74
|
-
# create a second snapshot
|
75
|
-
second_snapshot = subject.create_blob_snapshot container_name, blob_name
|
76
|
-
|
77
|
-
# verify two snapshots exist
|
78
|
-
|
79
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
80
|
-
|
81
|
-
snapshots = 0
|
82
|
-
result.each { |b|
|
83
|
-
snapshots += 1 if b.name == blob_name and b.snapshot != nil
|
84
|
-
}
|
85
|
-
snapshots.must_equal 2
|
86
|
-
|
87
|
-
subject.delete_blob container_name, blob_name, { :snapshot => snapshot }
|
88
|
-
|
89
|
-
# verify first snapshot is gone and blob remains
|
90
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
91
|
-
|
92
|
-
snapshots = 0
|
93
|
-
blob_exists = false
|
94
|
-
result.each { |b|
|
95
|
-
blob_exists = true if b.name == blob_name and b.snapshot == nil
|
96
|
-
snapshots += 1 if b.name == blob_name and b.snapshot == second_snapshot
|
97
|
-
}
|
98
|
-
blob_exists.must_equal true
|
99
|
-
snapshots.must_equal 1
|
100
|
-
end
|
101
|
-
|
102
|
-
it 'errors if the snapshot id provided does not exist' do
|
103
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
104
|
-
subject.delete_blob container_name, blob_name, { :snapshot => "thissnapshotidisinvalid" }
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe 'when :only is provided in the delete_snapshots parameter' do
|
109
|
-
let(:delete_snapshots) { :only }
|
110
|
-
it 'deletes all the snapshots for the blob, keeping the blob' do
|
111
|
-
# verify snapshot exists
|
112
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
113
|
-
|
114
|
-
snapshot_exists = false
|
115
|
-
result.each { |b|
|
116
|
-
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
117
|
-
}
|
118
|
-
snapshot_exists.must_equal true
|
119
|
-
|
120
|
-
# delete snapshots
|
121
|
-
subject.delete_blob container_name, blob_name, { :snapshot => nil, :delete_snapshots => :only }
|
122
|
-
|
123
|
-
# verify snapshot is gone and blob remains
|
124
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
125
|
-
|
126
|
-
snapshot_exists = false
|
127
|
-
blob_exists = false
|
128
|
-
result.each { |b|
|
129
|
-
blob_exists = true if b.name == blob_name and b.snapshot == nil
|
130
|
-
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
131
|
-
}
|
132
|
-
blob_exists.must_equal true
|
133
|
-
snapshot_exists.must_equal false
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
describe 'when :include is provided in the delete_snapshots parameter' do
|
138
|
-
let(:delete_snapshots) { :include }
|
139
|
-
it 'deletes the blob and all of the snapshots for the blob' do
|
140
|
-
# verify snapshot exists
|
141
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
142
|
-
|
143
|
-
snapshot_exists = false
|
144
|
-
result.each { |b|
|
145
|
-
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
146
|
-
}
|
147
|
-
snapshot_exists.must_equal true
|
148
|
-
|
149
|
-
# delete snapshots
|
150
|
-
subject.delete_blob container_name, blob_name, { :snapshot => nil, :delete_snapshots => :include }
|
151
|
-
|
152
|
-
# verify snapshot is gone and blob remains
|
153
|
-
result = subject.list_blobs(container_name, { :snapshots=> true })
|
154
|
-
result.length.must_equal 0
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
require "azure/blob/blob_service"
|
17
|
+
|
18
|
+
describe Azure::Blob::BlobService do
|
19
|
+
subject { Azure::Blob::BlobService.new }
|
20
|
+
after { TableNameHelper.clean }
|
21
|
+
|
22
|
+
describe '#delete_blob' do
|
23
|
+
let(:container_name) { ContainerNameHelper.name }
|
24
|
+
let(:blob_name) { "blobname" }
|
25
|
+
let(:length) { 1024 }
|
26
|
+
before {
|
27
|
+
subject.create_container container_name
|
28
|
+
subject.create_page_blob container_name, blob_name, length
|
29
|
+
}
|
30
|
+
|
31
|
+
it 'deletes a blob' do
|
32
|
+
subject.delete_blob container_name, blob_name
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'errors if the container does not exist' do
|
36
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
37
|
+
subject.delete_blob ContainerNameHelper.name, blob_name
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'errors if the blob does not exist' do
|
42
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
43
|
+
subject.delete_blob container_name, "unknown-blob"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'when a blob has snapshots' do
|
48
|
+
let(:snapshot) {
|
49
|
+
subject.create_blob_snapshot container_name, blob_name
|
50
|
+
}
|
51
|
+
|
52
|
+
# ensure snapshot gets created before tests run. silly.
|
53
|
+
before { s = snapshot }
|
54
|
+
|
55
|
+
it 'deletes the blob, and all the snapshots for the blob, if optional paramters are not used' do
|
56
|
+
# verify snapshot exists
|
57
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
58
|
+
|
59
|
+
snapshot_exists = false
|
60
|
+
result.each { |b|
|
61
|
+
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
62
|
+
}
|
63
|
+
snapshot_exists.must_equal true
|
64
|
+
|
65
|
+
# delete blob
|
66
|
+
subject.delete_blob container_name, blob_name
|
67
|
+
|
68
|
+
# verify blob is gone and snapshot remains
|
69
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
70
|
+
result.length.must_equal 0
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'the snapshot parameter deletes a specific blob snapshot' do
|
74
|
+
# create a second snapshot
|
75
|
+
second_snapshot = subject.create_blob_snapshot container_name, blob_name
|
76
|
+
|
77
|
+
# verify two snapshots exist
|
78
|
+
|
79
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
80
|
+
|
81
|
+
snapshots = 0
|
82
|
+
result.each { |b|
|
83
|
+
snapshots += 1 if b.name == blob_name and b.snapshot != nil
|
84
|
+
}
|
85
|
+
snapshots.must_equal 2
|
86
|
+
|
87
|
+
subject.delete_blob container_name, blob_name, { :snapshot => snapshot }
|
88
|
+
|
89
|
+
# verify first snapshot is gone and blob remains
|
90
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
91
|
+
|
92
|
+
snapshots = 0
|
93
|
+
blob_exists = false
|
94
|
+
result.each { |b|
|
95
|
+
blob_exists = true if b.name == blob_name and b.snapshot == nil
|
96
|
+
snapshots += 1 if b.name == blob_name and b.snapshot == second_snapshot
|
97
|
+
}
|
98
|
+
blob_exists.must_equal true
|
99
|
+
snapshots.must_equal 1
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'errors if the snapshot id provided does not exist' do
|
103
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
104
|
+
subject.delete_blob container_name, blob_name, { :snapshot => "thissnapshotidisinvalid" }
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe 'when :only is provided in the delete_snapshots parameter' do
|
109
|
+
let(:delete_snapshots) { :only }
|
110
|
+
it 'deletes all the snapshots for the blob, keeping the blob' do
|
111
|
+
# verify snapshot exists
|
112
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
113
|
+
|
114
|
+
snapshot_exists = false
|
115
|
+
result.each { |b|
|
116
|
+
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
117
|
+
}
|
118
|
+
snapshot_exists.must_equal true
|
119
|
+
|
120
|
+
# delete snapshots
|
121
|
+
subject.delete_blob container_name, blob_name, { :snapshot => nil, :delete_snapshots => :only }
|
122
|
+
|
123
|
+
# verify snapshot is gone and blob remains
|
124
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
125
|
+
|
126
|
+
snapshot_exists = false
|
127
|
+
blob_exists = false
|
128
|
+
result.each { |b|
|
129
|
+
blob_exists = true if b.name == blob_name and b.snapshot == nil
|
130
|
+
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
131
|
+
}
|
132
|
+
blob_exists.must_equal true
|
133
|
+
snapshot_exists.must_equal false
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe 'when :include is provided in the delete_snapshots parameter' do
|
138
|
+
let(:delete_snapshots) { :include }
|
139
|
+
it 'deletes the blob and all of the snapshots for the blob' do
|
140
|
+
# verify snapshot exists
|
141
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
142
|
+
|
143
|
+
snapshot_exists = false
|
144
|
+
result.each { |b|
|
145
|
+
snapshot_exists = true if b.name == blob_name and b.snapshot == snapshot
|
146
|
+
}
|
147
|
+
snapshot_exists.must_equal true
|
148
|
+
|
149
|
+
# delete snapshots
|
150
|
+
subject.delete_blob container_name, blob_name, { :snapshot => nil, :delete_snapshots => :include }
|
151
|
+
|
152
|
+
# verify snapshot is gone and blob remains
|
153
|
+
result = subject.list_blobs(container_name, { :snapshots=> true })
|
154
|
+
result.length.must_equal 0
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|