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.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -11
  3. data/.travis.yml +10 -10
  4. data/ChangeLog.txt +70 -68
  5. data/Gemfile +15 -15
  6. data/README.md +618 -618
  7. data/Rakefile +133 -133
  8. data/azure.gemspec +44 -44
  9. data/lib/azure.rb +52 -52
  10. data/lib/azure/base_management/affinity_group.rb +32 -32
  11. data/lib/azure/base_management/base_management_service.rb +304 -304
  12. data/lib/azure/base_management/location.rb +27 -27
  13. data/lib/azure/base_management/management_http_request.rb +171 -171
  14. data/lib/azure/base_management/serialization.rb +129 -129
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -45
  16. data/lib/azure/blob/blob.rb +31 -31
  17. data/lib/azure/blob/blob_service.rb +1423 -1423
  18. data/lib/azure/blob/block.rb +30 -30
  19. data/lib/azure/blob/container.rb +31 -31
  20. data/lib/azure/blob/serialization.rb +284 -284
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -38
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -140
  23. data/lib/azure/cloud_service_management/serialization.rb +117 -117
  24. data/lib/azure/core.rb +39 -39
  25. data/lib/azure/core/auth/authorizer.rb +36 -36
  26. data/lib/azure/core/auth/shared_key.rb +110 -110
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -48
  28. data/lib/azure/core/auth/signer.rb +48 -48
  29. data/lib/azure/core/configuration.rb +211 -211
  30. data/lib/azure/core/error.rb +22 -22
  31. data/lib/azure/core/filtered_service.rb +43 -43
  32. data/lib/azure/core/http/debug_filter.rb +35 -35
  33. data/lib/azure/core/http/http_error.rb +88 -88
  34. data/lib/azure/core/http/http_filter.rb +52 -52
  35. data/lib/azure/core/http/http_request.rb +157 -157
  36. data/lib/azure/core/http/http_response.rb +140 -140
  37. data/lib/azure/core/http/retry_policy.rb +73 -73
  38. data/lib/azure/core/http/signer_filter.rb +33 -33
  39. data/lib/azure/core/service.rb +62 -62
  40. data/lib/azure/core/signed_service.rb +42 -42
  41. data/lib/azure/core/utility.rb +190 -190
  42. data/lib/azure/queue/message.rb +29 -29
  43. data/lib/azure/queue/queue.rb +28 -28
  44. data/lib/azure/queue/queue_service.rb +567 -567
  45. data/lib/azure/queue/serialization.rb +106 -106
  46. data/lib/azure/service/access_policy.rb +25 -25
  47. data/lib/azure/service/cors.rb +11 -11
  48. data/lib/azure/service/cors_rule.rb +15 -15
  49. data/lib/azure/service/enumeration_results.rb +20 -20
  50. data/lib/azure/service/logging.rb +31 -31
  51. data/lib/azure/service/metrics.rb +30 -30
  52. data/lib/azure/service/retention_policy.rb +24 -24
  53. data/lib/azure/service/serialization.rb +297 -297
  54. data/lib/azure/service/signed_identifier.rb +29 -29
  55. data/lib/azure/service/storage_service.rb +82 -82
  56. data/lib/azure/service/storage_service_properties.rb +37 -37
  57. data/lib/azure/service_bus/action.rb +21 -21
  58. data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
  59. data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
  60. data/lib/azure/service_bus/brokered_message.rb +123 -123
  61. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
  62. data/lib/azure/service_bus/correlation_filter.rb +45 -45
  63. data/lib/azure/service_bus/empty_rule_action.rb +29 -29
  64. data/lib/azure/service_bus/false_filter.rb +38 -38
  65. data/lib/azure/service_bus/filter.rb +21 -21
  66. data/lib/azure/service_bus/interval.rb +103 -103
  67. data/lib/azure/service_bus/queue.rb +229 -229
  68. data/lib/azure/service_bus/relay.rb +87 -87
  69. data/lib/azure/service_bus/resource.rb +108 -108
  70. data/lib/azure/service_bus/rule.rb +97 -97
  71. data/lib/azure/service_bus/rule_aspect.rb +34 -34
  72. data/lib/azure/service_bus/serialization.rb +161 -161
  73. data/lib/azure/service_bus/service_bus_service.rb +896 -896
  74. data/lib/azure/service_bus/sql_filter.rb +50 -50
  75. data/lib/azure/service_bus/sql_rule_action.rb +50 -50
  76. data/lib/azure/service_bus/subscription.rb +183 -183
  77. data/lib/azure/service_bus/topic.rb +186 -186
  78. data/lib/azure/service_bus/true_filter.rb +38 -38
  79. data/lib/azure/sql_database_management/serialization.rb +111 -111
  80. data/lib/azure/sql_database_management/sql_database.rb +31 -31
  81. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -200
  82. data/lib/azure/storage_management/serialization.rb +184 -184
  83. data/lib/azure/storage_management/storage_account.rb +40 -40
  84. data/lib/azure/storage_management/storage_management_service.rb +166 -166
  85. data/lib/azure/table/auth/shared_key.rb +92 -92
  86. data/lib/azure/table/auth/shared_key_lite.rb +44 -44
  87. data/lib/azure/table/batch.rb +329 -329
  88. data/lib/azure/table/batch_response.rb +118 -118
  89. data/lib/azure/table/edmtype.rb +126 -126
  90. data/lib/azure/table/entity.rb +30 -30
  91. data/lib/azure/table/guid.rb +23 -23
  92. data/lib/azure/table/query.rb +111 -111
  93. data/lib/azure/table/serialization.rb +107 -107
  94. data/lib/azure/table/table_service.rb +559 -559
  95. data/lib/azure/version.rb +31 -31
  96. data/lib/azure/virtual_machine_image_management/serialization.rb +66 -66
  97. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -25
  98. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -25
  99. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -94
  100. data/lib/azure/virtual_machine_management/serialization.rb +462 -462
  101. data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -45
  102. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +588 -588
  103. data/lib/azure/virtual_network_management/serialization.rb +190 -190
  104. data/lib/azure/virtual_network_management/virtual_network.rb +37 -37
  105. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
  106. data/test/fixtures/affinity_group.xml +33 -33
  107. data/test/fixtures/all_containers.xml +20 -20
  108. data/test/fixtures/all_tables.xml +22 -22
  109. data/test/fixtures/certificate.pem +21 -21
  110. data/test/fixtures/container_acl.xml +11 -11
  111. data/test/fixtures/create_sql_database_server.xml +1 -1
  112. data/test/fixtures/create_storage_desc_error.xml +5 -5
  113. data/test/fixtures/create_storage_extendedprop_error.xml +8 -8
  114. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -6
  115. data/test/fixtures/create_storage_full_error.xml +6 -6
  116. data/test/fixtures/create_storage_label_error.xml +5 -5
  117. data/test/fixtures/create_storage_location_error.xml +5 -5
  118. data/test/fixtures/create_storage_name_error.xml +6 -6
  119. data/test/fixtures/create_table_response_entry.xml +15 -15
  120. data/test/fixtures/delete_storage_container_error.xml +5 -5
  121. data/test/fixtures/delete_storage_error.xml +5 -5
  122. data/test/fixtures/deployment_error.xml +5 -5
  123. data/test/fixtures/get_storage_account_error.xml +5 -5
  124. data/test/fixtures/get_storage_account_properties.xml +31 -31
  125. data/test/fixtures/get_storage_account_properties_new.xml +31 -31
  126. data/test/fixtures/http_error.xml +5 -5
  127. data/test/fixtures/insert_entity_response_entry.xml +25 -25
  128. data/test/fixtures/list_affinity_groups.xml +22 -22
  129. data/test/fixtures/list_blobs.xml +120 -120
  130. data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
  131. data/test/fixtures/list_blocks_all.xml +22 -22
  132. data/test/fixtures/list_blocks_committed.xml +12 -12
  133. data/test/fixtures/list_cloud_services.xml +38 -38
  134. data/test/fixtures/list_containers.xml +37 -37
  135. data/test/fixtures/list_firewall_management_endpoint.xml +27 -27
  136. data/test/fixtures/list_images.xml +110 -110
  137. data/test/fixtures/list_locations.xml +62 -62
  138. data/test/fixtures/list_page_ranges.xml +10 -10
  139. data/test/fixtures/list_sql_database.xml +36 -36
  140. data/test/fixtures/list_sql_server_firewall.xml +23 -23
  141. data/test/fixtures/list_storage_account_single.xml +24 -24
  142. data/test/fixtures/list_storage_accounts.xml +45 -45
  143. data/test/fixtures/list_virtual_networks.xml +92 -92
  144. data/test/fixtures/logging.xml +11 -11
  145. data/test/fixtures/management_certificate.pem +55 -55
  146. data/test/fixtures/messages.xml +12 -12
  147. data/test/fixtures/metrics.xml +10 -10
  148. data/test/fixtures/privatekey.key +28 -28
  149. data/test/fixtures/query_entities_empty_response.xml +7 -7
  150. data/test/fixtures/query_entities_response.xml +45 -45
  151. data/test/fixtures/queue_service_properties.xml +22 -22
  152. data/test/fixtures/queue_service_properties_original.xml +19 -19
  153. data/test/fixtures/queues.xml +16 -16
  154. data/test/fixtures/retention_policy.xml +5 -5
  155. data/test/fixtures/sb_default_create_queue_response.xml +23 -23
  156. data/test/fixtures/sb_default_create_relay_response.xml +15 -15
  157. data/test/fixtures/sb_default_create_topic_response.xml +18 -18
  158. data/test/fixtures/sb_get_access_token_response.txt +1 -1
  159. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
  160. data/test/fixtures/storage_service_properties.xml +54 -54
  161. data/test/fixtures/update_storage_account.xml +16 -16
  162. data/test/fixtures/update_storage_error.xml +4 -4
  163. data/test/fixtures/updated_storage_accounts.xml +52 -52
  164. data/test/fixtures/virtual_machine.xml +113 -113
  165. data/test/fixtures/windows_virtual_machine.xml +106 -106
  166. data/test/integration/affinity_group/Affinity_test.rb +55 -55
  167. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
  168. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
  169. data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
  170. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
  171. data/test/integration/blob/blob_gb18030_test.rb +199 -199
  172. data/test/integration/blob/blob_metadata_test.rb +75 -75
  173. data/test/integration/blob/blob_pages_test.rb +119 -119
  174. data/test/integration/blob/blob_properties_test.rb +77 -77
  175. data/test/integration/blob/block_blob_test.rb +254 -254
  176. data/test/integration/blob/container/container_acl_test.rb +69 -69
  177. data/test/integration/blob/container/container_metadata_test.rb +50 -50
  178. data/test/integration/blob/container/create_container_test.rb +60 -60
  179. data/test/integration/blob/container/delete_container_test.rb +39 -39
  180. data/test/integration/blob/container/get_container_properties_test.rb +48 -48
  181. data/test/integration/blob/container/list_containers_test.rb +79 -79
  182. data/test/integration/blob/container/root_container_test.rb +53 -53
  183. data/test/integration/blob/copy_blob_test.rb +113 -113
  184. data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
  185. data/test/integration/blob/create_page_blob_test.rb +83 -83
  186. data/test/integration/blob/delete_blob_test.rb +159 -159
  187. data/test/integration/blob/get_blob_test.rb +65 -65
  188. data/test/integration/blob/informative_errors_test.rb +38 -38
  189. data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
  190. data/test/integration/blob/lease/break_lease_test.rb +40 -40
  191. data/test/integration/blob/lease/release_lease_test.rb +40 -40
  192. data/test/integration/blob/lease/renew_lease_test.rb +42 -42
  193. data/test/integration/blob/list_blobs_test.rb +113 -113
  194. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -44
  195. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -44
  196. data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
  197. data/test/integration/database/create_sql_server_test.rb +53 -53
  198. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -70
  199. data/test/integration/database/delete_sql_server_test.rb +58 -58
  200. data/test/integration/database/list_sql_server_firewall_test.rb +45 -45
  201. data/test/integration/database/list_sql_servers_test.rb +44 -44
  202. data/test/integration/database/reset_password_sql_server_test.rb +55 -55
  203. data/test/integration/location/Location_List_test.rb +39 -39
  204. data/test/integration/queue/clear_messages_test.rb +42 -42
  205. data/test/integration/queue/create_message_test.rb +75 -75
  206. data/test/integration/queue/create_queue_test.rb +50 -50
  207. data/test/integration/queue/delete_message_test.rb +67 -67
  208. data/test/integration/queue/delete_queue_test.rb +45 -45
  209. data/test/integration/queue/informative_errors_test.rb +41 -41
  210. data/test/integration/queue/list_messages_encoded_test.rb +79 -79
  211. data/test/integration/queue/list_messages_test.rb +79 -79
  212. data/test/integration/queue/list_queues_test.rb +44 -44
  213. data/test/integration/queue/peek_messages_test.rb +59 -59
  214. data/test/integration/queue/queue_gb18030_test.rb +131 -131
  215. data/test/integration/queue/queue_metadata_test.rb +40 -40
  216. data/test/integration/queue/update_message_test.rb +74 -74
  217. data/test/integration/service_bus/informative_errors_test.rb +36 -36
  218. data/test/integration/service_bus/queues_scenario_test.rb +200 -200
  219. data/test/integration/service_bus/queues_test.rb +265 -265
  220. data/test/integration/service_bus/relay_test.rb +131 -131
  221. data/test/integration/service_bus/rules_test.rb +144 -144
  222. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
  223. data/test/integration/service_bus/scenario_test.rb +101 -101
  224. data/test/integration/service_bus/subscriptions_test.rb +211 -211
  225. data/test/integration/service_bus/topics_scenario_test.rb +406 -406
  226. data/test/integration/service_bus/topics_test.rb +129 -129
  227. data/test/integration/storage_management/storage_management_test.rb +160 -160
  228. data/test/integration/table/create_table_test.rb +35 -35
  229. data/test/integration/table/delete_entity_batch_test.rb +106 -106
  230. data/test/integration/table/delete_entity_test.rb +93 -93
  231. data/test/integration/table/delete_table_test.rb +39 -39
  232. data/test/integration/table/get_table_test.rb +36 -36
  233. data/test/integration/table/informative_errors_test.rb +38 -38
  234. data/test/integration/table/insert_entity_batch_test.rb +99 -99
  235. data/test/integration/table/insert_entity_test.rb +87 -87
  236. data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
  237. data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
  238. data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
  239. data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
  240. data/test/integration/table/merge_entity_batch_test.rb +127 -127
  241. data/test/integration/table/merge_entity_test.rb +112 -112
  242. data/test/integration/table/query_entities_test.rb +194 -194
  243. data/test/integration/table/query_tables_test.rb +42 -42
  244. data/test/integration/table/query_test.rb +250 -250
  245. data/test/integration/table/table_acl_test.rb +51 -51
  246. data/test/integration/table/table_gb18030_test.rb +355 -355
  247. data/test/integration/table/update_entity_batch_test.rb +148 -148
  248. data/test/integration/table/update_entity_test.rb +130 -130
  249. data/test/integration/test_helper.rb +42 -42
  250. data/test/integration/vm/VM_Create_test.rb +260 -260
  251. data/test/integration/vm/VM_Delete_test.rb +55 -55
  252. data/test/integration/vm/VM_Operations_test.rb +173 -173
  253. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
  254. data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
  255. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
  256. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
  257. data/test/support/env.rb +19 -19
  258. data/test/support/fixtures.rb +36 -36
  259. data/test/support/name_generator.rb +168 -168
  260. data/test/support/stubs.rb +42 -42
  261. data/test/support/virtual_machine_name_generator.rb +102 -102
  262. data/test/support/virtual_network_helper.rb +73 -73
  263. data/test/test_helper.rb +53 -53
  264. data/test/unit/affinity_group/affinity_group_test.rb +192 -192
  265. data/test/unit/affinity_group/serialization_test.rb +88 -88
  266. data/test/unit/base_management/location_test.rb +57 -57
  267. data/test/unit/blob/blob_service_test.rb +1946 -1946
  268. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
  269. data/test/unit/cloud_service_management/serialization_test.rb +169 -169
  270. data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
  271. data/test/unit/core/auth/shared_key_test.rb +58 -58
  272. data/test/unit/core/auth/signer_test.rb +30 -30
  273. data/test/unit/core/http/http_error_test.rb +57 -57
  274. data/test/unit/core/http/http_request_test.rb +66 -66
  275. data/test/unit/core/http/http_response_test.rb +45 -45
  276. data/test/unit/core/http/retry_policy_test.rb +23 -23
  277. data/test/unit/database/serialization_test.rb +97 -97
  278. data/test/unit/database/sql_database_server_service_test.rb +288 -288
  279. data/test/unit/service/serialization_test.rb +532 -532
  280. data/test/unit/service/storage_service_test.rb +292 -292
  281. data/test/unit/storage_management/serialization_test.rb +232 -232
  282. data/test/unit/storage_management/storage_management_service_test.rb +261 -261
  283. data/test/unit/table/edmtype_test.rb +107 -107
  284. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -35
  285. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -65
  286. data/test/unit/virtual_machine_management/serialization_test.rb +258 -258
  287. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -440
  288. data/test/unit/vnet/serialization_test.rb +187 -187
  289. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
  290. 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