azure 0.1.1 → 0.5.0
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 +7 -0
- data/.gitignore +6 -0
- data/ChangeLog.txt +5 -0
- data/Gemfile +16 -3
- data/README.md +344 -2
- data/Rakefile +66 -37
- data/azure.gemspec +30 -11
- data/lib/azure.rb +35 -4
- data/lib/azure/blob/blob.rb +32 -0
- data/lib/azure/blob/blob_service.rb +1423 -0
- data/lib/azure/blob/block.rb +31 -0
- data/lib/azure/blob/container.rb +32 -0
- data/lib/azure/blob/serialization.rb +285 -0
- data/lib/azure/core.rb +32 -0
- data/lib/azure/core/auth/authorizer.rb +36 -0
- data/lib/azure/core/auth/shared_key.rb +21 -6
- data/lib/azure/core/auth/shared_key_lite.rb +17 -3
- data/lib/azure/core/auth/signer.rb +48 -0
- data/lib/azure/core/configuration.rb +152 -0
- data/lib/azure/core/error.rb +22 -0
- data/lib/azure/core/filtered_service.rb +44 -0
- data/lib/azure/core/http/debug_filter.rb +36 -0
- data/lib/azure/core/http/http_error.rb +84 -0
- data/lib/azure/core/http/http_filter.rb +53 -0
- data/lib/azure/core/http/http_request.rb +157 -0
- data/lib/azure/core/http/http_response.rb +133 -0
- data/lib/azure/core/http/retry_policy.rb +68 -0
- data/lib/azure/core/http/signer_filter.rb +34 -0
- data/lib/azure/core/service.rb +38 -32
- data/lib/azure/core/signed_service.rb +43 -0
- data/lib/azure/queue/message.rb +30 -0
- data/lib/azure/queue/queue.rb +29 -0
- data/lib/azure/queue/queue_service.rb +568 -0
- data/lib/azure/queue/serialization.rb +103 -0
- data/lib/azure/service/access_policy.rb +26 -0
- data/lib/azure/service/enumeration_results.rb +21 -0
- data/lib/azure/service/logging.rb +32 -0
- data/lib/azure/service/metrics.rb +31 -0
- data/lib/azure/service/retention_policy.rb +25 -0
- data/lib/azure/service/serialization.rb +240 -0
- data/lib/azure/service/signed_identifier.rb +30 -0
- data/lib/azure/service/storage_service.rb +79 -0
- data/lib/azure/service/storage_service_properties.rb +32 -0
- data/lib/azure/service_bus/action.rb +21 -0
- data/lib/azure/service_bus/auth/wrap_service.rb +59 -46
- data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
- data/lib/azure/service_bus/brokered_message.rb +36 -51
- data/lib/azure/service_bus/brokered_message_serializer.rb +48 -34
- data/lib/azure/service_bus/correlation_filter.rb +45 -0
- data/lib/azure/service_bus/empty_rule_action.rb +30 -0
- data/lib/azure/service_bus/false_filter.rb +38 -0
- data/lib/azure/service_bus/filter.rb +21 -0
- data/lib/azure/{core/utils → service_bus}/interval.rb +29 -22
- data/lib/azure/service_bus/queue.rb +230 -0
- data/lib/azure/service_bus/resource.rb +109 -0
- data/lib/azure/service_bus/rule.rb +98 -0
- data/lib/azure/service_bus/rule_aspect.rb +34 -0
- data/lib/azure/service_bus/serialization.rb +160 -0
- data/lib/azure/service_bus/service_bus_service.rb +819 -12
- data/lib/azure/service_bus/sql_filter.rb +50 -0
- data/lib/azure/service_bus/sql_rule_action.rb +50 -0
- data/lib/azure/service_bus/subscription.rb +184 -0
- data/lib/azure/service_bus/topic.rb +187 -0
- data/lib/azure/service_bus/true_filter.rb +38 -0
- data/lib/azure/{tables → table}/auth/shared_key.rb +33 -12
- data/lib/azure/table/auth/shared_key_lite.rb +44 -0
- data/lib/azure/table/batch.rb +330 -0
- data/lib/azure/table/batch_response.rb +117 -0
- data/lib/azure/table/edmtype.rb +127 -0
- data/lib/azure/table/entity.rb +31 -0
- data/lib/azure/table/guid.rb +24 -0
- data/lib/azure/table/query.rb +112 -0
- data/lib/azure/table/serialization.rb +105 -0
- data/lib/azure/table/table_service.rb +557 -0
- data/lib/azure/version.rb +31 -0
- data/test/fixtures/container_acl.xml +11 -0
- data/test/fixtures/{error.xml → http_error.xml} +0 -0
- data/test/fixtures/list_blobs.xml +121 -0
- data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
- data/test/fixtures/list_blocks_all.xml +23 -0
- data/test/fixtures/list_blocks_committed.xml +13 -0
- data/test/fixtures/list_containers.xml +38 -0
- data/test/fixtures/list_page_ranges.xml +11 -0
- data/test/fixtures/logging.xml +11 -0
- data/test/fixtures/metrics.xml +10 -0
- data/test/fixtures/queues.xml +1 -1
- data/test/fixtures/retention_policy.xml +5 -0
- data/test/fixtures/storage_service_properties.xml +23 -0
- data/test/integration/blob/blob_metadata_test.rb +75 -0
- data/test/integration/blob/blob_pages_test.rb +119 -0
- data/test/integration/blob/blob_properties_test.rb +77 -0
- data/test/integration/blob/block_blob_test.rb +254 -0
- data/test/integration/blob/container/container_acl_test.rb +69 -0
- data/test/integration/blob/container/container_metadata_test.rb +50 -0
- data/test/integration/blob/container/create_container_test.rb +60 -0
- data/test/integration/blob/container/delete_container_test.rb +39 -0
- data/test/integration/blob/container/get_container_properties_test.rb +48 -0
- data/test/integration/blob/container/list_containers_test.rb +79 -0
- data/test/integration/blob/container/root_container_test.rb +50 -0
- data/test/integration/blob/copy_blob_test.rb +113 -0
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
- data/test/integration/blob/create_page_blob_test.rb +83 -0
- data/test/integration/blob/delete_blob_test.rb +159 -0
- data/test/integration/blob/get_blob_test.rb +65 -0
- data/test/integration/blob/informative_errors_test.rb +39 -0
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
- data/test/integration/blob/lease/break_lease_test.rb +40 -0
- data/test/integration/blob/lease/release_lease_test.rb +40 -0
- data/test/integration/blob/lease/renew_lease_test.rb +42 -0
- data/test/integration/blob/list_blobs_test.rb +113 -0
- data/test/integration/queue/clear_messages_test.rb +42 -0
- data/test/integration/queue/create_message_test.rb +75 -0
- data/test/integration/queue/create_queue_test.rb +50 -0
- data/test/integration/queue/delete_message_test.rb +67 -0
- data/test/integration/queue/delete_queue_test.rb +45 -0
- data/test/integration/queue/informative_errors_test.rb +42 -0
- data/test/integration/queue/list_messages_encoded_test.rb +79 -0
- data/test/integration/queue/list_messages_test.rb +79 -0
- data/test/integration/queue/list_queues_test.rb +44 -0
- data/test/integration/queue/peek_messages_test.rb +59 -0
- data/test/integration/queue/queue_metadata_test.rb +40 -0
- data/test/integration/queue/update_message_test.rb +74 -0
- data/test/integration/service_bus/informative_errors_test.rb +37 -0
- data/test/integration/service_bus/queues_scenario_test.rb +200 -0
- data/test/integration/service_bus/queues_test.rb +266 -0
- data/test/integration/service_bus/rules_test.rb +145 -0
- data/test/integration/service_bus/scenario_test.rb +102 -0
- data/test/integration/service_bus/subscriptions_test.rb +211 -0
- data/test/integration/service_bus/topics_scenario_test.rb +406 -0
- data/test/integration/service_bus/topics_test.rb +129 -0
- data/test/integration/table/create_table_test.rb +36 -0
- data/test/integration/table/delete_entity_batch_test.rb +107 -0
- data/test/integration/table/delete_entity_test.rb +94 -0
- data/test/integration/table/delete_table_test.rb +40 -0
- data/test/integration/table/get_table_test.rb +37 -0
- data/test/integration/table/informative_errors_test.rb +39 -0
- data/test/integration/table/insert_entity_batch_test.rb +100 -0
- data/test/integration/table/insert_entity_test.rb +88 -0
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
- data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
- data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
- data/test/integration/table/merge_entity_batch_test.rb +128 -0
- data/test/integration/table/merge_entity_test.rb +113 -0
- data/test/integration/table/query_entities_test.rb +195 -0
- data/test/integration/table/query_tables_test.rb +43 -0
- data/test/integration/table/query_test.rb +251 -0
- data/test/integration/table/table_acl_test.rb +52 -0
- data/test/integration/table/update_entity_batch_test.rb +149 -0
- data/test/integration/table/update_entity_test.rb +131 -0
- data/test/integration/test_helper.rb +23 -9
- data/test/support/env.rb +15 -1
- data/test/support/fixtures.rb +14 -0
- data/test/support/name_generator.rb +74 -0
- data/test/support/stubs.rb +14 -0
- data/test/test_helper.rb +43 -3
- data/test/unit/blob/blob_service_test.rb +1947 -0
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
- data/test/unit/core/auth/shared_key_test.rb +58 -0
- data/test/unit/core/auth/signer_test.rb +30 -0
- data/test/unit/core/http/http_error_test.rb +57 -0
- data/test/unit/core/http/http_request_test.rb +66 -0
- data/test/unit/core/http/http_response_test.rb +45 -0
- data/test/unit/service/serialization_test.rb +502 -0
- data/test/unit/service/storage_service_test.rb +291 -0
- data/test/unit/table/edmtype_test.rb +108 -0
- metadata +231 -230
- data/Gemfile.lock +0 -36
- data/lib/azure/atom.rb +0 -170
- data/lib/azure/auth.rb +0 -29
- data/lib/azure/blobs.rb +0 -620
- data/lib/azure/blobs/blob.rb +0 -360
- data/lib/azure/blobs/container.rb +0 -209
- data/lib/azure/blobs/service.rb +0 -396
- data/lib/azure/blobs/shared_access_signature.rb +0 -84
- data/lib/azure/blobs/uri.rb +0 -60
- data/lib/azure/configuration.rb +0 -121
- data/lib/azure/core/collection.rb +0 -118
- data/lib/azure/core/signer.rb +0 -32
- data/lib/azure/core/utils/queryable.rb +0 -74
- data/lib/azure/core/utils/storage_service_properties.rb +0 -83
- data/lib/azure/core/utils/string.rb +0 -59
- data/lib/azure/error.rb +0 -72
- data/lib/azure/queues.rb +0 -272
- data/lib/azure/queues/message.rb +0 -174
- data/lib/azure/queues/queue.rb +0 -187
- data/lib/azure/queues/service.rb +0 -263
- data/lib/azure/queues/service_properties.rb +0 -152
- data/lib/azure/queues/uri.rb +0 -78
- data/lib/azure/request.rb +0 -102
- data/lib/azure/response.rb +0 -93
- data/lib/azure/service_bus.rb +0 -4
- data/lib/azure/service_bus/auth/authorizer.rb +0 -22
- data/lib/azure/service_bus/auth/uri.rb +0 -52
- data/lib/azure/service_bus/auth/wrap.rb +0 -37
- data/lib/azure/service_bus/auth/wrap_token.rb +0 -45
- data/lib/azure/service_bus/auth/wrap_token_manager.rb +0 -46
- data/lib/azure/service_bus/queues.rb +0 -194
- data/lib/azure/service_bus/queues/queue.rb +0 -100
- data/lib/azure/service_bus/queues/queue_serializer.rb +0 -51
- data/lib/azure/service_bus/queues/service.rb +0 -154
- data/lib/azure/service_bus/queues/uri.rb +0 -80
- data/lib/azure/service_bus/rules.rb +0 -110
- data/lib/azure/service_bus/rules/rule.rb +0 -97
- data/lib/azure/service_bus/rules/service.rb +0 -122
- data/lib/azure/service_bus/rules/uri.rb +0 -39
- data/lib/azure/service_bus/subscriptions.rb +0 -170
- data/lib/azure/service_bus/subscriptions/service.rb +0 -133
- data/lib/azure/service_bus/subscriptions/subscription.rb +0 -164
- data/lib/azure/service_bus/subscriptions/subscription_serializer.rb +0 -74
- data/lib/azure/service_bus/subscriptions/uri.rb +0 -71
- data/lib/azure/service_bus/topics.rb +0 -120
- data/lib/azure/service_bus/topics/service.rb +0 -98
- data/lib/azure/service_bus/topics/topic.rb +0 -122
- data/lib/azure/service_bus/topics/topic_serializer.rb +0 -44
- data/lib/azure/service_bus/topics/uri.rb +0 -58
- data/lib/azure/service_runtime/client/goal_state_pipe_monitor.rb +0 -21
- data/lib/azure/service_runtime/client/goal_state_protocol.rb +0 -18
- data/lib/azure/service_runtime/client/runtime_client.rb +0 -135
- data/lib/azure/service_runtime/deployment.rb +0 -24
- data/lib/azure/service_runtime/local_resource.rb +0 -15
- data/lib/azure/service_runtime/role.rb +0 -17
- data/lib/azure/service_runtime/role_environment.rb +0 -206
- data/lib/azure/service_runtime/role_environment_change.rb +0 -32
- data/lib/azure/service_runtime/role_instance.rb +0 -35
- data/lib/azure/service_runtime/role_instance_endpoint.rb +0 -14
- data/lib/azure/tables.rb +0 -215
- data/lib/azure/tables/auth/shared_key_lite.rb +0 -30
- data/lib/azure/tables/entities_collection.rb +0 -66
- data/lib/azure/tables/entity.rb +0 -127
- data/lib/azure/tables/service.rb +0 -211
- data/lib/azure/tables/table.rb +0 -129
- data/lib/azure/tables/tables_collection.rb +0 -62
- data/lib/azure/tables/types.rb +0 -65
- data/lib/azure/tables/uri.rb +0 -62
- data/test/integration/blobs/auth_test.rb +0 -19
- data/test/integration/blobs/blob_test.rb +0 -61
- data/test/integration/blobs/clear_page_range_test.rb +0 -19
- data/test/integration/blobs/copy_test.rb +0 -33
- data/test/integration/blobs/create_blobs_test.rb +0 -51
- data/test/integration/blobs/create_container_test.rb +0 -13
- data/test/integration/blobs/create_snapshot_test.rb +0 -17
- data/test/integration/blobs/delete_blob_snapshots_test.rb +0 -19
- data/test/integration/blobs/delete_blobs_test.rb +0 -25
- data/test/integration/blobs/delete_container_test.rb +0 -24
- data/test/integration/blobs/delete_snapshot_test.rb +0 -17
- data/test/integration/blobs/get_blob_snapshot_test.rb +0 -18
- data/test/integration/blobs/get_blobs_test.rb +0 -31
- data/test/integration/blobs/get_page_range_test.rb +0 -19
- data/test/integration/blobs/list_blobs_test.rb +0 -39
- data/test/integration/blobs/list_containers_test.rb +0 -28
- data/test/integration/blobs/manage_blob_leases_test.rb +0 -45
- data/test/integration/blobs/manage_blob_metadata_test.rb +0 -51
- data/test/integration/blobs/manage_blob_properties_test.rb +0 -25
- data/test/integration/blobs/manage_blob_service_properties_test.rb +0 -38
- data/test/integration/blobs/manage_container_metadata_test.rb +0 -46
- data/test/integration/blobs/manage_container_permissions_test.rb +0 -17
- data/test/integration/blobs/update_page_range_test.rb +0 -20
- data/test/integration/queues/clear_messages_test.rb +0 -22
- data/test/integration/queues/create_queue_test.rb +0 -13
- data/test/integration/queues/delete_message_test.rb +0 -42
- data/test/integration/queues/delete_queue_test.rb +0 -24
- data/test/integration/queues/get_messages_test.rb +0 -39
- data/test/integration/queues/list_queues_test.rb +0 -43
- data/test/integration/queues/manage_queue_metadata_test.rb +0 -45
- data/test/integration/queues/manage_queue_service_properties_test.rb +0 -27
- data/test/integration/queues/peek_messages_test.rb +0 -55
- data/test/integration/queues/put_message_test.rb +0 -31
- data/test/integration/queues/update_message_test.rb +0 -46
- data/test/integration/service_bus/auth_test.rb +0 -18
- data/test/integration/service_bus/queues/create_queue_test.rb +0 -25
- data/test/integration/service_bus/queues/delete_message_from_queue_test.rb +0 -29
- data/test/integration/service_bus/queues/delete_queue_test.rb +0 -25
- data/test/integration/service_bus/queues/get_queue_test.rb +0 -23
- data/test/integration/service_bus/queues/list_queues_test.rb +0 -39
- data/test/integration/service_bus/queues/peek_message_from_queue_test.rb +0 -34
- data/test/integration/service_bus/queues/read_and_delete_message_from_queue_test.rb +0 -31
- data/test/integration/service_bus/queues/send_message_to_queue_test.rb +0 -22
- data/test/integration/service_bus/queues/unlock_message_from_queue_test.rb +0 -36
- data/test/integration/service_bus/rules/create_rule_test.rb +0 -19
- data/test/integration/service_bus/rules/delete_rule_test.rb +0 -17
- data/test/integration/service_bus/rules/get_rule_test.rb +0 -21
- data/test/integration/service_bus/rules/list_rules_test.rb +0 -24
- data/test/integration/service_bus/rules/rule_test.rb +0 -16
- data/test/integration/service_bus/subscriptions/create_subscription_test.rb +0 -25
- data/test/integration/service_bus/subscriptions/delete_message_from_subscription_test.rb +0 -31
- data/test/integration/service_bus/subscriptions/delete_subscription_test.rb +0 -30
- data/test/integration/service_bus/subscriptions/fetch_subscription_test.rb +0 -28
- data/test/integration/service_bus/subscriptions/list_subscriptions_test.rb +0 -23
- data/test/integration/service_bus/subscriptions/peek_lock_message_from_subscription_test.rb +0 -42
- data/test/integration/service_bus/subscriptions/read_delete_message_from_subscription_test.rb +0 -36
- data/test/integration/service_bus/subscriptions/subscription_test.rb +0 -31
- data/test/integration/service_bus/subscriptions/unlock_message_from_subscription_test.rb +0 -43
- data/test/integration/service_bus/topics/create_topic_test.rb +0 -25
- data/test/integration/service_bus/topics/delete_topic_test.rb +0 -25
- data/test/integration/service_bus/topics/get_topic_test.rb +0 -23
- data/test/integration/service_bus/topics/list_topics_test.rb +0 -39
- data/test/integration/service_bus/topics/send_message_to_topic_test.rb +0 -23
- data/test/integration/tables/auth_test.rb +0 -29
- data/test/integration/tables/creating_tables_test.rb +0 -16
- data/test/integration/tables/delete_entity_test.rb +0 -39
- data/test/integration/tables/deleting_table_test.rb +0 -22
- data/test/integration/tables/insert_entity_test.rb +0 -23
- data/test/integration/tables/merge_entity_test.rb +0 -28
- data/test/integration/tables/query_entities_test.rb +0 -131
- data/test/integration/tables/query_tables_test.rb +0 -63
- data/test/integration/tables/update_entity_test.rb +0 -54
- data/test/support/blobs.rb +0 -12
- data/test/support/table_names.rb +0 -44
- data/test/unit/atom_test.rb +0 -58
- data/test/unit/auth_test.rb +0 -24
- data/test/unit/blobs/blob_test.rb +0 -5
- data/test/unit/blobs/container_test.rb +0 -67
- data/test/unit/blobs/service_test.rb +0 -17
- data/test/unit/blobs/shared_access_signature_test.rb +0 -66
- data/test/unit/blobs_test.rb +0 -156
- data/test/unit/core/service_test.rb +0 -57
- data/test/unit/core/utils/interval_test.rb +0 -70
- data/test/unit/core/utils/queryable_test.rb +0 -69
- data/test/unit/core/utils/storage_service_properties_test.rb +0 -66
- data/test/unit/error_test.rb +0 -39
- data/test/unit/queues/message_test.rb +0 -40
- data/test/unit/queues/queue_test.rb +0 -64
- data/test/unit/queues/service_properties.rb +0 -35
- data/test/unit/request_test.rb +0 -38
- data/test/unit/response_test.rb +0 -43
- data/test/unit/service_bus/auth/authorizer_test.rb +0 -27
- data/test/unit/service_bus/auth/wrap_token_test.rb +0 -28
- data/test/unit/service_bus/queues/queue_test.rb +0 -38
- data/test/unit/service_bus/topics/topic_test.rb +0 -33
- data/test/unit/service_runtime/data/goalstate.xml +0 -9
- data/test/unit/service_runtime/data/roleenvironmentdata.xml +0 -29
- data/test/unit/service_runtime/data/runtime.xml +0 -6
- data/test/unit/service_runtime/role_environment_test.rb +0 -144
- data/test/unit/tables/auth/shared_key_lite_test.rb +0 -39
- data/test/unit/tables/auth/shared_key_test.rb +0 -45
- data/test/unit/tables/entities_collection_test.rb +0 -39
- data/test/unit/tables/entity_test.rb +0 -72
- data/test/unit/tables/table_test.rb +0 -57
- data/test/unit/tables_test.rb +0 -302
- data/test/unit/types_test.rb +0 -67
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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
|
+
|
|
21
|
+
describe '#renew_lease' do
|
|
22
|
+
let(:container_name) { ContainerNameHelper.name }
|
|
23
|
+
let(:blob_name) { "blobname" }
|
|
24
|
+
let(:length) { 1024 }
|
|
25
|
+
before {
|
|
26
|
+
subject.create_container container_name
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
it 'should be possible to renew a lease' do
|
|
30
|
+
subject.create_page_blob container_name, blob_name, length
|
|
31
|
+
|
|
32
|
+
lease_id = subject.acquire_lease container_name, blob_name
|
|
33
|
+
lease_id.wont_be_nil
|
|
34
|
+
|
|
35
|
+
new_lease_id = subject.renew_lease container_name, blob_name, lease_id
|
|
36
|
+
new_lease_id.wont_be_nil
|
|
37
|
+
|
|
38
|
+
# renewing a lease returns the same lease id
|
|
39
|
+
new_lease_id.must_equal lease_id
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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 '#list_blobs' do
|
|
23
|
+
let(:container_name) { ContainerNameHelper.name }
|
|
24
|
+
let(:blob_names) { ["blobname0","blobname1","blobname2","blobname3"] }
|
|
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
|
+
blob_names.each { |blob_name|
|
|
32
|
+
subject.create_block_blob container_name, blob_name, content, options
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
it 'lists the available blobs' do
|
|
37
|
+
result = subject.list_blobs container_name
|
|
38
|
+
result.length.must_equal blob_names.length
|
|
39
|
+
expected_blob_names = blob_names.each
|
|
40
|
+
result.each { |blob|
|
|
41
|
+
blob.name.must_equal expected_blob_names.next
|
|
42
|
+
blob.properties[:content_length].must_equal content.length
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it 'lists the available blobs with prefix' do
|
|
47
|
+
result = subject.list_blobs container_name, { :prefix => "blobname0" }
|
|
48
|
+
result.length.must_equal 1
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'lists the available blobs with max results and marker ' do
|
|
52
|
+
result = subject.list_blobs container_name, { :max_results => 2 }
|
|
53
|
+
result.length.must_equal 2
|
|
54
|
+
first_blob = result[0]
|
|
55
|
+
result.continuation_token.wont_equal("")
|
|
56
|
+
|
|
57
|
+
result = subject.list_blobs container_name, { :max_results => 2, :marker => result.continuation_token }
|
|
58
|
+
result.length.must_equal 2
|
|
59
|
+
result[0].name.wont_equal first_blob.name
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe 'when options hash is used' do
|
|
63
|
+
it 'if :metadata is set true, also returns custom metadata for the blobs' do
|
|
64
|
+
result = subject.list_blobs container_name, { :metadata => true }
|
|
65
|
+
result.length.must_equal blob_names.length
|
|
66
|
+
expected_blob_names = blob_names.each
|
|
67
|
+
|
|
68
|
+
result.each { |blob|
|
|
69
|
+
blob.name.must_equal expected_blob_names.next
|
|
70
|
+
blob.properties[:content_length].must_equal content.length
|
|
71
|
+
|
|
72
|
+
metadata.each { |k,v|
|
|
73
|
+
blob.metadata.must_include k.downcase
|
|
74
|
+
blob.metadata[k.downcase].must_equal v
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'if :snapshots is set true, also returns snapshots' do
|
|
80
|
+
snapshot = subject.create_blob_snapshot container_name, blob_names[0]
|
|
81
|
+
|
|
82
|
+
# verify snapshots aren't returned on a normal call
|
|
83
|
+
result = subject.list_blobs container_name
|
|
84
|
+
result.length.must_equal blob_names.length
|
|
85
|
+
|
|
86
|
+
result = subject.list_blobs container_name, { :snapshots => true }
|
|
87
|
+
result.length.must_equal blob_names.length + 1
|
|
88
|
+
found_snapshot = false
|
|
89
|
+
result.each { |blob|
|
|
90
|
+
found_snapshot = true if blob.name == blob_names[0] and blob.snapshot == snapshot
|
|
91
|
+
}
|
|
92
|
+
found_snapshot.must_equal true
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it 'if :uncommittedblobs is set true, also returns blobs with uploaded, uncommitted blocks' do
|
|
96
|
+
# uncommited blob/block
|
|
97
|
+
subject.create_blob_block container_name, "blockblobname", "blockid", content
|
|
98
|
+
|
|
99
|
+
# verify uncommitted blobs aren't returned on a normal call
|
|
100
|
+
result = subject.list_blobs container_name
|
|
101
|
+
result.length.must_equal blob_names.length
|
|
102
|
+
|
|
103
|
+
result = subject.list_blobs container_name, { :uncommittedblobs => true }
|
|
104
|
+
result.length.must_equal blob_names.length + 1
|
|
105
|
+
found_uncommitted = true
|
|
106
|
+
result.each { |blob|
|
|
107
|
+
found_uncommitted = true if blob.name == "blockblobname"
|
|
108
|
+
}
|
|
109
|
+
found_uncommitted.must_equal true
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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/queue/queue_service"
|
|
17
|
+
|
|
18
|
+
describe Azure::Queue::QueueService do
|
|
19
|
+
subject { Azure::Queue::QueueService.new }
|
|
20
|
+
|
|
21
|
+
describe '#clear_messages' do
|
|
22
|
+
let(:queue_name){ QueueNameHelper.name }
|
|
23
|
+
before {
|
|
24
|
+
subject.create_queue queue_name
|
|
25
|
+
subject.create_message queue_name, "some random text " + QueueNameHelper.name
|
|
26
|
+
}
|
|
27
|
+
after { QueueNameHelper.clean }
|
|
28
|
+
|
|
29
|
+
it "clears the queue" do
|
|
30
|
+
result = subject.clear_messages queue_name
|
|
31
|
+
result.must_be_nil
|
|
32
|
+
result = subject.peek_messages queue_name
|
|
33
|
+
result.must_be_empty
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "errors on an non-existent queue" do
|
|
37
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
38
|
+
subject.clear_messages QueueNameHelper.name
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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/queue/queue_service"
|
|
17
|
+
|
|
18
|
+
describe Azure::Queue::QueueService do
|
|
19
|
+
subject { Azure::Queue::QueueService.new }
|
|
20
|
+
|
|
21
|
+
describe '#create_message' do
|
|
22
|
+
let(:queue_name){ QueueNameHelper.name }
|
|
23
|
+
let(:message_text) { "message text random value: #{QueueNameHelper.name}" }
|
|
24
|
+
before { subject.create_queue queue_name }
|
|
25
|
+
after { QueueNameHelper.clean }
|
|
26
|
+
|
|
27
|
+
it "creates a message in the specified queue and returns nil on success" do
|
|
28
|
+
result = subject.create_message(queue_name, message_text)
|
|
29
|
+
result.must_be_nil
|
|
30
|
+
|
|
31
|
+
result = subject.peek_messages queue_name
|
|
32
|
+
result.wont_be_nil
|
|
33
|
+
result.wont_be_empty
|
|
34
|
+
result.length.must_equal 1
|
|
35
|
+
result[0].message_text.must_equal message_text
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "when the options hash is used" do
|
|
39
|
+
let(:visibility_timeout) { 3 }
|
|
40
|
+
let(:message_ttl) { 600 }
|
|
41
|
+
|
|
42
|
+
it "the :visibility_timeout option causes the message to be invisible for a period of time" do
|
|
43
|
+
result = subject.create_message(queue_name, message_text, { :visibility_timeout=> visibility_timeout })
|
|
44
|
+
result.must_be_nil
|
|
45
|
+
|
|
46
|
+
result = subject.peek_messages queue_name
|
|
47
|
+
result.length.must_equal 0
|
|
48
|
+
sleep(visibility_timeout)
|
|
49
|
+
|
|
50
|
+
result = subject.peek_messages queue_name
|
|
51
|
+
result.length.must_equal 1
|
|
52
|
+
result.wont_be_empty
|
|
53
|
+
result[0].message_text.must_equal message_text
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "the :message_ttl option modifies the expiration_date of the message" do
|
|
57
|
+
result = subject.create_message(queue_name, message_text, { :message_ttl=> message_ttl })
|
|
58
|
+
result.must_be_nil
|
|
59
|
+
|
|
60
|
+
result = subject.peek_messages queue_name
|
|
61
|
+
result.wont_be_nil
|
|
62
|
+
result.wont_be_empty
|
|
63
|
+
message = result[0]
|
|
64
|
+
message.message_text.must_equal message_text
|
|
65
|
+
Time.parse(message.expiration_time).to_i.must_equal Time.parse(message.insertion_time).to_i + message_ttl
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "errors on an non-existent queue" do
|
|
70
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
71
|
+
subject.create_message QueueNameHelper.name, message_text
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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/queue/queue_service"
|
|
17
|
+
require "azure/core/http/http_error"
|
|
18
|
+
|
|
19
|
+
describe Azure::Queue::QueueService do
|
|
20
|
+
subject { Azure::Queue::QueueService.new }
|
|
21
|
+
|
|
22
|
+
describe '#create_queue' do
|
|
23
|
+
let(:queue_name){ QueueNameHelper.name }
|
|
24
|
+
let(:metadata){ {"custommetadata" => "CustomMetadataValue"} }
|
|
25
|
+
after { QueueNameHelper.clean }
|
|
26
|
+
|
|
27
|
+
it "creates a queue with a valid name" do
|
|
28
|
+
result = subject.create_queue queue_name
|
|
29
|
+
result.must_be_nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "creates a queue with a valid name and metadata" do
|
|
33
|
+
result = subject.create_queue queue_name, { :metadata => metadata }
|
|
34
|
+
result.must_be_nil
|
|
35
|
+
|
|
36
|
+
message_count, queue_metadata = subject.get_queue_metadata queue_name
|
|
37
|
+
|
|
38
|
+
metadata.each { |k,v|
|
|
39
|
+
queue_metadata.must_include k
|
|
40
|
+
queue_metadata[k].must_equal v
|
|
41
|
+
}
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "errors on an invalid queue name" do
|
|
45
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
46
|
+
subject.create_queue "this_queue.cannot-exist!"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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/queue/queue_service"
|
|
17
|
+
|
|
18
|
+
describe Azure::Queue::QueueService do
|
|
19
|
+
subject { Azure::Queue::QueueService.new }
|
|
20
|
+
|
|
21
|
+
describe '#delete_message' do
|
|
22
|
+
let(:queue_name){ QueueNameHelper.name }
|
|
23
|
+
before {
|
|
24
|
+
subject.create_queue queue_name
|
|
25
|
+
subject.create_message queue_name, "some random text " + QueueNameHelper.name
|
|
26
|
+
}
|
|
27
|
+
after { QueueNameHelper.clean }
|
|
28
|
+
|
|
29
|
+
it "deletes a message" do
|
|
30
|
+
messages = subject.list_messages queue_name, 500
|
|
31
|
+
messages.length.must_equal 1
|
|
32
|
+
message = messages.first
|
|
33
|
+
|
|
34
|
+
result = subject.delete_message queue_name, message.id, message.pop_receipt
|
|
35
|
+
result.must_be_nil
|
|
36
|
+
|
|
37
|
+
result = subject.peek_messages queue_name
|
|
38
|
+
result.must_be_empty
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "errors on an non-existent queue" do
|
|
42
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
43
|
+
subject.delete_message QueueNameHelper.name, "message.id", "message.pop_receipt"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "errors on an non-existent message id" do
|
|
48
|
+
messages = subject.list_messages queue_name, 500
|
|
49
|
+
messages.length.must_equal 1
|
|
50
|
+
message = messages.first
|
|
51
|
+
|
|
52
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
53
|
+
subject.delete_message queue_name, "bad.message.id", message.pop_receipt
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "errors on an non-existent pop_receipt" do
|
|
58
|
+
messages = subject.list_messages queue_name, 500
|
|
59
|
+
messages.length.must_equal 1
|
|
60
|
+
message = messages.first
|
|
61
|
+
|
|
62
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
63
|
+
subject.delete_message queue_name, message.id, "bad.message.pop_receipt"
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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/queue/queue_service"
|
|
17
|
+
|
|
18
|
+
describe Azure::Queue::QueueService do
|
|
19
|
+
subject { Azure::Queue::QueueService.new }
|
|
20
|
+
|
|
21
|
+
describe '#delete_queue' do
|
|
22
|
+
let(:queue_name){ QueueNameHelper.name }
|
|
23
|
+
before { subject.create_queue queue_name }
|
|
24
|
+
after { QueueNameHelper.clean }
|
|
25
|
+
|
|
26
|
+
it "deletes a queue and returns nil on success" do
|
|
27
|
+
result = subject.delete_queue(queue_name)
|
|
28
|
+
result.must_be_nil
|
|
29
|
+
result = subject.list_queues
|
|
30
|
+
result.each { |q| q.name.wont_equal queue_name }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "errors on an non-existent queue" do
|
|
34
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
35
|
+
subject.delete_queue QueueNameHelper.name
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "errors on an invalid queue" do
|
|
40
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
|
41
|
+
subject.delete_queue "this_queue.cannot-exist!"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft. 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 "azure/core/http/http_error"
|
|
18
|
+
|
|
19
|
+
require "integration/test_helper"
|
|
20
|
+
require "azure/queue/queue_service"
|
|
21
|
+
require "azure/core/http/http_error"
|
|
22
|
+
|
|
23
|
+
describe Azure::Queue::QueueService do
|
|
24
|
+
subject { Azure::Queue::QueueService.new }
|
|
25
|
+
|
|
26
|
+
describe '#informative_errors_queue' do
|
|
27
|
+
let(:queue_name){ QueueNameHelper.name }
|
|
28
|
+
after { QueueNameHelper.clean }
|
|
29
|
+
|
|
30
|
+
it "exception message should be valid" do
|
|
31
|
+
# getting metadata from a non existent should throw
|
|
32
|
+
begin
|
|
33
|
+
subject.get_queue_metadata queue_name
|
|
34
|
+
flunk "No exception"
|
|
35
|
+
rescue Azure::Core::Http::HTTPError => error
|
|
36
|
+
error.status_code.must_equal 404
|
|
37
|
+
error.type.must_equal "QueueNotFound"
|
|
38
|
+
error.description.start_with?("The specified queue does not exist.").must_equal true
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|