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,232 +1,232 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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
|
-
|
17
|
-
describe Azure::StorageManagement::Serialization do
|
18
|
-
subject { Azure::StorageManagement::Serialization }
|
19
|
-
|
20
|
-
let(:storage_services_from_xml) { Fixtures["list_storage_accounts"] }
|
21
|
-
|
22
|
-
describe "#storage_services_from_xml" do
|
23
|
-
|
24
|
-
it "accepts an XML string" do
|
25
|
-
subject.storage_services_from_xml Nokogiri::XML(storage_services_from_xml)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "returns an Array of StorageService instances" do
|
29
|
-
results = subject.storage_services_from_xml Nokogiri::XML(storage_services_from_xml)
|
30
|
-
results.must_be_kind_of Array
|
31
|
-
results[0].must_be_kind_of Azure::StorageManagement::StorageAccount
|
32
|
-
results.count.must_equal 2
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#storage_services_to_xml" do
|
37
|
-
let(:storage_service_name) {'storage-service'}
|
38
|
-
let(:storage_options) { {
|
39
|
-
:extended_properties=> {
|
40
|
-
:prop_1_name=>"prop_1_value"
|
41
|
-
},
|
42
|
-
:label=>"Test Label",
|
43
|
-
:geo_replication_enabled=>true
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
it "accepts an name and options hash" do
|
48
|
-
subject.storage_services_to_xml storage_service_name
|
49
|
-
end
|
50
|
-
|
51
|
-
it "serializes the argument to xml" do
|
52
|
-
results = subject.storage_services_to_xml(storage_service_name, :location => "West US")
|
53
|
-
doc = Nokogiri::XML results
|
54
|
-
doc.css('ServiceName').text.must_equal storage_service_name
|
55
|
-
doc.css('Location').text.must_equal "West US"
|
56
|
-
results.must_be_kind_of String
|
57
|
-
end
|
58
|
-
|
59
|
-
it "serializes the options hash to xml" do
|
60
|
-
results = subject.storage_services_to_xml(storage_service_name, {:location => 'East US'})
|
61
|
-
doc = Nokogiri::XML results
|
62
|
-
doc.css('Location').text.must_equal 'East US'
|
63
|
-
results.must_be_kind_of String
|
64
|
-
end
|
65
|
-
|
66
|
-
it "uses affinity_group from the hash instead of location" do
|
67
|
-
results = subject.storage_services_to_xml(storage_service_name, {:affinity_group_name => 'my-affinity-group', :location => 'East US'})
|
68
|
-
doc = Nokogiri::XML results
|
69
|
-
doc.css('AffinityGroup').text.must_equal 'my-affinity-group'
|
70
|
-
results.must_be_kind_of String
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'serializes geo_replication_enabled and extended_properties to xml' do
|
74
|
-
results = subject.storage_services_to_xml(
|
75
|
-
storage_service_name, storage_options
|
76
|
-
)
|
77
|
-
|
78
|
-
doc = Nokogiri::XML(results)
|
79
|
-
doc.css('GeoReplicationEnabled').text.must_equal(
|
80
|
-
"#{storage_options[:geo_replication_enabled]}"
|
81
|
-
)
|
82
|
-
doc.css('ExtendedProperties ExtendedProperty').size.must_equal(1)
|
83
|
-
doc.css('ExtendedProperties ExtendedProperty').first.css(
|
84
|
-
'Name'
|
85
|
-
).text.must_equal('prop_1_name')
|
86
|
-
doc.css('ExtendedProperties ExtendedProperty').first.css(
|
87
|
-
'Value'
|
88
|
-
).text.must_equal(storage_options[:extended_properties][:prop_1_name])
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'uses provided label instead of name for Label' do
|
92
|
-
options = {
|
93
|
-
label: 'My Label'
|
94
|
-
}
|
95
|
-
results = subject.storage_services_to_xml(storage_service_name, options)
|
96
|
-
doc = Nokogiri::XML(results)
|
97
|
-
Base64.decode64(doc.css('Label').text).must_equal(options[:label])
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'uses name for Label when label is not provided' do
|
101
|
-
results = subject.storage_services_to_xml(storage_service_name)
|
102
|
-
doc = Nokogiri::XML(results)
|
103
|
-
Base64.decode64(doc.css('Label').text).must_equal(storage_service_name)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "#storage_update_to_xml" do
|
108
|
-
nil_options = {
|
109
|
-
description: nil,
|
110
|
-
label: nil,
|
111
|
-
geo_replication_enabled: 'nil',
|
112
|
-
extended_properties: nil
|
113
|
-
}
|
114
|
-
|
115
|
-
let(:empty_options) { {
|
116
|
-
description: '',
|
117
|
-
label: '',
|
118
|
-
geo_replication_enabled: '',
|
119
|
-
extended_properties: ''
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
let(:partial_options_gre_bool) { {
|
124
|
-
label: 'label',
|
125
|
-
geo_replication_enabled: false
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
let(:partial_options_gre_string) { {
|
130
|
-
description: 'label',
|
131
|
-
geo_replication_enabled: 'false'
|
132
|
-
}
|
133
|
-
}
|
134
|
-
|
135
|
-
let(:options) { {
|
136
|
-
extended_properties: {
|
137
|
-
prop_1_name: 'prop_1_value'
|
138
|
-
},
|
139
|
-
description: 'Test Description',
|
140
|
-
label: 'Test Label',
|
141
|
-
geo_replication_enabled: true
|
142
|
-
}
|
143
|
-
}
|
144
|
-
|
145
|
-
let(:no_options_message) {'No options specified'}
|
146
|
-
let(:label_or_desc_required) { 'Either one of Label or Description has to be provided. Both cannot be empty' }
|
147
|
-
|
148
|
-
it "checks if the parameter is nil" do
|
149
|
-
exception = assert_raises RuntimeError do
|
150
|
-
subject.storage_update_to_xml nil
|
151
|
-
end
|
152
|
-
assert_match no_options_message, exception.message
|
153
|
-
end
|
154
|
-
|
155
|
-
it "checks if the parameter is empty" do
|
156
|
-
exception = assert_raises RuntimeError do
|
157
|
-
subject.storage_update_to_xml Hash.new
|
158
|
-
end
|
159
|
-
assert_match no_options_message, exception.message
|
160
|
-
end
|
161
|
-
|
162
|
-
it "checks if all options are nil" do
|
163
|
-
exception = assert_raises RuntimeError do
|
164
|
-
subject.storage_update_to_xml nil_options
|
165
|
-
end
|
166
|
-
assert_match label_or_desc_required, exception.message
|
167
|
-
end
|
168
|
-
|
169
|
-
it "checks if all options are empty" do
|
170
|
-
exception = assert_raises RuntimeError do
|
171
|
-
subject.storage_update_to_xml empty_options
|
172
|
-
end
|
173
|
-
assert_match label_or_desc_required, exception.message
|
174
|
-
end
|
175
|
-
|
176
|
-
it "returns xml for the partial options provided" do
|
177
|
-
storage_update_xml_string = subject.storage_update_to_xml partial_options_gre_bool
|
178
|
-
storage_update_xml_string.must_be_kind_of String
|
179
|
-
|
180
|
-
storage_update_xml = Nokogiri::XML storage_update_xml_string
|
181
|
-
storage_update_xml.css('Label').text.must_equal(Base64::encode64(partial_options_gre_bool[:label]))
|
182
|
-
storage_update_xml.css('GeoReplicationEnabled').text.must_equal "#{partial_options_gre_bool[:geo_replication_enabled]}"
|
183
|
-
|
184
|
-
storage_update_xml.css('Description').size.must_equal 0
|
185
|
-
storage_update_xml.css('ExtendedProperties').size.must_equal 0
|
186
|
-
end
|
187
|
-
|
188
|
-
it "returns xml for the partial options provided without gre" do
|
189
|
-
storage_update_xml_string = subject.storage_update_to_xml partial_options_gre_string
|
190
|
-
storage_update_xml_string.must_be_kind_of String
|
191
|
-
|
192
|
-
storage_update_xml = Nokogiri::XML storage_update_xml_string
|
193
|
-
storage_update_xml.css('Description').size.must_equal 1
|
194
|
-
storage_update_xml.css('Description').text.must_equal partial_options_gre_string[:description]
|
195
|
-
|
196
|
-
storage_update_xml.css('GeoReplicationEnabled').size.must_equal 0
|
197
|
-
|
198
|
-
storage_update_xml.css('ExtendedProperties').size.must_equal 0
|
199
|
-
end
|
200
|
-
|
201
|
-
it "returns xml for the options provided" do
|
202
|
-
update_xml_string = subject.storage_update_to_xml options
|
203
|
-
update_xml_string.must_be_kind_of String
|
204
|
-
|
205
|
-
update_xml = Nokogiri::XML update_xml_string
|
206
|
-
|
207
|
-
update_xml.css('Label').text.must_equal(Base64::encode64(options[:label]))
|
208
|
-
update_xml.css('GeoReplicationEnabled').size.must_equal 1
|
209
|
-
update_xml.css('GeoReplicationEnabled').text.must_equal "#{options[:geo_replication_enabled]}"
|
210
|
-
|
211
|
-
update_xml.css('ExtendedProperties ExtendedProperty').size.must_equal 1
|
212
|
-
update_xml.css('ExtendedProperties ExtendedProperty Name').text.must_equal "#{:prop_1_name}"
|
213
|
-
update_xml.css('ExtendedProperties ExtendedProperty Value').text.must_equal options[:extended_properties][:prop_1_name]
|
214
|
-
end
|
215
|
-
|
216
|
-
it "returns xml for options but with description in absence of label" do
|
217
|
-
options.delete(:label)
|
218
|
-
update_xml_string = subject.storage_update_to_xml(options)
|
219
|
-
update_xml_string.must_be_kind_of(String)
|
220
|
-
|
221
|
-
update_xml = Nokogiri::XML(update_xml_string)
|
222
|
-
|
223
|
-
update_xml.css('Description').text.must_equal(options[:description])
|
224
|
-
update_xml.css('GeoReplicationEnabled').size.must_equal(1)
|
225
|
-
update_xml.css('ExtendedProperties ExtendedProperty').size.must_equal(1)
|
226
|
-
update_xml.css('ExtendedProperties ExtendedProperty Name').text
|
227
|
-
.must_equal("#{:prop_1_name}")
|
228
|
-
update_xml.css('ExtendedProperties ExtendedProperty Value')
|
229
|
-
.text.must_equal(options[:extended_properties][:prop_1_name])
|
230
|
-
end
|
231
|
-
end
|
232
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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
|
+
|
17
|
+
describe Azure::StorageManagement::Serialization do
|
18
|
+
subject { Azure::StorageManagement::Serialization }
|
19
|
+
|
20
|
+
let(:storage_services_from_xml) { Fixtures["list_storage_accounts"] }
|
21
|
+
|
22
|
+
describe "#storage_services_from_xml" do
|
23
|
+
|
24
|
+
it "accepts an XML string" do
|
25
|
+
subject.storage_services_from_xml Nokogiri::XML(storage_services_from_xml)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns an Array of StorageService instances" do
|
29
|
+
results = subject.storage_services_from_xml Nokogiri::XML(storage_services_from_xml)
|
30
|
+
results.must_be_kind_of Array
|
31
|
+
results[0].must_be_kind_of Azure::StorageManagement::StorageAccount
|
32
|
+
results.count.must_equal 2
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#storage_services_to_xml" do
|
37
|
+
let(:storage_service_name) {'storage-service'}
|
38
|
+
let(:storage_options) { {
|
39
|
+
:extended_properties=> {
|
40
|
+
:prop_1_name=>"prop_1_value"
|
41
|
+
},
|
42
|
+
:label=>"Test Label",
|
43
|
+
:geo_replication_enabled=>true
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
it "accepts an name and options hash" do
|
48
|
+
subject.storage_services_to_xml storage_service_name
|
49
|
+
end
|
50
|
+
|
51
|
+
it "serializes the argument to xml" do
|
52
|
+
results = subject.storage_services_to_xml(storage_service_name, :location => "West US")
|
53
|
+
doc = Nokogiri::XML results
|
54
|
+
doc.css('ServiceName').text.must_equal storage_service_name
|
55
|
+
doc.css('Location').text.must_equal "West US"
|
56
|
+
results.must_be_kind_of String
|
57
|
+
end
|
58
|
+
|
59
|
+
it "serializes the options hash to xml" do
|
60
|
+
results = subject.storage_services_to_xml(storage_service_name, {:location => 'East US'})
|
61
|
+
doc = Nokogiri::XML results
|
62
|
+
doc.css('Location').text.must_equal 'East US'
|
63
|
+
results.must_be_kind_of String
|
64
|
+
end
|
65
|
+
|
66
|
+
it "uses affinity_group from the hash instead of location" do
|
67
|
+
results = subject.storage_services_to_xml(storage_service_name, {:affinity_group_name => 'my-affinity-group', :location => 'East US'})
|
68
|
+
doc = Nokogiri::XML results
|
69
|
+
doc.css('AffinityGroup').text.must_equal 'my-affinity-group'
|
70
|
+
results.must_be_kind_of String
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'serializes geo_replication_enabled and extended_properties to xml' do
|
74
|
+
results = subject.storage_services_to_xml(
|
75
|
+
storage_service_name, storage_options
|
76
|
+
)
|
77
|
+
|
78
|
+
doc = Nokogiri::XML(results)
|
79
|
+
doc.css('GeoReplicationEnabled').text.must_equal(
|
80
|
+
"#{storage_options[:geo_replication_enabled]}"
|
81
|
+
)
|
82
|
+
doc.css('ExtendedProperties ExtendedProperty').size.must_equal(1)
|
83
|
+
doc.css('ExtendedProperties ExtendedProperty').first.css(
|
84
|
+
'Name'
|
85
|
+
).text.must_equal('prop_1_name')
|
86
|
+
doc.css('ExtendedProperties ExtendedProperty').first.css(
|
87
|
+
'Value'
|
88
|
+
).text.must_equal(storage_options[:extended_properties][:prop_1_name])
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'uses provided label instead of name for Label' do
|
92
|
+
options = {
|
93
|
+
label: 'My Label'
|
94
|
+
}
|
95
|
+
results = subject.storage_services_to_xml(storage_service_name, options)
|
96
|
+
doc = Nokogiri::XML(results)
|
97
|
+
Base64.decode64(doc.css('Label').text).must_equal(options[:label])
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'uses name for Label when label is not provided' do
|
101
|
+
results = subject.storage_services_to_xml(storage_service_name)
|
102
|
+
doc = Nokogiri::XML(results)
|
103
|
+
Base64.decode64(doc.css('Label').text).must_equal(storage_service_name)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "#storage_update_to_xml" do
|
108
|
+
nil_options = {
|
109
|
+
description: nil,
|
110
|
+
label: nil,
|
111
|
+
geo_replication_enabled: 'nil',
|
112
|
+
extended_properties: nil
|
113
|
+
}
|
114
|
+
|
115
|
+
let(:empty_options) { {
|
116
|
+
description: '',
|
117
|
+
label: '',
|
118
|
+
geo_replication_enabled: '',
|
119
|
+
extended_properties: ''
|
120
|
+
}
|
121
|
+
}
|
122
|
+
|
123
|
+
let(:partial_options_gre_bool) { {
|
124
|
+
label: 'label',
|
125
|
+
geo_replication_enabled: false
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
let(:partial_options_gre_string) { {
|
130
|
+
description: 'label',
|
131
|
+
geo_replication_enabled: 'false'
|
132
|
+
}
|
133
|
+
}
|
134
|
+
|
135
|
+
let(:options) { {
|
136
|
+
extended_properties: {
|
137
|
+
prop_1_name: 'prop_1_value'
|
138
|
+
},
|
139
|
+
description: 'Test Description',
|
140
|
+
label: 'Test Label',
|
141
|
+
geo_replication_enabled: true
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
let(:no_options_message) {'No options specified'}
|
146
|
+
let(:label_or_desc_required) { 'Either one of Label or Description has to be provided. Both cannot be empty' }
|
147
|
+
|
148
|
+
it "checks if the parameter is nil" do
|
149
|
+
exception = assert_raises RuntimeError do
|
150
|
+
subject.storage_update_to_xml nil
|
151
|
+
end
|
152
|
+
assert_match no_options_message, exception.message
|
153
|
+
end
|
154
|
+
|
155
|
+
it "checks if the parameter is empty" do
|
156
|
+
exception = assert_raises RuntimeError do
|
157
|
+
subject.storage_update_to_xml Hash.new
|
158
|
+
end
|
159
|
+
assert_match no_options_message, exception.message
|
160
|
+
end
|
161
|
+
|
162
|
+
it "checks if all options are nil" do
|
163
|
+
exception = assert_raises RuntimeError do
|
164
|
+
subject.storage_update_to_xml nil_options
|
165
|
+
end
|
166
|
+
assert_match label_or_desc_required, exception.message
|
167
|
+
end
|
168
|
+
|
169
|
+
it "checks if all options are empty" do
|
170
|
+
exception = assert_raises RuntimeError do
|
171
|
+
subject.storage_update_to_xml empty_options
|
172
|
+
end
|
173
|
+
assert_match label_or_desc_required, exception.message
|
174
|
+
end
|
175
|
+
|
176
|
+
it "returns xml for the partial options provided" do
|
177
|
+
storage_update_xml_string = subject.storage_update_to_xml partial_options_gre_bool
|
178
|
+
storage_update_xml_string.must_be_kind_of String
|
179
|
+
|
180
|
+
storage_update_xml = Nokogiri::XML storage_update_xml_string
|
181
|
+
storage_update_xml.css('Label').text.must_equal(Base64::encode64(partial_options_gre_bool[:label]))
|
182
|
+
storage_update_xml.css('GeoReplicationEnabled').text.must_equal "#{partial_options_gre_bool[:geo_replication_enabled]}"
|
183
|
+
|
184
|
+
storage_update_xml.css('Description').size.must_equal 0
|
185
|
+
storage_update_xml.css('ExtendedProperties').size.must_equal 0
|
186
|
+
end
|
187
|
+
|
188
|
+
it "returns xml for the partial options provided without gre" do
|
189
|
+
storage_update_xml_string = subject.storage_update_to_xml partial_options_gre_string
|
190
|
+
storage_update_xml_string.must_be_kind_of String
|
191
|
+
|
192
|
+
storage_update_xml = Nokogiri::XML storage_update_xml_string
|
193
|
+
storage_update_xml.css('Description').size.must_equal 1
|
194
|
+
storage_update_xml.css('Description').text.must_equal partial_options_gre_string[:description]
|
195
|
+
|
196
|
+
storage_update_xml.css('GeoReplicationEnabled').size.must_equal 0
|
197
|
+
|
198
|
+
storage_update_xml.css('ExtendedProperties').size.must_equal 0
|
199
|
+
end
|
200
|
+
|
201
|
+
it "returns xml for the options provided" do
|
202
|
+
update_xml_string = subject.storage_update_to_xml options
|
203
|
+
update_xml_string.must_be_kind_of String
|
204
|
+
|
205
|
+
update_xml = Nokogiri::XML update_xml_string
|
206
|
+
|
207
|
+
update_xml.css('Label').text.must_equal(Base64::encode64(options[:label]))
|
208
|
+
update_xml.css('GeoReplicationEnabled').size.must_equal 1
|
209
|
+
update_xml.css('GeoReplicationEnabled').text.must_equal "#{options[:geo_replication_enabled]}"
|
210
|
+
|
211
|
+
update_xml.css('ExtendedProperties ExtendedProperty').size.must_equal 1
|
212
|
+
update_xml.css('ExtendedProperties ExtendedProperty Name').text.must_equal "#{:prop_1_name}"
|
213
|
+
update_xml.css('ExtendedProperties ExtendedProperty Value').text.must_equal options[:extended_properties][:prop_1_name]
|
214
|
+
end
|
215
|
+
|
216
|
+
it "returns xml for options but with description in absence of label" do
|
217
|
+
options.delete(:label)
|
218
|
+
update_xml_string = subject.storage_update_to_xml(options)
|
219
|
+
update_xml_string.must_be_kind_of(String)
|
220
|
+
|
221
|
+
update_xml = Nokogiri::XML(update_xml_string)
|
222
|
+
|
223
|
+
update_xml.css('Description').text.must_equal(options[:description])
|
224
|
+
update_xml.css('GeoReplicationEnabled').size.must_equal(1)
|
225
|
+
update_xml.css('ExtendedProperties ExtendedProperty').size.must_equal(1)
|
226
|
+
update_xml.css('ExtendedProperties ExtendedProperty Name').text
|
227
|
+
.must_equal("#{:prop_1_name}")
|
228
|
+
update_xml.css('ExtendedProperties ExtendedProperty Value')
|
229
|
+
.text.must_equal(options[:extended_properties][:prop_1_name])
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|