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,293 +1,293 @@
|
|
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 "test_helper"
|
16
|
-
require "azure/service/storage_service"
|
17
|
-
require "azure/core/http/http_request"
|
18
|
-
require "azure/core/http/signer_filter"
|
19
|
-
require "azure/service/storage_service_properties"
|
20
|
-
|
21
|
-
describe Azure::Service::StorageService do
|
22
|
-
|
23
|
-
let(:uri){ URI.parse "http://dummy.uri/resource" }
|
24
|
-
let(:method){ :get }
|
25
|
-
|
26
|
-
subject do
|
27
|
-
storage_service = Azure::Service::StorageService.new
|
28
|
-
storage_service.host = "http://dumyhost.uri"
|
29
|
-
storage_service
|
30
|
-
end
|
31
|
-
|
32
|
-
describe "#call" do
|
33
|
-
let(:mock_request){ mock() }
|
34
|
-
let(:mock_signer_filter){ mock() }
|
35
|
-
|
36
|
-
before do
|
37
|
-
Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, nil).returns(mock_request)
|
38
|
-
Azure::Core::Http::SignerFilter.stubs(:new).returns(mock_signer_filter)
|
39
|
-
|
40
|
-
mock_request.expects(:call)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "adds a SignerFilter to the HTTP pipeline" do
|
44
|
-
mock_request.expects(:with_filter).with(mock_signer_filter)
|
45
|
-
subject.call(method, uri)
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "when passed the optional headers arguement" do
|
49
|
-
before do
|
50
|
-
mock_request.expects(:with_filter).with(mock_signer_filter)
|
51
|
-
end
|
52
|
-
|
53
|
-
let(:mock_headers) {{
|
54
|
-
"Other-Header"=>"SomeValue",
|
55
|
-
"Custom-Header"=>"PreviousValue",
|
56
|
-
"connection"=>"PreviousValue"
|
57
|
-
}}
|
58
|
-
|
59
|
-
it "merges the custom headers with the HttpRequest headers" do
|
60
|
-
mock_request.expects(:headers).returns(mock_headers).at_least(2)
|
61
|
-
subject.call(method, uri, nil, { "Custom-Header"=>"CustomValue"} )
|
62
|
-
|
63
|
-
mock_headers["Other-Header"].must_equal "SomeValue"
|
64
|
-
mock_headers["Custom-Header"].must_equal "CustomValue"
|
65
|
-
mock_headers["connection"].must_equal "keep-alive"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe "when passed the optional body arguement" do
|
70
|
-
before do
|
71
|
-
mock_request.expects(:with_filter).with(mock_signer_filter)
|
72
|
-
end
|
73
|
-
|
74
|
-
it "passes the body to the to HttpRequest" do
|
75
|
-
Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, 'body').returns(mock_request)
|
76
|
-
subject.call(method, uri, "body")
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "when with_filter was called" do
|
81
|
-
before do
|
82
|
-
mock_request.expects(:with_filter).with(mock_signer_filter)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "builds the HTTP pipeline by passing the filters to the HTTPRequest" do
|
86
|
-
filter = mock()
|
87
|
-
filter1 = mock()
|
88
|
-
|
89
|
-
subject.with_filter filter
|
90
|
-
subject.with_filter filter1
|
91
|
-
|
92
|
-
mock_request.expects(:with_filter).with(filter)
|
93
|
-
mock_request.expects(:with_filter).with(filter1)
|
94
|
-
|
95
|
-
subject.call(method, uri)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
describe "#with_filter" do
|
101
|
-
it "appends filters to a list of filters that will be used in the #call method" do
|
102
|
-
initial_length = subject.filters.length
|
103
|
-
filter = mock()
|
104
|
-
subject.with_filter filter
|
105
|
-
subject.filters.length.must_equal initial_length + 1
|
106
|
-
end
|
107
|
-
|
108
|
-
it "accepts object instances as filters" do
|
109
|
-
filter = mock()
|
110
|
-
subject.with_filter filter
|
111
|
-
subject.filters.last.must_equal filter
|
112
|
-
end
|
113
|
-
|
114
|
-
it "accepts blocks as filters" do
|
115
|
-
subject.with_filter do |a,b| end
|
116
|
-
subject.filters.last.class.must_equal Proc
|
117
|
-
end
|
118
|
-
|
119
|
-
it "preserves the order of the filters" do
|
120
|
-
subject.filters = []
|
121
|
-
|
122
|
-
filter = mock()
|
123
|
-
filter1 = mock()
|
124
|
-
|
125
|
-
subject.with_filter filter
|
126
|
-
subject.with_filter filter1
|
127
|
-
subject.with_filter do |a,b| end
|
128
|
-
|
129
|
-
subject.filters.first.must_equal filter
|
130
|
-
subject.filters[1].must_equal filter1
|
131
|
-
subject.filters.last.class.must_equal Proc
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
describe "#get_service_properties" do
|
136
|
-
let(:service_properties_xml) { Fixtures["storage_service_properties"] }
|
137
|
-
let(:service_properties) { Azure::Service::StorageServiceProperties.new }
|
138
|
-
let(:response) {
|
139
|
-
response = mock()
|
140
|
-
response.stubs(:body).returns(service_properties_xml)
|
141
|
-
response
|
142
|
-
}
|
143
|
-
|
144
|
-
let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
|
145
|
-
let(:service_properties_headers) { {"x-ms-version" => "2013-08-15"} }
|
146
|
-
|
147
|
-
before do
|
148
|
-
Azure::Service::Serialization.stubs(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
|
149
|
-
subject.stubs(:service_properties_uri).returns(service_properties_uri)
|
150
|
-
subject.stubs(:call).with(:get, service_properties_uri, nil, service_properties_headers).returns(response)
|
151
|
-
end
|
152
|
-
|
153
|
-
it "calls the service_properties_uri method to determine the correct uri" do
|
154
|
-
subject.expects(:service_properties_uri).returns(service_properties_uri)
|
155
|
-
subject.get_service_properties
|
156
|
-
end
|
157
|
-
|
158
|
-
it "gets the response from the HTTP API" do
|
159
|
-
subject.expects(:call).with(:get, service_properties_uri, nil, service_properties_headers).returns(response)
|
160
|
-
subject.get_service_properties
|
161
|
-
end
|
162
|
-
|
163
|
-
it "deserializes the response from xml" do
|
164
|
-
Azure::Service::Serialization.expects(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
|
165
|
-
subject.get_service_properties
|
166
|
-
end
|
167
|
-
|
168
|
-
it "returns a StorageServiceProperties instance" do
|
169
|
-
result = subject.get_service_properties
|
170
|
-
result.must_be_kind_of Azure::Service::StorageServiceProperties
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
describe "#set_service_properties" do
|
175
|
-
let(:service_properties_xml) { Fixtures["storage_service_properties"] }
|
176
|
-
let(:service_properties) { Azure::Service::StorageServiceProperties.new }
|
177
|
-
let(:response) {
|
178
|
-
response = mock()
|
179
|
-
response.stubs(:success?).returns(true)
|
180
|
-
response
|
181
|
-
}
|
182
|
-
|
183
|
-
let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
|
184
|
-
let(:service_properties_headers) { {"x-ms-version" => "2013-08-15"} }
|
185
|
-
|
186
|
-
before do
|
187
|
-
Azure::Service::Serialization.stubs(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
|
188
|
-
subject.stubs(:service_properties_uri).returns(service_properties_uri)
|
189
|
-
subject.stubs(:call).with(:put, service_properties_uri, service_properties_xml, service_properties_headers).returns(response)
|
190
|
-
end
|
191
|
-
|
192
|
-
it "calls the service_properties_uri method to determine the correct uri" do
|
193
|
-
subject.expects(:service_properties_uri).returns(service_properties_uri)
|
194
|
-
subject.set_service_properties service_properties
|
195
|
-
end
|
196
|
-
|
197
|
-
it "posts to the HTTP API" do
|
198
|
-
subject.expects(:call).with(:put, service_properties_uri, service_properties_xml, service_properties_headers).returns(response)
|
199
|
-
subject.set_service_properties service_properties
|
200
|
-
end
|
201
|
-
|
202
|
-
it "serializes the StorageServiceProperties object to xml" do
|
203
|
-
Azure::Service::Serialization.expects(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
|
204
|
-
subject.set_service_properties service_properties
|
205
|
-
end
|
206
|
-
|
207
|
-
it "returns nil on success" do
|
208
|
-
result = subject.set_service_properties service_properties
|
209
|
-
result.must_equal nil
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
describe "service_properties_uri" do
|
214
|
-
it "returns an instance of URI" do
|
215
|
-
subject.service_properties_uri.must_be_kind_of URI
|
216
|
-
end
|
217
|
-
|
218
|
-
it "uses the value of the host property as the base of the url" do
|
219
|
-
subject.service_properties_uri.to_s.must_include subject.host
|
220
|
-
subject.host = "http://something.else"
|
221
|
-
subject.service_properties_uri.to_s.must_include subject.host
|
222
|
-
end
|
223
|
-
|
224
|
-
it "sets a query string that specifies the storage service properties endpoint" do
|
225
|
-
subject.service_properties_uri.query.must_include "restype=service&comp=properties"
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
describe "#add_metadata_to_headers" do
|
230
|
-
it "prefixes header names with x-ms-meta- but does not modify the values" do
|
231
|
-
headers = {}
|
232
|
-
subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
|
233
|
-
headers.keys.must_include "x-ms-meta-Foo"
|
234
|
-
headers["x-ms-meta-Foo"].must_equal "Bar"
|
235
|
-
end
|
236
|
-
|
237
|
-
it "updates any existing x-ms-meta-* headers with the new values" do
|
238
|
-
headers = { "x-ms-meta-Foo"=> "Foo"}
|
239
|
-
subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
|
240
|
-
headers["x-ms-meta-Foo"].must_equal "Bar"
|
241
|
-
end
|
242
|
-
end
|
243
|
-
|
244
|
-
describe "#generate_uri" do
|
245
|
-
it "returns a URI instance" do
|
246
|
-
subject.generate_uri().must_be_kind_of ::URI
|
247
|
-
end
|
248
|
-
|
249
|
-
describe "when called with no arguments" do
|
250
|
-
it "returns the StorageService host URL" do
|
251
|
-
subject.generate_uri().to_s.must_equal "http://dumyhost.uri/"
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
describe "when passed an optional path" do
|
256
|
-
it "adds the path to the host url" do
|
257
|
-
subject.generate_uri("resource/entity/").path.must_equal "/resource/entity/"
|
258
|
-
end
|
259
|
-
|
260
|
-
it "correctly joins the path if the host url contained a path" do
|
261
|
-
subject.host = "http://dummy.uri/host/path"
|
262
|
-
subject.generate_uri("resource/entity/").path.must_equal "/host/path/resource/entity/"
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
|
-
describe "when passed an Hash of query parameters" do
|
267
|
-
|
268
|
-
it "encodes the keys" do
|
269
|
-
subject.generate_uri('',{"key !" => "value"}).query.must_include "key+%21=value"
|
270
|
-
end
|
271
|
-
|
272
|
-
it "encodes the values" do
|
273
|
-
subject.generate_uri('',{"key" => "value !"}).query.must_include "key=value+%21"
|
274
|
-
end
|
275
|
-
|
276
|
-
it "sets the query string to the encoded result" do
|
277
|
-
subject.generate_uri('',{ "key" => "value !", "key !"=>"value"}).query.must_equal "key=value+%21&key+%21=value"
|
278
|
-
end
|
279
|
-
|
280
|
-
describe "when the query parameters include a timeout key" do
|
281
|
-
it "overrides the default timeout" do
|
282
|
-
subject.generate_uri('', {"timeout" => 45}).query.must_equal "timeout=45"
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
describe "when the query parameters are nil" do
|
287
|
-
it "does not include any query parameters" do
|
288
|
-
subject.generate_uri('', nil).query.must_equal nil
|
289
|
-
end
|
290
|
-
end
|
291
|
-
end
|
292
|
-
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 "test_helper"
|
16
|
+
require "azure/service/storage_service"
|
17
|
+
require "azure/core/http/http_request"
|
18
|
+
require "azure/core/http/signer_filter"
|
19
|
+
require "azure/service/storage_service_properties"
|
20
|
+
|
21
|
+
describe Azure::Service::StorageService do
|
22
|
+
|
23
|
+
let(:uri){ URI.parse "http://dummy.uri/resource" }
|
24
|
+
let(:method){ :get }
|
25
|
+
|
26
|
+
subject do
|
27
|
+
storage_service = Azure::Service::StorageService.new
|
28
|
+
storage_service.host = "http://dumyhost.uri"
|
29
|
+
storage_service
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#call" do
|
33
|
+
let(:mock_request){ mock() }
|
34
|
+
let(:mock_signer_filter){ mock() }
|
35
|
+
|
36
|
+
before do
|
37
|
+
Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, nil).returns(mock_request)
|
38
|
+
Azure::Core::Http::SignerFilter.stubs(:new).returns(mock_signer_filter)
|
39
|
+
|
40
|
+
mock_request.expects(:call)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "adds a SignerFilter to the HTTP pipeline" do
|
44
|
+
mock_request.expects(:with_filter).with(mock_signer_filter)
|
45
|
+
subject.call(method, uri)
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "when passed the optional headers arguement" do
|
49
|
+
before do
|
50
|
+
mock_request.expects(:with_filter).with(mock_signer_filter)
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:mock_headers) {{
|
54
|
+
"Other-Header"=>"SomeValue",
|
55
|
+
"Custom-Header"=>"PreviousValue",
|
56
|
+
"connection"=>"PreviousValue"
|
57
|
+
}}
|
58
|
+
|
59
|
+
it "merges the custom headers with the HttpRequest headers" do
|
60
|
+
mock_request.expects(:headers).returns(mock_headers).at_least(2)
|
61
|
+
subject.call(method, uri, nil, { "Custom-Header"=>"CustomValue"} )
|
62
|
+
|
63
|
+
mock_headers["Other-Header"].must_equal "SomeValue"
|
64
|
+
mock_headers["Custom-Header"].must_equal "CustomValue"
|
65
|
+
mock_headers["connection"].must_equal "keep-alive"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "when passed the optional body arguement" do
|
70
|
+
before do
|
71
|
+
mock_request.expects(:with_filter).with(mock_signer_filter)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "passes the body to the to HttpRequest" do
|
75
|
+
Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, 'body').returns(mock_request)
|
76
|
+
subject.call(method, uri, "body")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "when with_filter was called" do
|
81
|
+
before do
|
82
|
+
mock_request.expects(:with_filter).with(mock_signer_filter)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "builds the HTTP pipeline by passing the filters to the HTTPRequest" do
|
86
|
+
filter = mock()
|
87
|
+
filter1 = mock()
|
88
|
+
|
89
|
+
subject.with_filter filter
|
90
|
+
subject.with_filter filter1
|
91
|
+
|
92
|
+
mock_request.expects(:with_filter).with(filter)
|
93
|
+
mock_request.expects(:with_filter).with(filter1)
|
94
|
+
|
95
|
+
subject.call(method, uri)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "#with_filter" do
|
101
|
+
it "appends filters to a list of filters that will be used in the #call method" do
|
102
|
+
initial_length = subject.filters.length
|
103
|
+
filter = mock()
|
104
|
+
subject.with_filter filter
|
105
|
+
subject.filters.length.must_equal initial_length + 1
|
106
|
+
end
|
107
|
+
|
108
|
+
it "accepts object instances as filters" do
|
109
|
+
filter = mock()
|
110
|
+
subject.with_filter filter
|
111
|
+
subject.filters.last.must_equal filter
|
112
|
+
end
|
113
|
+
|
114
|
+
it "accepts blocks as filters" do
|
115
|
+
subject.with_filter do |a,b| end
|
116
|
+
subject.filters.last.class.must_equal Proc
|
117
|
+
end
|
118
|
+
|
119
|
+
it "preserves the order of the filters" do
|
120
|
+
subject.filters = []
|
121
|
+
|
122
|
+
filter = mock()
|
123
|
+
filter1 = mock()
|
124
|
+
|
125
|
+
subject.with_filter filter
|
126
|
+
subject.with_filter filter1
|
127
|
+
subject.with_filter do |a,b| end
|
128
|
+
|
129
|
+
subject.filters.first.must_equal filter
|
130
|
+
subject.filters[1].must_equal filter1
|
131
|
+
subject.filters.last.class.must_equal Proc
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "#get_service_properties" do
|
136
|
+
let(:service_properties_xml) { Fixtures["storage_service_properties"] }
|
137
|
+
let(:service_properties) { Azure::Service::StorageServiceProperties.new }
|
138
|
+
let(:response) {
|
139
|
+
response = mock()
|
140
|
+
response.stubs(:body).returns(service_properties_xml)
|
141
|
+
response
|
142
|
+
}
|
143
|
+
|
144
|
+
let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
|
145
|
+
let(:service_properties_headers) { {"x-ms-version" => "2013-08-15"} }
|
146
|
+
|
147
|
+
before do
|
148
|
+
Azure::Service::Serialization.stubs(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
|
149
|
+
subject.stubs(:service_properties_uri).returns(service_properties_uri)
|
150
|
+
subject.stubs(:call).with(:get, service_properties_uri, nil, service_properties_headers).returns(response)
|
151
|
+
end
|
152
|
+
|
153
|
+
it "calls the service_properties_uri method to determine the correct uri" do
|
154
|
+
subject.expects(:service_properties_uri).returns(service_properties_uri)
|
155
|
+
subject.get_service_properties
|
156
|
+
end
|
157
|
+
|
158
|
+
it "gets the response from the HTTP API" do
|
159
|
+
subject.expects(:call).with(:get, service_properties_uri, nil, service_properties_headers).returns(response)
|
160
|
+
subject.get_service_properties
|
161
|
+
end
|
162
|
+
|
163
|
+
it "deserializes the response from xml" do
|
164
|
+
Azure::Service::Serialization.expects(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
|
165
|
+
subject.get_service_properties
|
166
|
+
end
|
167
|
+
|
168
|
+
it "returns a StorageServiceProperties instance" do
|
169
|
+
result = subject.get_service_properties
|
170
|
+
result.must_be_kind_of Azure::Service::StorageServiceProperties
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
describe "#set_service_properties" do
|
175
|
+
let(:service_properties_xml) { Fixtures["storage_service_properties"] }
|
176
|
+
let(:service_properties) { Azure::Service::StorageServiceProperties.new }
|
177
|
+
let(:response) {
|
178
|
+
response = mock()
|
179
|
+
response.stubs(:success?).returns(true)
|
180
|
+
response
|
181
|
+
}
|
182
|
+
|
183
|
+
let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
|
184
|
+
let(:service_properties_headers) { {"x-ms-version" => "2013-08-15"} }
|
185
|
+
|
186
|
+
before do
|
187
|
+
Azure::Service::Serialization.stubs(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
|
188
|
+
subject.stubs(:service_properties_uri).returns(service_properties_uri)
|
189
|
+
subject.stubs(:call).with(:put, service_properties_uri, service_properties_xml, service_properties_headers).returns(response)
|
190
|
+
end
|
191
|
+
|
192
|
+
it "calls the service_properties_uri method to determine the correct uri" do
|
193
|
+
subject.expects(:service_properties_uri).returns(service_properties_uri)
|
194
|
+
subject.set_service_properties service_properties
|
195
|
+
end
|
196
|
+
|
197
|
+
it "posts to the HTTP API" do
|
198
|
+
subject.expects(:call).with(:put, service_properties_uri, service_properties_xml, service_properties_headers).returns(response)
|
199
|
+
subject.set_service_properties service_properties
|
200
|
+
end
|
201
|
+
|
202
|
+
it "serializes the StorageServiceProperties object to xml" do
|
203
|
+
Azure::Service::Serialization.expects(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
|
204
|
+
subject.set_service_properties service_properties
|
205
|
+
end
|
206
|
+
|
207
|
+
it "returns nil on success" do
|
208
|
+
result = subject.set_service_properties service_properties
|
209
|
+
result.must_equal nil
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
describe "service_properties_uri" do
|
214
|
+
it "returns an instance of URI" do
|
215
|
+
subject.service_properties_uri.must_be_kind_of URI
|
216
|
+
end
|
217
|
+
|
218
|
+
it "uses the value of the host property as the base of the url" do
|
219
|
+
subject.service_properties_uri.to_s.must_include subject.host
|
220
|
+
subject.host = "http://something.else"
|
221
|
+
subject.service_properties_uri.to_s.must_include subject.host
|
222
|
+
end
|
223
|
+
|
224
|
+
it "sets a query string that specifies the storage service properties endpoint" do
|
225
|
+
subject.service_properties_uri.query.must_include "restype=service&comp=properties"
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
describe "#add_metadata_to_headers" do
|
230
|
+
it "prefixes header names with x-ms-meta- but does not modify the values" do
|
231
|
+
headers = {}
|
232
|
+
subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
|
233
|
+
headers.keys.must_include "x-ms-meta-Foo"
|
234
|
+
headers["x-ms-meta-Foo"].must_equal "Bar"
|
235
|
+
end
|
236
|
+
|
237
|
+
it "updates any existing x-ms-meta-* headers with the new values" do
|
238
|
+
headers = { "x-ms-meta-Foo"=> "Foo"}
|
239
|
+
subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
|
240
|
+
headers["x-ms-meta-Foo"].must_equal "Bar"
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
describe "#generate_uri" do
|
245
|
+
it "returns a URI instance" do
|
246
|
+
subject.generate_uri().must_be_kind_of ::URI
|
247
|
+
end
|
248
|
+
|
249
|
+
describe "when called with no arguments" do
|
250
|
+
it "returns the StorageService host URL" do
|
251
|
+
subject.generate_uri().to_s.must_equal "http://dumyhost.uri/"
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
describe "when passed an optional path" do
|
256
|
+
it "adds the path to the host url" do
|
257
|
+
subject.generate_uri("resource/entity/").path.must_equal "/resource/entity/"
|
258
|
+
end
|
259
|
+
|
260
|
+
it "correctly joins the path if the host url contained a path" do
|
261
|
+
subject.host = "http://dummy.uri/host/path"
|
262
|
+
subject.generate_uri("resource/entity/").path.must_equal "/host/path/resource/entity/"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
describe "when passed an Hash of query parameters" do
|
267
|
+
|
268
|
+
it "encodes the keys" do
|
269
|
+
subject.generate_uri('',{"key !" => "value"}).query.must_include "key+%21=value"
|
270
|
+
end
|
271
|
+
|
272
|
+
it "encodes the values" do
|
273
|
+
subject.generate_uri('',{"key" => "value !"}).query.must_include "key=value+%21"
|
274
|
+
end
|
275
|
+
|
276
|
+
it "sets the query string to the encoded result" do
|
277
|
+
subject.generate_uri('',{ "key" => "value !", "key !"=>"value"}).query.must_equal "key=value+%21&key+%21=value"
|
278
|
+
end
|
279
|
+
|
280
|
+
describe "when the query parameters include a timeout key" do
|
281
|
+
it "overrides the default timeout" do
|
282
|
+
subject.generate_uri('', {"timeout" => 45}).query.must_equal "timeout=45"
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
describe "when the query parameters are nil" do
|
287
|
+
it "does not include any query parameters" do
|
288
|
+
subject.generate_uri('', nil).query.must_equal nil
|
289
|
+
end
|
290
|
+
end
|
291
|
+
end
|
292
|
+
end
|
293
293
|
end
|