stuartpreston-azure-sdk-for-ruby 0.6.5

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 (292) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +10 -0
  4. data/ChangeLog.txt +40 -0
  5. data/Gemfile +16 -0
  6. data/README.md +616 -0
  7. data/Rakefile +133 -0
  8. data/azure.gemspec +44 -0
  9. data/lib/azure.rb +52 -0
  10. data/lib/azure/base_management/affinity_group.rb +32 -0
  11. data/lib/azure/base_management/base_management_service.rb +234 -0
  12. data/lib/azure/base_management/location.rb +27 -0
  13. data/lib/azure/base_management/management_http_request.rb +172 -0
  14. data/lib/azure/base_management/serialization.rb +129 -0
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  16. data/lib/azure/blob/blob.rb +32 -0
  17. data/lib/azure/blob/blob_service.rb +1423 -0
  18. data/lib/azure/blob/block.rb +31 -0
  19. data/lib/azure/blob/container.rb +32 -0
  20. data/lib/azure/blob/serialization.rb +285 -0
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -0
  23. data/lib/azure/cloud_service_management/serialization.rb +117 -0
  24. data/lib/azure/core.rb +39 -0
  25. data/lib/azure/core/auth/authorizer.rb +36 -0
  26. data/lib/azure/core/auth/shared_key.rb +110 -0
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -0
  28. data/lib/azure/core/auth/signer.rb +48 -0
  29. data/lib/azure/core/configuration.rb +211 -0
  30. data/lib/azure/core/error.rb +22 -0
  31. data/lib/azure/core/filtered_service.rb +44 -0
  32. data/lib/azure/core/http/debug_filter.rb +36 -0
  33. data/lib/azure/core/http/http_error.rb +88 -0
  34. data/lib/azure/core/http/http_filter.rb +53 -0
  35. data/lib/azure/core/http/http_request.rb +157 -0
  36. data/lib/azure/core/http/http_response.rb +140 -0
  37. data/lib/azure/core/http/retry_policy.rb +74 -0
  38. data/lib/azure/core/http/signer_filter.rb +34 -0
  39. data/lib/azure/core/service.rb +63 -0
  40. data/lib/azure/core/signed_service.rb +43 -0
  41. data/lib/azure/core/utility.rb +190 -0
  42. data/lib/azure/queue/message.rb +30 -0
  43. data/lib/azure/queue/queue.rb +29 -0
  44. data/lib/azure/queue/queue_service.rb +568 -0
  45. data/lib/azure/queue/serialization.rb +106 -0
  46. data/lib/azure/service/access_policy.rb +26 -0
  47. data/lib/azure/service/cors.rb +11 -0
  48. data/lib/azure/service/cors_rule.rb +15 -0
  49. data/lib/azure/service/enumeration_results.rb +21 -0
  50. data/lib/azure/service/logging.rb +32 -0
  51. data/lib/azure/service/metrics.rb +31 -0
  52. data/lib/azure/service/retention_policy.rb +25 -0
  53. data/lib/azure/service/serialization.rb +298 -0
  54. data/lib/azure/service/signed_identifier.rb +30 -0
  55. data/lib/azure/service/storage_service.rb +83 -0
  56. data/lib/azure/service/storage_service_properties.rb +37 -0
  57. data/lib/azure/service_bus/action.rb +21 -0
  58. data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
  59. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  60. data/lib/azure/service_bus/brokered_message.rb +124 -0
  61. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
  62. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  63. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  64. data/lib/azure/service_bus/false_filter.rb +38 -0
  65. data/lib/azure/service_bus/filter.rb +21 -0
  66. data/lib/azure/service_bus/interval.rb +104 -0
  67. data/lib/azure/service_bus/queue.rb +230 -0
  68. data/lib/azure/service_bus/relay.rb +88 -0
  69. data/lib/azure/service_bus/resource.rb +109 -0
  70. data/lib/azure/service_bus/rule.rb +98 -0
  71. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  72. data/lib/azure/service_bus/serialization.rb +161 -0
  73. data/lib/azure/service_bus/service_bus_service.rb +897 -0
  74. data/lib/azure/service_bus/sql_filter.rb +50 -0
  75. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  76. data/lib/azure/service_bus/subscription.rb +184 -0
  77. data/lib/azure/service_bus/topic.rb +187 -0
  78. data/lib/azure/service_bus/true_filter.rb +38 -0
  79. data/lib/azure/sql_database_management/serialization.rb +111 -0
  80. data/lib/azure/sql_database_management/sql_database.rb +31 -0
  81. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
  82. data/lib/azure/storage_management/serialization.rb +184 -0
  83. data/lib/azure/storage_management/storage_account.rb +40 -0
  84. data/lib/azure/storage_management/storage_management_service.rb +166 -0
  85. data/lib/azure/table/auth/shared_key.rb +92 -0
  86. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  87. data/lib/azure/table/batch.rb +330 -0
  88. data/lib/azure/table/batch_response.rb +118 -0
  89. data/lib/azure/table/edmtype.rb +127 -0
  90. data/lib/azure/table/entity.rb +31 -0
  91. data/lib/azure/table/guid.rb +24 -0
  92. data/lib/azure/table/query.rb +112 -0
  93. data/lib/azure/table/serialization.rb +108 -0
  94. data/lib/azure/table/table_service.rb +560 -0
  95. data/lib/azure/version.rb +31 -0
  96. data/lib/azure/virtual_machine_image_management/serialization.rb +66 -0
  97. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
  98. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
  99. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -0
  100. data/lib/azure/virtual_machine_management/serialization.rb +463 -0
  101. data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -0
  102. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +589 -0
  103. data/lib/azure/virtual_network_management/serialization.rb +186 -0
  104. data/lib/azure/virtual_network_management/virtual_network.rb +36 -0
  105. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
  106. data/test/fixtures/32px-fulls-black.jpg +0 -0
  107. data/test/fixtures/affinity_group.xml +33 -0
  108. data/test/fixtures/all_containers.xml +20 -0
  109. data/test/fixtures/all_tables.xml +22 -0
  110. data/test/fixtures/certificate.pem +21 -0
  111. data/test/fixtures/container_acl.xml +11 -0
  112. data/test/fixtures/create_sql_database_server.xml +2 -0
  113. data/test/fixtures/create_storage_desc_error.xml +5 -0
  114. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  115. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  116. data/test/fixtures/create_storage_full_error.xml +6 -0
  117. data/test/fixtures/create_storage_label_error.xml +5 -0
  118. data/test/fixtures/create_storage_location_error.xml +5 -0
  119. data/test/fixtures/create_storage_name_error.xml +6 -0
  120. data/test/fixtures/create_table_response_entry.xml +15 -0
  121. data/test/fixtures/delete_storage_container_error.xml +5 -0
  122. data/test/fixtures/delete_storage_error.xml +5 -0
  123. data/test/fixtures/deployment_error.xml +5 -0
  124. data/test/fixtures/empty_xml_file +0 -0
  125. data/test/fixtures/get_storage_account_error.xml +5 -0
  126. data/test/fixtures/get_storage_account_properties.xml +32 -0
  127. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  128. data/test/fixtures/http_error.xml +5 -0
  129. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  130. data/test/fixtures/list_affinity_groups.xml +22 -0
  131. data/test/fixtures/list_blobs.xml +121 -0
  132. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  133. data/test/fixtures/list_blocks_all.xml +23 -0
  134. data/test/fixtures/list_blocks_committed.xml +13 -0
  135. data/test/fixtures/list_cloud_services.xml +39 -0
  136. data/test/fixtures/list_containers.xml +38 -0
  137. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  138. data/test/fixtures/list_images.xml +110 -0
  139. data/test/fixtures/list_locations.xml +62 -0
  140. data/test/fixtures/list_page_ranges.xml +11 -0
  141. data/test/fixtures/list_sql_database.xml +36 -0
  142. data/test/fixtures/list_sql_server_firewall.xml +23 -0
  143. data/test/fixtures/list_storage_account_single.xml +25 -0
  144. data/test/fixtures/list_storage_accounts.xml +46 -0
  145. data/test/fixtures/list_virtual_networks.xml +92 -0
  146. data/test/fixtures/logging.xml +11 -0
  147. data/test/fixtures/management_certificate.pem +55 -0
  148. data/test/fixtures/messages.xml +12 -0
  149. data/test/fixtures/metrics.xml +10 -0
  150. data/test/fixtures/privatekey.key +28 -0
  151. data/test/fixtures/query_entities_empty_response.xml +7 -0
  152. data/test/fixtures/query_entities_response.xml +45 -0
  153. data/test/fixtures/queue_service_properties.xml +22 -0
  154. data/test/fixtures/queue_service_properties_original.xml +19 -0
  155. data/test/fixtures/queues.xml +16 -0
  156. data/test/fixtures/retention_policy.xml +5 -0
  157. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  158. data/test/fixtures/sb_default_create_relay_response.xml +15 -0
  159. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  160. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  161. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  162. data/test/fixtures/storage_service_properties.xml +54 -0
  163. data/test/fixtures/update_storage_account.xml +16 -0
  164. data/test/fixtures/update_storage_error.xml +5 -0
  165. data/test/fixtures/updated_storage_accounts.xml +53 -0
  166. data/test/fixtures/virtual_machine.xml +113 -0
  167. data/test/fixtures/windows_virtual_machine.xml +106 -0
  168. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  169. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
  170. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  171. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  172. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
  173. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  174. data/test/integration/blob/blob_metadata_test.rb +75 -0
  175. data/test/integration/blob/blob_pages_test.rb +119 -0
  176. data/test/integration/blob/blob_properties_test.rb +77 -0
  177. data/test/integration/blob/block_blob_test.rb +254 -0
  178. data/test/integration/blob/container/container_acl_test.rb +69 -0
  179. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  180. data/test/integration/blob/container/create_container_test.rb +60 -0
  181. data/test/integration/blob/container/delete_container_test.rb +39 -0
  182. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  183. data/test/integration/blob/container/list_containers_test.rb +79 -0
  184. data/test/integration/blob/container/root_container_test.rb +54 -0
  185. data/test/integration/blob/copy_blob_test.rb +113 -0
  186. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  187. data/test/integration/blob/create_page_blob_test.rb +83 -0
  188. data/test/integration/blob/delete_blob_test.rb +159 -0
  189. data/test/integration/blob/get_blob_test.rb +65 -0
  190. data/test/integration/blob/informative_errors_test.rb +39 -0
  191. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  192. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  193. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  194. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  195. data/test/integration/blob/list_blobs_test.rb +113 -0
  196. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
  197. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
  198. data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
  199. data/test/integration/database/create_sql_server_test.rb +53 -0
  200. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
  201. data/test/integration/database/delete_sql_server_test.rb +58 -0
  202. data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
  203. data/test/integration/database/list_sql_servers_test.rb +44 -0
  204. data/test/integration/database/reset_password_sql_server_test.rb +55 -0
  205. data/test/integration/location/Location_List_test.rb +39 -0
  206. data/test/integration/queue/clear_messages_test.rb +42 -0
  207. data/test/integration/queue/create_message_test.rb +75 -0
  208. data/test/integration/queue/create_queue_test.rb +50 -0
  209. data/test/integration/queue/delete_message_test.rb +67 -0
  210. data/test/integration/queue/delete_queue_test.rb +45 -0
  211. data/test/integration/queue/informative_errors_test.rb +42 -0
  212. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  213. data/test/integration/queue/list_messages_test.rb +79 -0
  214. data/test/integration/queue/list_queues_test.rb +44 -0
  215. data/test/integration/queue/peek_messages_test.rb +59 -0
  216. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  217. data/test/integration/queue/queue_metadata_test.rb +40 -0
  218. data/test/integration/queue/update_message_test.rb +74 -0
  219. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  220. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  221. data/test/integration/service_bus/queues_test.rb +266 -0
  222. data/test/integration/service_bus/relay_test.rb +132 -0
  223. data/test/integration/service_bus/rules_test.rb +145 -0
  224. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  225. data/test/integration/service_bus/scenario_test.rb +101 -0
  226. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  227. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  228. data/test/integration/service_bus/topics_test.rb +129 -0
  229. data/test/integration/storage_management/storage_management_test.rb +160 -0
  230. data/test/integration/table/create_table_test.rb +36 -0
  231. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  232. data/test/integration/table/delete_entity_test.rb +94 -0
  233. data/test/integration/table/delete_table_test.rb +40 -0
  234. data/test/integration/table/get_table_test.rb +37 -0
  235. data/test/integration/table/informative_errors_test.rb +39 -0
  236. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  237. data/test/integration/table/insert_entity_test.rb +88 -0
  238. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  239. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  240. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  241. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  242. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  243. data/test/integration/table/merge_entity_test.rb +113 -0
  244. data/test/integration/table/query_entities_test.rb +195 -0
  245. data/test/integration/table/query_tables_test.rb +43 -0
  246. data/test/integration/table/query_test.rb +251 -0
  247. data/test/integration/table/table_acl_test.rb +52 -0
  248. data/test/integration/table/table_gb18030_test.rb +355 -0
  249. data/test/integration/table/update_entity_batch_test.rb +149 -0
  250. data/test/integration/table/update_entity_test.rb +131 -0
  251. data/test/integration/test_helper.rb +42 -0
  252. data/test/integration/vm/VM_Create_test.rb +260 -0
  253. data/test/integration/vm/VM_Delete_test.rb +55 -0
  254. data/test/integration/vm/VM_Operations_test.rb +173 -0
  255. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  256. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  257. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
  258. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
  259. data/test/support/env.rb +19 -0
  260. data/test/support/fixtures.rb +36 -0
  261. data/test/support/name_generator.rb +168 -0
  262. data/test/support/stubs.rb +42 -0
  263. data/test/support/virtual_machine_name_generator.rb +102 -0
  264. data/test/support/virtual_network_helper.rb +73 -0
  265. data/test/test_helper.rb +54 -0
  266. data/test/unit/affinity_group/affinity_group_test.rb +192 -0
  267. data/test/unit/affinity_group/serialization_test.rb +88 -0
  268. data/test/unit/base_management/location_test.rb +57 -0
  269. data/test/unit/blob/blob_service_test.rb +1947 -0
  270. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -0
  271. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  272. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  273. data/test/unit/core/auth/shared_key_test.rb +58 -0
  274. data/test/unit/core/auth/signer_test.rb +30 -0
  275. data/test/unit/core/http/http_error_test.rb +57 -0
  276. data/test/unit/core/http/http_request_test.rb +66 -0
  277. data/test/unit/core/http/http_response_test.rb +45 -0
  278. data/test/unit/core/http/retry_policy_test.rb +23 -0
  279. data/test/unit/database/serialization_test.rb +97 -0
  280. data/test/unit/database/sql_database_server_service_test.rb +288 -0
  281. data/test/unit/service/serialization_test.rb +533 -0
  282. data/test/unit/service/storage_service_test.rb +293 -0
  283. data/test/unit/storage_management/serialization_test.rb +232 -0
  284. data/test/unit/storage_management/storage_management_service_test.rb +261 -0
  285. data/test/unit/table/edmtype_test.rb +108 -0
  286. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
  287. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
  288. data/test/unit/virtual_machine_management/serialization_test.rb +258 -0
  289. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
  290. data/test/unit/vnet/serialization_test.rb +187 -0
  291. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  292. metadata +476 -0
@@ -0,0 +1,66 @@
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/core/http/http_request"
17
+
18
+ describe Azure::Core::Http::HttpRequest do
19
+ describe " default_headers " do
20
+ subject do
21
+ Azure::Core::Http::HttpRequest.new(:get, URI("/"), nil, "Thu, 04 Oct 2012 06:38:27 GMT")
22
+ end
23
+
24
+ it "sets the x-ms-date header to the current_time" do
25
+ subject.headers["x-ms-date"] = "Thu, 04 Oct 2012 06:38:27 GMT"
26
+ end
27
+
28
+ it "sets the x-ms-version header to the current API version" do
29
+ subject.headers["x-ms-version"] = "2011-08-18"
30
+ end
31
+
32
+ it "sets the DataServiceVersion header to the current API version" do
33
+ subject.headers["DataServiceVersion"] = "1.0;NetFx"
34
+ end
35
+
36
+ it "sets the MaxDataServiceVersion header to the current max` API version" do
37
+ subject.headers["MaxDataServiceVersion"] = "2.0;NetFx"
38
+ end
39
+
40
+ describe " when passed a body " do
41
+ subject do
42
+ Azure::Core::Http::HttpRequest.new(:get, URI("/"), "<body/>")
43
+ end
44
+
45
+ it "sets the default Content-Type header" do
46
+ subject.headers["Content-Type"].must_equal "application/atom+xml; charset=utf-8"
47
+ end
48
+
49
+ it "sets the Content-Length header" do
50
+ subject.headers["Content-Length"].must_equal "7"
51
+ end
52
+
53
+ it "sets the Content-MD5 header to a Base64 encoded representation of the MD5 hash of the body" do
54
+ subject.headers["Content-MD5"].must_equal "PNeJy7qyzV4XUoBBHkVu0g=="
55
+ end
56
+ end
57
+
58
+ describe " when the body is nil " do
59
+ it "leaves the Content-Type, Content-Length, and Content-MD5 headers blank" do
60
+ subject.headers["Content-Type"].must_equal ""
61
+ subject.headers["Content-Length"].must_equal "0"
62
+ subject.headers["Content-MD5"].must_be_nil
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,45 @@
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/core/http/http_response"
17
+
18
+ describe Azure::Core::Http::HttpResponse do
19
+ it "converts net/http headers into strings" do
20
+ http_response = MiniTest::Mock.new
21
+ http_response.stub(:to_hash, { "Content-Type" => ["text/xml"] })
22
+
23
+ response = Azure::Core::Http::HttpResponse.new(http_response)
24
+ response.headers["Content-Type"].must_equal "text/xml"
25
+ end
26
+
27
+ describe Azure::Core::Http::HttpResponse::HeaderHash do
28
+ subject do
29
+ Azure::Core::Http::HttpResponse::HeaderHash.new(
30
+ "AsdAsd" => ["1"], "bazqux" => ["2"], "QUXFOO" => ["3"]
31
+ )
32
+ end
33
+
34
+ it "returns the header values as strings, not arrays" do
35
+ subject["AsdAsd"].must_equal "1"
36
+ subject["bazqux"].must_equal "2"
37
+ subject["QUXFOO"].must_equal "3"
38
+ end
39
+
40
+ it "obtains keys in a case-insensitive fashion" do
41
+ subject["asdasd"].must_equal "1"
42
+ subject["BaZqUx"].must_equal "2"
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,23 @@
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/core/http/retry_policy"
17
+
18
+ describe Azure::Core::Http::RetryPolicy do
19
+ it "uses blocks as retry logic" do
20
+ retry_policy = Azure::Core::Http::RetryPolicy.new do |a,b| true end
21
+ retry_policy.should_retry?(nil, nil).must_equal true
22
+ end
23
+ end
@@ -0,0 +1,97 @@
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::SqlDatabaseManagement::Serialization do
18
+ subject { Azure::SqlDatabaseManagement::Serialization }
19
+
20
+ let(:sql_servers_xml) { Fixtures['list_sql_database'] }
21
+ before do
22
+ Azure.config.sql_database_authentication_mode = :sql_server
23
+ end
24
+ describe '#databases_from_xml' do
25
+
26
+ it 'accepts an XML string' do
27
+ subject.databases_from_xml Nokogiri::XML(sql_servers_xml)
28
+ end
29
+
30
+ it 'returns an Array of SqlDatabaseServer instances' do
31
+ results = subject.databases_from_xml Nokogiri::XML(sql_servers_xml)
32
+ results.must_be_kind_of Array
33
+ results[0].must_be_kind_of Azure::SqlDatabaseManagement::SqlDatabase
34
+ results.count.must_equal 3
35
+ end
36
+ end
37
+
38
+ describe '#database_to_xml' do
39
+ let(:login) { 'administrator' }
40
+ let(:password) { 'Password@123' }
41
+ let(:location) { 'West US' }
42
+
43
+ it 'accepts an name and options hash' do
44
+ subject.database_to_xml(login, password, location)
45
+ end
46
+
47
+ it 'serializes the argument to xml' do
48
+ results = subject.database_to_xml login, password, location
49
+ doc = Nokogiri::XML results
50
+ doc.css('AdministratorLogin').text.must_equal login
51
+ doc.css('AdministratorLoginPassword').text.must_equal password
52
+ doc.css('Location').text.must_equal location
53
+ results.must_be_kind_of String
54
+ end
55
+
56
+ end
57
+
58
+ describe '#firewall_rule_to_xml' do
59
+ let(:options) do
60
+ {
61
+ start_ip_address: '10.0.0.1',
62
+ end_ip_address: '10.0.0.255'
63
+ }
64
+ end
65
+
66
+ it 'accepts a ip range' do
67
+ subject.firewall_rule_to_xml(options)
68
+ end
69
+
70
+ it 'serializes the argument to xml' do
71
+ results = subject.firewall_rule_to_xml options
72
+ doc = Nokogiri::XML results
73
+ doc.css('StartIpAddress').text.must_equal options[:start_ip_address]
74
+ doc.css('EndIpAddress').text.must_equal options[:end_ip_address]
75
+ results.must_be_kind_of String
76
+ end
77
+
78
+ end
79
+
80
+ describe '#database_firewall_from_xml' do
81
+ let(:sql_server_firewall_xml) { Fixtures['list_sql_server_firewall'] }
82
+
83
+ it 'accepts an XML string' do
84
+ subject.database_firewall_from_xml Nokogiri::XML(sql_server_firewall_xml)
85
+ end
86
+
87
+ it 'returns an Array of SqlDatabaseServer instances with firewall' do
88
+ results = subject.database_firewall_from_xml(
89
+ Nokogiri::XML(sql_server_firewall_xml)
90
+ )
91
+ results.must_be_kind_of Array
92
+ results[0].must_be_kind_of Hash
93
+ results.count.must_equal 4
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,288 @@
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::SqlDatabaseManagementService' do
18
+ subject { Azure::SqlDatabaseManagementService.new }
19
+
20
+ let(:response_headers) { {} }
21
+ let(:mock_request) { mock }
22
+ let(:response) { mock }
23
+ let(:response_xml) { nil }
24
+
25
+ describe 'SQL Server authentication Endpoint' do
26
+ before do
27
+ Loggerx.expects(:puts).returns(nil).at_least(0)
28
+ mock_request.stubs(:headers).returns(response_headers)
29
+ mock_request.expects(:call).returns(Nokogiri::XML response_xml).at_least(0)
30
+ Azure.config.sql_database_authentication_mode = :sql_server
31
+ end
32
+
33
+ describe '#list_servers' do
34
+ let(:response_xml) { Fixtures['list_sql_database'] }
35
+ let(:method) { :get }
36
+ let(:request_path) { '/servers' }
37
+
38
+ before do
39
+ SqlManagementHttpRequest.stubs(:new).with(
40
+ method,
41
+ request_path,
42
+ nil
43
+ ).returns(mock_request)
44
+ end
45
+
46
+ it 'assembles a URI for the request' do
47
+ subject.list_servers
48
+ end
49
+
50
+ it 'returns a list of sql servers for the account' do
51
+ results = subject.list_servers
52
+ results.must_be_kind_of Array
53
+ results.length.must_equal 3
54
+ sql_server = results.first
55
+ sql_server.must_be_kind_of Azure::SqlDatabaseManagement::SqlDatabase
56
+ sql_server.name.must_equal 'nn1koc2ney'
57
+ sql_server.administrator_login.must_equal 'SqlServer2'
58
+ sql_server.location.must_equal 'West US'
59
+ sql_server.feature_name.must_equal 'Premium Mode'
60
+ sql_server.feature_value.must_equal 'false'
61
+ end
62
+ end
63
+
64
+ describe '#delete_server' do
65
+ before do
66
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
67
+ :list_servers
68
+ ).returns([])
69
+ end
70
+
71
+ it 'error if sql server does not exists' do
72
+ s_name = 'unknown-server'
73
+ exception = assert_raises(Azure::Error::Error) do
74
+ subject.delete_server s_name
75
+ end
76
+ s_id = Azure.config.subscription_id
77
+ assert_match(/Subscription #{s_id} does not have server #{s_name}./i,
78
+ exception.message)
79
+ end
80
+
81
+ end
82
+
83
+ describe '#list_sql_server_firewall_rules' do
84
+ let(:response_xml) { Fixtures['list_sql_server_firewall'] }
85
+ let(:method) { :get }
86
+ let(:sql_server_name) { 'server1' }
87
+ let(:request_path) { "/servers/#{sql_server_name}/firewallrules" }
88
+
89
+ before do
90
+ sql_server = Azure::SqlDatabaseManagement::SqlDatabase.new do |server|
91
+ server.name = sql_server_name
92
+ end
93
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
94
+ :list_servers
95
+ ).returns([sql_server])
96
+
97
+ SqlManagementHttpRequest.stubs(:new).with(
98
+ method,
99
+ request_path,
100
+ nil
101
+ ).returns(mock_request)
102
+ end
103
+
104
+ it 'assembles a URI for the sql server firewall request' do
105
+ subject.list_sql_server_firewall_rules sql_server_name
106
+ end
107
+
108
+ it 'returns a list of firewall of given sql servers' do
109
+ results = subject.list_sql_server_firewall_rules sql_server_name
110
+ results.must_be_kind_of Array
111
+ results.length.must_equal 4
112
+ results.first.must_be_kind_of Hash
113
+ end
114
+ end
115
+
116
+ describe '#create_server' do
117
+ let(:response_xml) { Fixtures['create_sql_database_server'] }
118
+ let(:method) { :post }
119
+ let(:request_path) { '/servers' }
120
+ let(:password) { 'User@123' }
121
+ let(:login) { 'ms_open_tech' }
122
+ let(:location) { 'West US' }
123
+
124
+ before do
125
+ SqlManagementHttpRequest.stubs(:new).with(
126
+ method,
127
+ request_path,
128
+ anything
129
+ ).returns(mock_request)
130
+
131
+ mock_request.stubs(:headers).returns(response_headers)
132
+ mock_request.expects(:call).returns(
133
+ Nokogiri::XML response_xml
134
+ ).at_least(0)
135
+ end
136
+
137
+ it 'create sql server' do
138
+ sql_server = subject.create_server(login, password, location)
139
+ sql_server.name.must_equal 'gxyfzrhx2c'
140
+ sql_server.administrator_login.must_equal login
141
+ sql_server.location.must_equal location
142
+ end
143
+ end
144
+
145
+ describe '#set_sql_server_firewall_rule' do
146
+ it 'create sql server' do
147
+ ip_range = { start_ip_address: '0.0.0.1', end_ip_address: '0.0.0.5' }
148
+ exception = assert_raises(RuntimeError) do
149
+ subject.set_sql_server_firewall_rule('zv2nfoah2t1', ip_range)
150
+ end
151
+ assert_match(/Missing parameter server_name or rule_name/i,
152
+ exception.message)
153
+ end
154
+ end
155
+ end
156
+
157
+ describe 'Management Certificate authentication Endpoint' do
158
+ before do
159
+ Loggerx.expects(:puts).returns(nil).at_least(0)
160
+ mock_request.stubs(:headers).returns(response_headers)
161
+ mock_request.expects(:call).returns(Nokogiri::XML response_xml).at_least(0)
162
+ Azure.config.sql_database_authentication_mode = :management_certificate
163
+ end
164
+
165
+ describe '#list_servers' do
166
+ let(:response_xml) { Fixtures['list_sql_database'] }
167
+ let(:method) { :get }
168
+ let(:request_path) { '/servers' }
169
+
170
+ before do
171
+ SqlManagementHttpRequest.stubs(:new).with(
172
+ method,
173
+ request_path,
174
+ nil
175
+ ).returns(mock_request)
176
+ end
177
+
178
+ it 'assembles a URI for the request' do
179
+ subject.list_servers
180
+ end
181
+
182
+ it 'returns a list of sql servers for the account' do
183
+ results = subject.list_servers
184
+ results.must_be_kind_of Array
185
+ results.length.must_equal 3
186
+ sql_server = results.first
187
+ sql_server.must_be_kind_of Azure::SqlDatabaseManagement::SqlDatabase
188
+ sql_server.name.must_equal 'nn1koc2ney'
189
+ sql_server.administrator_login.must_equal 'SqlServer2'
190
+ sql_server.location.must_equal 'West US'
191
+ sql_server.feature_name.must_equal 'Premium Mode'
192
+ sql_server.feature_value.must_equal 'false'
193
+ end
194
+ end
195
+
196
+ describe '#delete_server' do
197
+ before do
198
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
199
+ :list_servers
200
+ ).returns([])
201
+ end
202
+
203
+ it 'error if sql server does not exists' do
204
+ s_name = 'unknown-server'
205
+ exception = assert_raises(Azure::Error::Error) do
206
+ subject.delete_server s_name
207
+ end
208
+ s_id = Azure.config.subscription_id
209
+ assert_match(/Subscription #{s_id} does not have server #{s_name}./i,
210
+ exception.message)
211
+ end
212
+
213
+ end
214
+
215
+ describe '#list_sql_server_firewall_rules' do
216
+ let(:response_xml) { Fixtures['list_firewall_management_endpoint'] }
217
+ let(:method) { :get }
218
+ let(:sql_server_name) { 'server1' }
219
+ let(:request_path) { "/servers/#{sql_server_name}/firewallrules" }
220
+
221
+ before do
222
+ sql_server = Azure::SqlDatabaseManagement::SqlDatabase.new do |server|
223
+ server.name = sql_server_name
224
+ end
225
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
226
+ :list_servers
227
+ ).returns([sql_server])
228
+
229
+ SqlManagementHttpRequest.stubs(:new).with(
230
+ method,
231
+ request_path,
232
+ nil
233
+ ).returns(mock_request)
234
+ end
235
+
236
+ it 'assembles a URI for the sql server firewall request' do
237
+ subject.list_sql_server_firewall_rules sql_server_name
238
+ end
239
+
240
+ it 'returns a list of firewall of given sql servers' do
241
+ results = subject.list_sql_server_firewall_rules sql_server_name
242
+ results.must_be_kind_of Array
243
+ results.length.must_equal 4
244
+ results.first.must_be_kind_of Hash
245
+ end
246
+ end
247
+
248
+ describe '#create_server' do
249
+ let(:response_xml) { Fixtures['create_sql_database_server'] }
250
+ let(:method) { :post }
251
+ let(:request_path) { '/servers' }
252
+ let(:password) { 'User@123' }
253
+ let(:login) { 'ms_open_tech' }
254
+ let(:location) { 'West US' }
255
+
256
+ before do
257
+ SqlManagementHttpRequest.stubs(:new).with(
258
+ method,
259
+ request_path,
260
+ anything
261
+ ).returns(mock_request)
262
+
263
+ mock_request.stubs(:headers).returns(response_headers)
264
+ mock_request.expects(:call).returns(
265
+ Nokogiri::XML response_xml
266
+ ).at_least(0)
267
+ end
268
+
269
+ it 'create sql server' do
270
+ sql_server = subject.create_server(login, password, location)
271
+ sql_server.name.must_equal 'gxyfzrhx2c'
272
+ sql_server.administrator_login.must_equal login
273
+ sql_server.location.must_equal location
274
+ end
275
+ end
276
+
277
+ describe '#set_sql_server_firewall_rule' do
278
+ it 'create sql server' do
279
+ ip_range = { start_ip_address: '0.0.0.1', end_ip_address: '0.0.0.5' }
280
+ exception = assert_raises(RuntimeError) do
281
+ subject.set_sql_server_firewall_rule('zv2nfoah2t1', ip_range)
282
+ end
283
+ assert_match(/Missing parameter server_name or rule_name/i,
284
+ exception.message)
285
+ end
286
+ end
287
+ end
288
+ end