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,254 +1,254 @@
|
|
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
|
-
require 'base64'
|
18
|
-
|
19
|
-
describe Azure::Blob::BlobService do
|
20
|
-
subject { Azure::Blob::BlobService.new }
|
21
|
-
after { TableNameHelper.clean }
|
22
|
-
|
23
|
-
let(:container_name) { ContainerNameHelper.name }
|
24
|
-
let(:blob_name) { "blobname" }
|
25
|
-
let(:content) { content = ""; 512.times.each{|i| content << "@" }; content }
|
26
|
-
before {
|
27
|
-
subject.create_container container_name
|
28
|
-
}
|
29
|
-
|
30
|
-
describe '#create_block_blob' do
|
31
|
-
it 'creates a page blob' do
|
32
|
-
blob = subject.create_block_blob container_name, blob_name, content
|
33
|
-
blob.name.must_equal blob_name
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'sets additional properties when the options hash is used' do
|
37
|
-
options = {
|
38
|
-
:content_type=>"application/xml",
|
39
|
-
:content_encoding=>"utf-8",
|
40
|
-
:content_language=>"en-US",
|
41
|
-
:cache_control=>"max-age=1296000",
|
42
|
-
:metadata => { "CustomMetadataProperty"=>"CustomMetadataValue"}
|
43
|
-
}
|
44
|
-
|
45
|
-
blob = subject.create_block_blob container_name, blob_name, content, options
|
46
|
-
blob = subject.get_blob_properties container_name, blob_name
|
47
|
-
blob.name.must_equal blob_name
|
48
|
-
blob.properties[:content_type].must_equal options[:content_type]
|
49
|
-
blob.properties[:content_encoding].must_equal options[:content_encoding]
|
50
|
-
blob.properties[:cache_control].must_equal options[:cache_control]
|
51
|
-
|
52
|
-
blob = subject.get_blob_metadata container_name, blob_name
|
53
|
-
blob.name.must_equal blob_name
|
54
|
-
blob.metadata["custommetadataproperty"].must_equal "CustomMetadataValue"
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'errors if the container does not exist' do
|
58
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
59
|
-
subject.create_block_blob ContainerNameHelper.name, blob_name, content
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe '#create_blob_block' do
|
65
|
-
let(:blockid) {"anyblockid1" }
|
66
|
-
|
67
|
-
it 'creates a block as part of a block blob' do
|
68
|
-
subject.create_blob_block container_name, blob_name, blockid, content
|
69
|
-
|
70
|
-
# verify
|
71
|
-
block_list = subject.list_blob_blocks container_name, blob_name
|
72
|
-
block = block_list[:uncommitted][0]
|
73
|
-
block.type.must_equal :uncommitted
|
74
|
-
block.size.must_equal 512
|
75
|
-
block.name.must_equal blockid
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe '#commit_blob_blocks' do
|
80
|
-
let(:blocklist) { [["anyblockid0"], ["anyblockid1"]] }
|
81
|
-
before {
|
82
|
-
blocklist.each { |block_entry|
|
83
|
-
subject.create_blob_block container_name, blob_name, block_entry[0], content
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
it 'commits a list of blocks to blob' do
|
88
|
-
# verify starting state
|
89
|
-
block_list = subject.list_blob_blocks container_name, blob_name
|
90
|
-
|
91
|
-
(0..1).each { |i|
|
92
|
-
block = block_list[:uncommitted][i]
|
93
|
-
block.type.must_equal :uncommitted
|
94
|
-
block.size.must_equal 512
|
95
|
-
block.name.must_equal blocklist[i][0]
|
96
|
-
}
|
97
|
-
|
98
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
99
|
-
subject.get_blob container_name, blob_name
|
100
|
-
end
|
101
|
-
|
102
|
-
# commit blocks
|
103
|
-
result = subject.commit_blob_blocks container_name, blob_name, blocklist
|
104
|
-
result.must_be_nil
|
105
|
-
|
106
|
-
blob, returned_content = subject.get_blob container_name, blob_name
|
107
|
-
blob.properties[:content_length].must_equal (content.length * 2)
|
108
|
-
returned_content.must_equal (content + content)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
describe '#list_blob_blocks' do
|
113
|
-
let(:blocklist) { [["anyblockid0"], ["anyblockid1"], ["anyblockid2"], ["anyblockid3"]] }
|
114
|
-
before {
|
115
|
-
|
116
|
-
subject.create_blob_block container_name, blob_name, blocklist[0][0], content
|
117
|
-
subject.create_blob_block container_name, blob_name, blocklist[1][0], content
|
118
|
-
|
119
|
-
# two committed blocks, two uncommitted blocks
|
120
|
-
result = subject.commit_blob_blocks container_name, blob_name, blocklist.slice(0..1)
|
121
|
-
result.must_be_nil
|
122
|
-
|
123
|
-
subject.create_blob_block container_name, blob_name, blocklist[2][0], content
|
124
|
-
subject.create_blob_block container_name, blob_name, blocklist[3][0], content
|
125
|
-
}
|
126
|
-
|
127
|
-
it 'lists blocks in a blob, including their status' do
|
128
|
-
result = subject.list_blob_blocks container_name, blob_name
|
129
|
-
|
130
|
-
committed = result[:committed]
|
131
|
-
committed.length.must_equal 2
|
132
|
-
|
133
|
-
expected_blocks = blocklist.slice(0..1).each
|
134
|
-
|
135
|
-
committed.each { |block|
|
136
|
-
block.name.must_equal expected_blocks.next[0]
|
137
|
-
block.type.must_equal :committed
|
138
|
-
block.size.must_equal 512
|
139
|
-
}
|
140
|
-
|
141
|
-
uncommitted = result[:uncommitted]
|
142
|
-
uncommitted.length.must_equal 2
|
143
|
-
|
144
|
-
expected_blocks = blocklist.slice(2..3).each
|
145
|
-
|
146
|
-
uncommitted.each { |block|
|
147
|
-
block.name.must_equal expected_blocks.next[0]
|
148
|
-
block.type.must_equal :uncommitted
|
149
|
-
block.size.must_equal 512
|
150
|
-
}
|
151
|
-
end
|
152
|
-
|
153
|
-
describe 'when blocklist_type parameter is used' do
|
154
|
-
it 'lists uncommitted blocks only if :uncommitted is passed' do
|
155
|
-
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :uncommitted }
|
156
|
-
|
157
|
-
committed = result[:committed]
|
158
|
-
committed.length.must_equal 0
|
159
|
-
|
160
|
-
uncommitted = result[:uncommitted]
|
161
|
-
uncommitted.length.must_equal 2
|
162
|
-
|
163
|
-
expected_blocks = blocklist.slice(2..3).each
|
164
|
-
|
165
|
-
uncommitted.each { |block|
|
166
|
-
block.name.must_equal expected_blocks.next[0]
|
167
|
-
block.type.must_equal :uncommitted
|
168
|
-
block.size.must_equal 512
|
169
|
-
}
|
170
|
-
end
|
171
|
-
|
172
|
-
it 'lists committed blocks only if :committed is passed' do
|
173
|
-
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :committed }
|
174
|
-
|
175
|
-
committed = result[:committed]
|
176
|
-
committed.length.must_equal 2
|
177
|
-
|
178
|
-
expected_blocks = blocklist.slice(0..1).each
|
179
|
-
|
180
|
-
committed.each { |block|
|
181
|
-
block.name.must_equal expected_blocks.next[0]
|
182
|
-
block.type.must_equal :committed
|
183
|
-
block.size.must_equal 512
|
184
|
-
}
|
185
|
-
|
186
|
-
uncommitted = result[:uncommitted]
|
187
|
-
uncommitted.length.must_equal 0
|
188
|
-
end
|
189
|
-
|
190
|
-
it 'lists committed and uncommitted blocks if :all is passed' do
|
191
|
-
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :all }
|
192
|
-
|
193
|
-
committed = result[:committed]
|
194
|
-
committed.length.must_equal 2
|
195
|
-
|
196
|
-
expected_blocks = blocklist.slice(0..1).each
|
197
|
-
|
198
|
-
committed.each { |block|
|
199
|
-
block.name.must_equal expected_blocks.next[0]
|
200
|
-
block.type.must_equal :committed
|
201
|
-
block.size.must_equal 512
|
202
|
-
}
|
203
|
-
|
204
|
-
uncommitted = result[:uncommitted]
|
205
|
-
uncommitted.length.must_equal 2
|
206
|
-
|
207
|
-
expected_blocks = blocklist.slice(2..3).each
|
208
|
-
|
209
|
-
uncommitted.each { |block|
|
210
|
-
block.name.must_equal expected_blocks.next[0]
|
211
|
-
block.type.must_equal :uncommitted
|
212
|
-
block.size.must_equal 512
|
213
|
-
}
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
describe 'when snapshot parameter is used' do
|
218
|
-
it 'lists blocks for the blob snapshot' do
|
219
|
-
snapshot = subject.create_blob_snapshot container_name, blob_name
|
220
|
-
|
221
|
-
result = subject.commit_blob_blocks container_name, blob_name, blocklist
|
222
|
-
result.must_be_nil
|
223
|
-
result = subject.list_blob_blocks container_name, blob_name
|
224
|
-
|
225
|
-
committed = result[:committed]
|
226
|
-
committed.length.must_equal 4
|
227
|
-
expected_blocks = blocklist.each
|
228
|
-
|
229
|
-
committed.each { |block|
|
230
|
-
block.name.must_equal expected_blocks.next[0]
|
231
|
-
block.type.must_equal :committed
|
232
|
-
block.size.must_equal 512
|
233
|
-
}
|
234
|
-
|
235
|
-
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :all, :snapshot => snapshot }
|
236
|
-
|
237
|
-
committed = result[:committed]
|
238
|
-
committed.length.must_equal 2
|
239
|
-
|
240
|
-
expected_blocks = blocklist.slice(0..1).each
|
241
|
-
|
242
|
-
committed.each { |block|
|
243
|
-
block.name.must_equal expected_blocks.next[0]
|
244
|
-
block.type.must_equal :committed
|
245
|
-
block.size.must_equal 512
|
246
|
-
}
|
247
|
-
|
248
|
-
# uncommitted blobs aren't copied in a snapshot.
|
249
|
-
uncommitted = result[:uncommitted]
|
250
|
-
uncommitted.length.must_equal 0
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end
|
254
|
-
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
|
+
require 'base64'
|
18
|
+
|
19
|
+
describe Azure::Blob::BlobService do
|
20
|
+
subject { Azure::Blob::BlobService.new }
|
21
|
+
after { TableNameHelper.clean }
|
22
|
+
|
23
|
+
let(:container_name) { ContainerNameHelper.name }
|
24
|
+
let(:blob_name) { "blobname" }
|
25
|
+
let(:content) { content = ""; 512.times.each{|i| content << "@" }; content }
|
26
|
+
before {
|
27
|
+
subject.create_container container_name
|
28
|
+
}
|
29
|
+
|
30
|
+
describe '#create_block_blob' do
|
31
|
+
it 'creates a page blob' do
|
32
|
+
blob = subject.create_block_blob container_name, blob_name, content
|
33
|
+
blob.name.must_equal blob_name
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'sets additional properties when the options hash is used' do
|
37
|
+
options = {
|
38
|
+
:content_type=>"application/xml",
|
39
|
+
:content_encoding=>"utf-8",
|
40
|
+
:content_language=>"en-US",
|
41
|
+
:cache_control=>"max-age=1296000",
|
42
|
+
:metadata => { "CustomMetadataProperty"=>"CustomMetadataValue"}
|
43
|
+
}
|
44
|
+
|
45
|
+
blob = subject.create_block_blob container_name, blob_name, content, options
|
46
|
+
blob = subject.get_blob_properties container_name, blob_name
|
47
|
+
blob.name.must_equal blob_name
|
48
|
+
blob.properties[:content_type].must_equal options[:content_type]
|
49
|
+
blob.properties[:content_encoding].must_equal options[:content_encoding]
|
50
|
+
blob.properties[:cache_control].must_equal options[:cache_control]
|
51
|
+
|
52
|
+
blob = subject.get_blob_metadata container_name, blob_name
|
53
|
+
blob.name.must_equal blob_name
|
54
|
+
blob.metadata["custommetadataproperty"].must_equal "CustomMetadataValue"
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'errors if the container does not exist' do
|
58
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
59
|
+
subject.create_block_blob ContainerNameHelper.name, blob_name, content
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#create_blob_block' do
|
65
|
+
let(:blockid) {"anyblockid1" }
|
66
|
+
|
67
|
+
it 'creates a block as part of a block blob' do
|
68
|
+
subject.create_blob_block container_name, blob_name, blockid, content
|
69
|
+
|
70
|
+
# verify
|
71
|
+
block_list = subject.list_blob_blocks container_name, blob_name
|
72
|
+
block = block_list[:uncommitted][0]
|
73
|
+
block.type.must_equal :uncommitted
|
74
|
+
block.size.must_equal 512
|
75
|
+
block.name.must_equal blockid
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#commit_blob_blocks' do
|
80
|
+
let(:blocklist) { [["anyblockid0"], ["anyblockid1"]] }
|
81
|
+
before {
|
82
|
+
blocklist.each { |block_entry|
|
83
|
+
subject.create_blob_block container_name, blob_name, block_entry[0], content
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
it 'commits a list of blocks to blob' do
|
88
|
+
# verify starting state
|
89
|
+
block_list = subject.list_blob_blocks container_name, blob_name
|
90
|
+
|
91
|
+
(0..1).each { |i|
|
92
|
+
block = block_list[:uncommitted][i]
|
93
|
+
block.type.must_equal :uncommitted
|
94
|
+
block.size.must_equal 512
|
95
|
+
block.name.must_equal blocklist[i][0]
|
96
|
+
}
|
97
|
+
|
98
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
99
|
+
subject.get_blob container_name, blob_name
|
100
|
+
end
|
101
|
+
|
102
|
+
# commit blocks
|
103
|
+
result = subject.commit_blob_blocks container_name, blob_name, blocklist
|
104
|
+
result.must_be_nil
|
105
|
+
|
106
|
+
blob, returned_content = subject.get_blob container_name, blob_name
|
107
|
+
blob.properties[:content_length].must_equal (content.length * 2)
|
108
|
+
returned_content.must_equal (content + content)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe '#list_blob_blocks' do
|
113
|
+
let(:blocklist) { [["anyblockid0"], ["anyblockid1"], ["anyblockid2"], ["anyblockid3"]] }
|
114
|
+
before {
|
115
|
+
|
116
|
+
subject.create_blob_block container_name, blob_name, blocklist[0][0], content
|
117
|
+
subject.create_blob_block container_name, blob_name, blocklist[1][0], content
|
118
|
+
|
119
|
+
# two committed blocks, two uncommitted blocks
|
120
|
+
result = subject.commit_blob_blocks container_name, blob_name, blocklist.slice(0..1)
|
121
|
+
result.must_be_nil
|
122
|
+
|
123
|
+
subject.create_blob_block container_name, blob_name, blocklist[2][0], content
|
124
|
+
subject.create_blob_block container_name, blob_name, blocklist[3][0], content
|
125
|
+
}
|
126
|
+
|
127
|
+
it 'lists blocks in a blob, including their status' do
|
128
|
+
result = subject.list_blob_blocks container_name, blob_name
|
129
|
+
|
130
|
+
committed = result[:committed]
|
131
|
+
committed.length.must_equal 2
|
132
|
+
|
133
|
+
expected_blocks = blocklist.slice(0..1).each
|
134
|
+
|
135
|
+
committed.each { |block|
|
136
|
+
block.name.must_equal expected_blocks.next[0]
|
137
|
+
block.type.must_equal :committed
|
138
|
+
block.size.must_equal 512
|
139
|
+
}
|
140
|
+
|
141
|
+
uncommitted = result[:uncommitted]
|
142
|
+
uncommitted.length.must_equal 2
|
143
|
+
|
144
|
+
expected_blocks = blocklist.slice(2..3).each
|
145
|
+
|
146
|
+
uncommitted.each { |block|
|
147
|
+
block.name.must_equal expected_blocks.next[0]
|
148
|
+
block.type.must_equal :uncommitted
|
149
|
+
block.size.must_equal 512
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
describe 'when blocklist_type parameter is used' do
|
154
|
+
it 'lists uncommitted blocks only if :uncommitted is passed' do
|
155
|
+
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :uncommitted }
|
156
|
+
|
157
|
+
committed = result[:committed]
|
158
|
+
committed.length.must_equal 0
|
159
|
+
|
160
|
+
uncommitted = result[:uncommitted]
|
161
|
+
uncommitted.length.must_equal 2
|
162
|
+
|
163
|
+
expected_blocks = blocklist.slice(2..3).each
|
164
|
+
|
165
|
+
uncommitted.each { |block|
|
166
|
+
block.name.must_equal expected_blocks.next[0]
|
167
|
+
block.type.must_equal :uncommitted
|
168
|
+
block.size.must_equal 512
|
169
|
+
}
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'lists committed blocks only if :committed is passed' do
|
173
|
+
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :committed }
|
174
|
+
|
175
|
+
committed = result[:committed]
|
176
|
+
committed.length.must_equal 2
|
177
|
+
|
178
|
+
expected_blocks = blocklist.slice(0..1).each
|
179
|
+
|
180
|
+
committed.each { |block|
|
181
|
+
block.name.must_equal expected_blocks.next[0]
|
182
|
+
block.type.must_equal :committed
|
183
|
+
block.size.must_equal 512
|
184
|
+
}
|
185
|
+
|
186
|
+
uncommitted = result[:uncommitted]
|
187
|
+
uncommitted.length.must_equal 0
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'lists committed and uncommitted blocks if :all is passed' do
|
191
|
+
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :all }
|
192
|
+
|
193
|
+
committed = result[:committed]
|
194
|
+
committed.length.must_equal 2
|
195
|
+
|
196
|
+
expected_blocks = blocklist.slice(0..1).each
|
197
|
+
|
198
|
+
committed.each { |block|
|
199
|
+
block.name.must_equal expected_blocks.next[0]
|
200
|
+
block.type.must_equal :committed
|
201
|
+
block.size.must_equal 512
|
202
|
+
}
|
203
|
+
|
204
|
+
uncommitted = result[:uncommitted]
|
205
|
+
uncommitted.length.must_equal 2
|
206
|
+
|
207
|
+
expected_blocks = blocklist.slice(2..3).each
|
208
|
+
|
209
|
+
uncommitted.each { |block|
|
210
|
+
block.name.must_equal expected_blocks.next[0]
|
211
|
+
block.type.must_equal :uncommitted
|
212
|
+
block.size.must_equal 512
|
213
|
+
}
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
describe 'when snapshot parameter is used' do
|
218
|
+
it 'lists blocks for the blob snapshot' do
|
219
|
+
snapshot = subject.create_blob_snapshot container_name, blob_name
|
220
|
+
|
221
|
+
result = subject.commit_blob_blocks container_name, blob_name, blocklist
|
222
|
+
result.must_be_nil
|
223
|
+
result = subject.list_blob_blocks container_name, blob_name
|
224
|
+
|
225
|
+
committed = result[:committed]
|
226
|
+
committed.length.must_equal 4
|
227
|
+
expected_blocks = blocklist.each
|
228
|
+
|
229
|
+
committed.each { |block|
|
230
|
+
block.name.must_equal expected_blocks.next[0]
|
231
|
+
block.type.must_equal :committed
|
232
|
+
block.size.must_equal 512
|
233
|
+
}
|
234
|
+
|
235
|
+
result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :all, :snapshot => snapshot }
|
236
|
+
|
237
|
+
committed = result[:committed]
|
238
|
+
committed.length.must_equal 2
|
239
|
+
|
240
|
+
expected_blocks = blocklist.slice(0..1).each
|
241
|
+
|
242
|
+
committed.each { |block|
|
243
|
+
block.name.must_equal expected_blocks.next[0]
|
244
|
+
block.type.must_equal :committed
|
245
|
+
block.size.must_equal 512
|
246
|
+
}
|
247
|
+
|
248
|
+
# uncommitted blobs aren't copied in a snapshot.
|
249
|
+
uncommitted = result[:uncommitted]
|
250
|
+
uncommitted.length.must_equal 0
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|