azure-fix 0.7.0.pre3

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 (311) hide show
  1. checksums.yaml +7 -0
  2. data/.env_sample +13 -0
  3. data/.gitignore +30 -0
  4. data/.travis.yml +13 -0
  5. data/ChangeLog.txt +56 -0
  6. data/Gemfile +16 -0
  7. data/LICENSE.txt +202 -0
  8. data/README.md +702 -0
  9. data/Rakefile +121 -0
  10. data/azure.gemspec +51 -0
  11. data/bin/pfxer +35 -0
  12. data/lib/azure.rb +147 -0
  13. data/lib/azure/base_management/affinity_group.rb +32 -0
  14. data/lib/azure/base_management/base_management_service.rb +220 -0
  15. data/lib/azure/base_management/location.rb +27 -0
  16. data/lib/azure/base_management/management_http_request.rb +172 -0
  17. data/lib/azure/base_management/serialization.rb +135 -0
  18. data/lib/azure/base_management/sql_management_http_request.rb +35 -0
  19. data/lib/azure/blob/auth/shared_access_signature.rb +147 -0
  20. data/lib/azure/blob/blob.rb +32 -0
  21. data/lib/azure/blob/blob_service.rb +1452 -0
  22. data/lib/azure/blob/block.rb +31 -0
  23. data/lib/azure/blob/container.rb +32 -0
  24. data/lib/azure/blob/serialization.rb +285 -0
  25. data/lib/azure/client.rb +31 -0
  26. data/lib/azure/client_services.rb +98 -0
  27. data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
  28. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +135 -0
  29. data/lib/azure/cloud_service_management/serialization.rb +118 -0
  30. data/lib/azure/configurable.rb +290 -0
  31. data/lib/azure/core/auth/authorizer.rb +36 -0
  32. data/lib/azure/core/auth/shared_key.rb +118 -0
  33. data/lib/azure/core/auth/shared_key_lite.rb +48 -0
  34. data/lib/azure/core/auth/signer.rb +51 -0
  35. data/lib/azure/core/error.rb +21 -0
  36. data/lib/azure/core/filtered_service.rb +45 -0
  37. data/lib/azure/core/http/debug_filter.rb +36 -0
  38. data/lib/azure/core/http/http_error.rb +86 -0
  39. data/lib/azure/core/http/http_filter.rb +53 -0
  40. data/lib/azure/core/http/http_request.rb +173 -0
  41. data/lib/azure/core/http/http_response.rb +96 -0
  42. data/lib/azure/core/http/retry_policy.rb +74 -0
  43. data/lib/azure/core/http/signer_filter.rb +33 -0
  44. data/lib/azure/core/service.rb +46 -0
  45. data/lib/azure/core/signed_service.rb +45 -0
  46. data/lib/azure/core/utility.rb +244 -0
  47. data/lib/azure/default.rb +126 -0
  48. data/lib/azure/http_client.rb +85 -0
  49. data/lib/azure/queue/message.rb +30 -0
  50. data/lib/azure/queue/queue.rb +28 -0
  51. data/lib/azure/queue/queue_service.rb +570 -0
  52. data/lib/azure/queue/serialization.rb +105 -0
  53. data/lib/azure/service/access_policy.rb +26 -0
  54. data/lib/azure/service/cors.rb +11 -0
  55. data/lib/azure/service/cors_rule.rb +15 -0
  56. data/lib/azure/service/enumeration_results.rb +21 -0
  57. data/lib/azure/service/logging.rb +32 -0
  58. data/lib/azure/service/metrics.rb +31 -0
  59. data/lib/azure/service/retention_policy.rb +25 -0
  60. data/lib/azure/service/serialization.rb +299 -0
  61. data/lib/azure/service/signed_identifier.rb +30 -0
  62. data/lib/azure/service/storage_service.rb +86 -0
  63. data/lib/azure/service/storage_service_properties.rb +37 -0
  64. data/lib/azure/service_bus/action.rb +21 -0
  65. data/lib/azure/service_bus/auth/shared_access_signer.rb +44 -0
  66. data/lib/azure/service_bus/auth/wrap_service.rb +90 -0
  67. data/lib/azure/service_bus/auth/wrap_signer.rb +77 -0
  68. data/lib/azure/service_bus/brokered_message.rb +124 -0
  69. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
  70. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  71. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  72. data/lib/azure/service_bus/false_filter.rb +38 -0
  73. data/lib/azure/service_bus/filter.rb +21 -0
  74. data/lib/azure/service_bus/interval.rb +104 -0
  75. data/lib/azure/service_bus/queue.rb +230 -0
  76. data/lib/azure/service_bus/relay.rb +88 -0
  77. data/lib/azure/service_bus/resource.rb +109 -0
  78. data/lib/azure/service_bus/rule.rb +98 -0
  79. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  80. data/lib/azure/service_bus/serialization.rb +161 -0
  81. data/lib/azure/service_bus/service_bus_service.rb +899 -0
  82. data/lib/azure/service_bus/sql_filter.rb +50 -0
  83. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  84. data/lib/azure/service_bus/subscription.rb +184 -0
  85. data/lib/azure/service_bus/topic.rb +187 -0
  86. data/lib/azure/service_bus/true_filter.rb +38 -0
  87. data/lib/azure/sql_database_management/errors.rb +11 -0
  88. data/lib/azure/sql_database_management/firewall_rule.rb +30 -0
  89. data/lib/azure/sql_database_management/serialization.rb +99 -0
  90. data/lib/azure/sql_database_management/sql_database_management_service.rb +211 -0
  91. data/lib/azure/sql_database_management/sql_server.rb +32 -0
  92. data/lib/azure/storage_management/serialization.rb +204 -0
  93. data/lib/azure/storage_management/storage_account.rb +48 -0
  94. data/lib/azure/storage_management/storage_management_service.rb +207 -0
  95. data/lib/azure/table/auth/shared_key.rb +59 -0
  96. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  97. data/lib/azure/table/batch.rb +330 -0
  98. data/lib/azure/table/batch_response.rb +118 -0
  99. data/lib/azure/table/edmtype.rb +127 -0
  100. data/lib/azure/table/entity.rb +31 -0
  101. data/lib/azure/table/guid.rb +24 -0
  102. data/lib/azure/table/query.rb +112 -0
  103. data/lib/azure/table/serialization.rb +108 -0
  104. data/lib/azure/table/table_service.rb +563 -0
  105. data/lib/azure/version.rb +31 -0
  106. data/lib/azure/virtual_machine_image_management/serialization.rb +70 -0
  107. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
  108. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
  109. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +83 -0
  110. data/lib/azure/virtual_machine_management/serialization.rb +459 -0
  111. data/lib/azure/virtual_machine_management/virtual_machine.rb +44 -0
  112. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +552 -0
  113. data/lib/azure/virtual_network_management/serialization.rb +193 -0
  114. data/lib/azure/virtual_network_management/virtual_network.rb +37 -0
  115. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +108 -0
  116. data/test/fixtures/32px-fulls-black.jpg +0 -0
  117. data/test/fixtures/affinity_group.xml +33 -0
  118. data/test/fixtures/all_containers.xml +20 -0
  119. data/test/fixtures/all_tables.xml +22 -0
  120. data/test/fixtures/container_acl.xml +11 -0
  121. data/test/fixtures/create_sql_database_server.xml +2 -0
  122. data/test/fixtures/create_storage_desc_error.xml +5 -0
  123. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  124. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  125. data/test/fixtures/create_storage_full_error.xml +6 -0
  126. data/test/fixtures/create_storage_label_error.xml +5 -0
  127. data/test/fixtures/create_storage_location_error.xml +5 -0
  128. data/test/fixtures/create_storage_name_error.xml +6 -0
  129. data/test/fixtures/create_table_response_entry.xml +15 -0
  130. data/test/fixtures/delete_storage_container_error.xml +5 -0
  131. data/test/fixtures/delete_storage_error.xml +5 -0
  132. data/test/fixtures/deployment_error.xml +5 -0
  133. data/test/fixtures/empty_xml_file +0 -0
  134. data/test/fixtures/get_storage_account_error.xml +5 -0
  135. data/test/fixtures/get_storage_account_properties.xml +34 -0
  136. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  137. data/test/fixtures/http_error.xml +5 -0
  138. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  139. data/test/fixtures/list_affinity_groups.xml +22 -0
  140. data/test/fixtures/list_blobs.xml +121 -0
  141. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  142. data/test/fixtures/list_blocks_all.xml +23 -0
  143. data/test/fixtures/list_blocks_committed.xml +13 -0
  144. data/test/fixtures/list_cloud_services.xml +39 -0
  145. data/test/fixtures/list_containers.xml +38 -0
  146. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  147. data/test/fixtures/list_locations.xml +212 -0
  148. data/test/fixtures/list_os_images.xml +110 -0
  149. data/test/fixtures/list_page_ranges.xml +11 -0
  150. data/test/fixtures/list_sql_database.xml +24 -0
  151. data/test/fixtures/list_sql_server_firewall.xml +23 -0
  152. data/test/fixtures/list_storage_account_single.xml +25 -0
  153. data/test/fixtures/list_storage_accounts.xml +48 -0
  154. data/test/fixtures/list_virtual_networks.xml +92 -0
  155. data/test/fixtures/list_vm_images.xml +21 -0
  156. data/test/fixtures/logging.xml +11 -0
  157. data/test/fixtures/management_certificate.pfx +0 -0
  158. data/test/fixtures/messages.xml +12 -0
  159. data/test/fixtures/metrics.xml +10 -0
  160. data/test/fixtures/privatekey.key +28 -0
  161. data/test/fixtures/query_entities_empty_response.xml +7 -0
  162. data/test/fixtures/query_entities_response.xml +45 -0
  163. data/test/fixtures/queue_service_properties.xml +22 -0
  164. data/test/fixtures/queue_service_properties_original.xml +19 -0
  165. data/test/fixtures/queues.xml +16 -0
  166. data/test/fixtures/retention_policy.xml +5 -0
  167. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  168. data/test/fixtures/sb_default_create_relay_response.xml +15 -0
  169. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  170. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  171. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  172. data/test/fixtures/storage_service_keys.xml +8 -0
  173. data/test/fixtures/storage_service_properties.xml +55 -0
  174. data/test/fixtures/update_storage_account.xml +16 -0
  175. data/test/fixtures/update_storage_error.xml +5 -0
  176. data/test/fixtures/updated_storage_accounts.xml +55 -0
  177. data/test/fixtures/virtual_machine.xml +116 -0
  178. data/test/fixtures/windows_virtual_machine.xml +106 -0
  179. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  180. data/test/integration/affinity_group/Create_Affinity_test.rb +64 -0
  181. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  182. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  183. data/test/integration/affinity_group/Update_Affinity_test.rb +87 -0
  184. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  185. data/test/integration/blob/blob_metadata_test.rb +75 -0
  186. data/test/integration/blob/blob_pages_test.rb +119 -0
  187. data/test/integration/blob/blob_properties_test.rb +77 -0
  188. data/test/integration/blob/block_blob_test.rb +254 -0
  189. data/test/integration/blob/container/container_acl_test.rb +69 -0
  190. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  191. data/test/integration/blob/container/create_container_test.rb +60 -0
  192. data/test/integration/blob/container/delete_container_test.rb +39 -0
  193. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  194. data/test/integration/blob/container/list_containers_test.rb +79 -0
  195. data/test/integration/blob/container/root_container_test.rb +55 -0
  196. data/test/integration/blob/copy_blob_test.rb +113 -0
  197. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  198. data/test/integration/blob/create_page_blob_test.rb +83 -0
  199. data/test/integration/blob/delete_blob_test.rb +159 -0
  200. data/test/integration/blob/get_blob_test.rb +65 -0
  201. data/test/integration/blob/informative_errors_test.rb +39 -0
  202. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  203. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  204. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  205. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  206. data/test/integration/blob/list_blobs_test.rb +113 -0
  207. data/test/integration/cloud_service/Cloud_Create_test.rb +45 -0
  208. data/test/integration/cloud_service/Cloud_Delete_test.rb +45 -0
  209. data/test/integration/database/create_sql_server_firewall_test.rb +81 -0
  210. data/test/integration/database/create_sql_server_test.rb +53 -0
  211. data/test/integration/database/delete_sql_server_firewall_test.rb +64 -0
  212. data/test/integration/database/delete_sql_server_test.rb +45 -0
  213. data/test/integration/database/list_sql_server_firewall_test.rb +44 -0
  214. data/test/integration/database/list_sql_servers_test.rb +44 -0
  215. data/test/integration/database/reset_password_sql_server_test.rb +53 -0
  216. data/test/integration/location/Location_List_test.rb +39 -0
  217. data/test/integration/location/RoleSize_List_test.rb +35 -0
  218. data/test/integration/queue/clear_messages_test.rb +42 -0
  219. data/test/integration/queue/create_message_test.rb +75 -0
  220. data/test/integration/queue/create_queue_test.rb +50 -0
  221. data/test/integration/queue/delete_message_test.rb +67 -0
  222. data/test/integration/queue/delete_queue_test.rb +45 -0
  223. data/test/integration/queue/informative_errors_test.rb +42 -0
  224. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  225. data/test/integration/queue/list_messages_test.rb +79 -0
  226. data/test/integration/queue/list_queues_test.rb +43 -0
  227. data/test/integration/queue/peek_messages_test.rb +59 -0
  228. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  229. data/test/integration/queue/queue_metadata_test.rb +40 -0
  230. data/test/integration/queue/update_message_test.rb +74 -0
  231. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  232. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  233. data/test/integration/service_bus/queues_test.rb +266 -0
  234. data/test/integration/service_bus/relay_test.rb +132 -0
  235. data/test/integration/service_bus/rules_test.rb +145 -0
  236. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  237. data/test/integration/service_bus/scenario_test.rb +101 -0
  238. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  239. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  240. data/test/integration/service_bus/topics_test.rb +129 -0
  241. data/test/integration/storage_management/storage_management_test.rb +185 -0
  242. data/test/integration/table/create_table_test.rb +36 -0
  243. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  244. data/test/integration/table/delete_entity_test.rb +94 -0
  245. data/test/integration/table/delete_table_test.rb +40 -0
  246. data/test/integration/table/get_table_test.rb +37 -0
  247. data/test/integration/table/informative_errors_test.rb +39 -0
  248. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  249. data/test/integration/table/insert_entity_test.rb +88 -0
  250. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  251. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  252. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  253. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  254. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  255. data/test/integration/table/merge_entity_test.rb +113 -0
  256. data/test/integration/table/query_entities_test.rb +196 -0
  257. data/test/integration/table/query_tables_test.rb +43 -0
  258. data/test/integration/table/query_test.rb +251 -0
  259. data/test/integration/table/table_acl_test.rb +52 -0
  260. data/test/integration/table/table_gb18030_test.rb +355 -0
  261. data/test/integration/table/update_entity_batch_test.rb +149 -0
  262. data/test/integration/table/update_entity_test.rb +131 -0
  263. data/test/integration/test_helper.rb +40 -0
  264. data/test/integration/vm/VM_Create_test.rb +262 -0
  265. data/test/integration/vm/VM_Delete_test.rb +53 -0
  266. data/test/integration/vm/VM_Operations_test.rb +172 -0
  267. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  268. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  269. data/test/integration/vnet/Virtual_Network_Create_test.rb +116 -0
  270. data/test/integration/vnet/Virtual_Network_list_test.rb +48 -0
  271. data/test/support/env.rb +19 -0
  272. data/test/support/fixtures.rb +36 -0
  273. data/test/support/name_generator.rb +168 -0
  274. data/test/support/stubs.rb +42 -0
  275. data/test/support/virtual_machine_name_generator.rb +102 -0
  276. data/test/support/virtual_network_helper.rb +73 -0
  277. data/test/test_helper.rb +47 -0
  278. data/test/unit/affinity_group/affinity_group_test.rb +189 -0
  279. data/test/unit/affinity_group/serialization_test.rb +87 -0
  280. data/test/unit/base_management/base_management_service_test.rb +19 -0
  281. data/test/unit/base_management/location_test.rb +56 -0
  282. data/test/unit/base_management/role_size_test.rb +50 -0
  283. data/test/unit/blob/auth/shared_access_signature_test.rb +71 -0
  284. data/test/unit/blob/blob_service_test.rb +1970 -0
  285. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -0
  286. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  287. data/test/unit/config/azure_test.rb +112 -0
  288. data/test/unit/config/client_test.rb +37 -0
  289. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  290. data/test/unit/core/auth/shared_key_test.rb +58 -0
  291. data/test/unit/core/auth/signer_test.rb +30 -0
  292. data/test/unit/core/http/http_error_test.rb +61 -0
  293. data/test/unit/core/http/http_request_test.rb +138 -0
  294. data/test/unit/core/http/http_response_test.rb +20 -0
  295. data/test/unit/core/http/retry_policy_test.rb +23 -0
  296. data/test/unit/core/utility_test.rb +122 -0
  297. data/test/unit/database/serialization_test.rb +94 -0
  298. data/test/unit/database/sql_database_server_service_test.rb +341 -0
  299. data/test/unit/http_client_test.rb +74 -0
  300. data/test/unit/service/serialization_test.rb +533 -0
  301. data/test/unit/service/storage_service_test.rb +297 -0
  302. data/test/unit/storage_management/serialization_test.rb +244 -0
  303. data/test/unit/storage_management/storage_management_service_test.rb +247 -0
  304. data/test/unit/table/edmtype_test.rb +108 -0
  305. data/test/unit/virtual_machine_image_management/serialization_test.rb +50 -0
  306. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +114 -0
  307. data/test/unit/virtual_machine_management/serialization_test.rb +316 -0
  308. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +480 -0
  309. data/test/unit/vnet/serialization_test.rb +187 -0
  310. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  311. metadata +579 -0
@@ -0,0 +1,94 @@
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
+ describe '#databases_from_xml' do
22
+
23
+ it 'accepts an XML string' do
24
+ subject.servers_from_xml Nokogiri::XML(sql_servers_xml)
25
+ end
26
+
27
+ it 'returns an Array of SqlServer instances' do
28
+ results = subject.servers_from_xml Nokogiri::XML(sql_servers_xml)
29
+ results.must_be_kind_of Array
30
+ results[0].must_be_kind_of Azure::SqlDatabaseManagement::SqlServer
31
+ results.count.must_equal 3
32
+ end
33
+ end
34
+
35
+ describe '#database_to_xml' do
36
+ let(:login) { 'administrator' }
37
+ let(:password) { 'Password@123' }
38
+ let(:geo_location) { 'West US' }
39
+
40
+ it 'accepts an name and options hash' do
41
+ subject.server_to_xml(login, password, geo_location)
42
+ end
43
+
44
+ it 'serializes the argument to xml' do
45
+ results = subject.server_to_xml login, password, geo_location
46
+ doc = Nokogiri::XML results
47
+ doc.css('AdministratorLogin').text.must_equal login
48
+ doc.css('AdministratorLoginPassword').text.must_equal password
49
+ doc.css('Location').text.must_equal geo_location
50
+ results.must_be_kind_of String
51
+ end
52
+
53
+ end
54
+
55
+ describe '#firewall_rule_to_xml' do
56
+ let(:rule) do
57
+ Azure::SqlDatabaseManagement::FirewallRule.new do |rule|
58
+ rule.start_ip_address = '10.0.0.1'
59
+ rule.end_ip_address = '10.0.0.255'
60
+ end
61
+ end
62
+
63
+ it 'accepts a ip range' do
64
+ subject.firewall_rule_to_xml(rule)
65
+ end
66
+
67
+ it 'serializes the argument to xml' do
68
+ results = subject.firewall_rule_to_xml rule
69
+ doc = Nokogiri::XML results
70
+ doc.css('StartIPAddress').text.must_equal rule.start_ip_address
71
+ doc.css('EndIPAddress').text.must_equal rule.end_ip_address
72
+ results.must_be_kind_of String
73
+ end
74
+
75
+ end
76
+
77
+ describe '#database_firewall_from_xml' do
78
+ let(:sql_server_firewall_xml) { Fixtures['list_sql_server_firewall'] }
79
+
80
+ it 'accepts an XML string' do
81
+ subject.database_firewall_from_xml Nokogiri::XML(sql_server_firewall_xml)
82
+ end
83
+
84
+ it 'returns an Array of FirewallRule instances' do
85
+ results = subject.database_firewall_from_xml(
86
+ Nokogiri::XML(sql_server_firewall_xml)
87
+ )
88
+ results.must_be_kind_of Array
89
+ results[0].must_be_kind_of Azure::SqlDatabaseManagement::FirewallRule
90
+ results.count.must_equal 4
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,341 @@
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
+ Azure::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
+ end
31
+
32
+ describe '#list_servers' do
33
+ let(:response_xml) { Fixtures['list_sql_database'] }
34
+ let(:verb) { :get }
35
+ let(:request_path) { '/servers' }
36
+
37
+ before do
38
+ subject.client.stubs(:sql_management_request).with(
39
+ verb,
40
+ request_path,
41
+ anything
42
+ ).returns(mock_request)
43
+ end
44
+
45
+ it 'assembles a URI for the request' do
46
+ subject.list_servers
47
+ end
48
+
49
+ it 'returns a list of sql servers for the account' do
50
+ results = subject.list_servers
51
+ results.must_be_kind_of Array
52
+ results.length.must_equal 3
53
+ sql_server = results.first
54
+ sql_server.must_be_kind_of Azure::SqlDatabaseManagement::SqlServer
55
+ sql_server.name.must_equal 'nn1koc2ney'
56
+ sql_server.administrator_login.must_equal 'SqlServer2'
57
+ sql_server.location.must_equal 'West US'
58
+ sql_server.fully_qualified_domain_name.nil?.must_equal false
59
+ sql_server.version.must_equal '12.0'
60
+ end
61
+ end
62
+
63
+ describe '#delete_server' do
64
+ before do
65
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
66
+ :list_servers
67
+ ).returns([])
68
+ end
69
+
70
+ it 'error if sql server does not exists' do
71
+ s_name = 'unknown-server'
72
+ exception = assert_raises(Azure::SqlDatabaseManagement::ServerDoesNotExist) do
73
+ subject.delete_server s_name
74
+ end
75
+ assert_match(/Server named unknown-server does not exist./i,
76
+ exception.message)
77
+ end
78
+
79
+ end
80
+
81
+ describe '#list_sql_server_firewall_rules' do
82
+ let(:response_xml) { Fixtures['list_sql_server_firewall'] }
83
+ let(:verb) { :get }
84
+ let(:sql_server_name) { 'server1' }
85
+ let(:request_path) { "/servers/#{sql_server_name}/firewallrules" }
86
+
87
+ before do
88
+ sql_server = Azure::SqlDatabaseManagement::SqlServer.new do |server|
89
+ server.name = sql_server_name
90
+ end
91
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
92
+ :list_servers
93
+ ).returns([sql_server])
94
+
95
+ subject.client.stubs(:sql_management_request).with(
96
+ verb,
97
+ request_path
98
+ ).returns(mock_request)
99
+ end
100
+
101
+ it 'assembles a URI for the sql server firewall request' do
102
+ subject.list_sql_server_firewall_rules sql_server_name
103
+ end
104
+
105
+ it 'returns a list of firewall of given sql servers' do
106
+ results = subject.list_sql_server_firewall_rules sql_server_name
107
+ results.must_be_kind_of Array
108
+ results.length.must_equal 4
109
+ results.first.must_be_kind_of Azure::SqlDatabaseManagement::FirewallRule
110
+ end
111
+ end
112
+
113
+ describe '#create_server' do
114
+ let(:response_xml) { Fixtures['create_sql_database_server'] }
115
+ let(:verb) { :post }
116
+ let(:request_path) { '/servers' }
117
+ let(:password) { 'User@123' }
118
+ let(:login) { 'login_user' }
119
+ let(:geo_location) { 'West US' }
120
+
121
+ let(:sql_server_name) { 'server1' }
122
+ let(:sql_server) {
123
+ Azure::SqlDatabaseManagement::SqlServer.new do |server|
124
+ server.name = sql_server_name
125
+ end
126
+ }
127
+ let(:sql_server2) {
128
+ Azure::SqlDatabaseManagement::SqlServer.new do |server|
129
+ server.name = sql_server_name + '_blah'
130
+ end
131
+ }
132
+
133
+ before do
134
+ subject.client.stubs(:sql_management_request).with(
135
+ verb,
136
+ request_path,
137
+ anything
138
+ ).returns(mock_request)
139
+
140
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
141
+ :list_servers
142
+ ).returns([sql_server], [sql_server, sql_server2])
143
+
144
+ mock_request.stubs(:headers).returns(response_headers)
145
+ mock_request.expects(:call).returns(
146
+ Nokogiri::XML response_xml
147
+ ).at_least(0)
148
+ end
149
+
150
+ it 'create sql server' do
151
+ sql_server = subject.create_server(login, password, geo_location)
152
+ sql_server.name.must_equal 'gxyfzrhx2c'
153
+ sql_server.administrator_login.must_equal login
154
+ sql_server.location.must_equal geo_location
155
+ end
156
+
157
+ describe 'when catching a 500 error and verifying the server was made' do
158
+
159
+ before do
160
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
161
+ :list_servers
162
+ ).returns([sql_server])
163
+
164
+ subject.client.stubs(:sql_management_request).with(
165
+ verb,
166
+ request_path,
167
+ anything
168
+ ).returns(mock_request)
169
+ mock_request.stubs(:headers).returns(response_headers)
170
+ mock_request.expects(:call).raises(RuntimeError.new('Please retry the request'))
171
+ end
172
+
173
+ it 'will raise if nothing new is returned from the list_servers call' do
174
+ assert_raises(RuntimeError) do
175
+ subject.create_server(login, password, geo_location)
176
+ end
177
+ end
178
+
179
+ it 'will not raise if there is a new server returned from the second list_servers call' do
180
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
181
+ :list_servers
182
+ ).returns([sql_server], [sql_server, sql_server2])
183
+
184
+ subject.create_server(login, password, geo_location).must_equal sql_server2
185
+ end
186
+ end
187
+
188
+ end
189
+
190
+ describe '#set_sql_server_firewall_rule' do
191
+ it 'create sql server' do
192
+ exception = assert_raises(ArgumentError) do
193
+ subject.set_sql_server_firewall_rule('zv2nfoah2t1', nil)
194
+ end
195
+ assert_match(/Missing or empty parameter server_name, rule_name, start_ip or end_ip/i,
196
+ exception.message)
197
+ end
198
+ end
199
+ end
200
+
201
+ describe 'Management Certificate authentication Endpoint' do
202
+ before do
203
+ Azure::Loggerx.expects(:puts).returns(nil).at_least(0)
204
+ mock_request.stubs(:headers).returns(response_headers)
205
+ mock_request.expects(:call).returns(Nokogiri::XML response_xml).at_least(0)
206
+ end
207
+
208
+ describe '#list_servers' do
209
+ let(:response_xml) { Fixtures['list_sql_database'] }
210
+ let(:verb) { :get }
211
+ let(:request_path) { '/servers' }
212
+
213
+ before do
214
+ subject.client.stubs(:sql_management_request).with(verb, request_path).returns(mock_request)
215
+ end
216
+
217
+ it 'assembles a URI for the request' do
218
+ subject.list_servers
219
+ end
220
+
221
+ it 'returns a list of sql servers for the account' do
222
+ results = subject.list_servers
223
+ results.must_be_kind_of Array
224
+ results.length.must_equal 3
225
+ sql_server = results.first
226
+ sql_server.must_be_kind_of Azure::SqlDatabaseManagement::SqlServer
227
+ sql_server.name.must_equal 'nn1koc2ney'
228
+ sql_server.administrator_login.must_equal 'SqlServer2'
229
+ sql_server.location.must_equal 'West US'
230
+ sql_server.version.must_equal '12.0'
231
+ sql_server.fully_qualified_domain_name.nil?.must_equal false
232
+ end
233
+ end
234
+
235
+ describe '#delete_server' do
236
+ before do
237
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
238
+ :list_servers
239
+ ).returns([])
240
+ end
241
+
242
+ it 'error if sql server does not exists' do
243
+ s_name = 'unknown-server'
244
+ exception = assert_raises(Azure::SqlDatabaseManagement::ServerDoesNotExist) do
245
+ subject.delete_server s_name
246
+ end
247
+ assert_match(/Server named unknown-server does not exist./i,
248
+ exception.message)
249
+ end
250
+
251
+ end
252
+
253
+ describe '#list_sql_server_firewall_rules' do
254
+ let(:response_xml) { Fixtures['list_firewall_management_endpoint'] }
255
+ let(:verb) { :get }
256
+ let(:sql_server_name) { 'server1' }
257
+ let(:request_path) { "/servers/#{sql_server_name}/firewallrules" }
258
+
259
+ before do
260
+ sql_server = Azure::SqlDatabaseManagement::SqlServer.new do |server|
261
+ server.name = sql_server_name
262
+ end
263
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
264
+ :list_servers
265
+ ).returns([sql_server])
266
+
267
+ subject.client.stubs(:sql_management_request).with(
268
+ verb,
269
+ request_path
270
+ ).returns(mock_request)
271
+ end
272
+
273
+ it 'assembles a URI for the sql server firewall request' do
274
+ subject.list_sql_server_firewall_rules sql_server_name
275
+ end
276
+
277
+ it 'returns a list of firewall of given sql servers' do
278
+ results = subject.list_sql_server_firewall_rules sql_server_name
279
+ results.must_be_kind_of Array
280
+ results.length.must_equal 4
281
+ results.first.must_be_kind_of Azure::SqlDatabaseManagement::FirewallRule
282
+ end
283
+ end
284
+
285
+ describe '#create_server' do
286
+ let(:response_xml) { Fixtures['create_sql_database_server'] }
287
+ let(:verb) { :post }
288
+ let(:request_path) { '/servers' }
289
+ let(:password) { 'User@123' }
290
+ let(:login) { 'test_login' }
291
+ let(:geo_location) { 'West US' }
292
+
293
+ let(:sql_server_name) { 'server1' }
294
+ let(:sql_server) {
295
+ Azure::SqlDatabaseManagement::SqlServer.new do |server|
296
+ server.name = sql_server_name
297
+ end
298
+ }
299
+ let(:sql_server2) {
300
+ Azure::SqlDatabaseManagement::SqlServer.new do |server|
301
+ server.name = sql_server_name + '_blah'
302
+ end
303
+ }
304
+
305
+ before do
306
+ Azure::SqlDatabaseManagementService.any_instance.stubs(
307
+ :list_servers
308
+ ).returns([sql_server], [sql_server, sql_server2])
309
+
310
+ subject.client.stubs(:sql_management_request).with(
311
+ verb,
312
+ request_path,
313
+ anything
314
+ ).returns(mock_request)
315
+
316
+ mock_request.stubs(:headers).returns(response_headers)
317
+ mock_request.expects(:call).returns(
318
+ Nokogiri::XML response_xml
319
+ ).at_least(0)
320
+ end
321
+
322
+ it 'create sql server' do
323
+ sql_server = subject.create_server(login, password, geo_location)
324
+ sql_server.name.must_equal 'gxyfzrhx2c'
325
+ sql_server.administrator_login.must_equal login
326
+ sql_server.location.must_equal geo_location
327
+ end
328
+ end
329
+
330
+ describe '#set_sql_server_firewall_rule' do
331
+
332
+ it 'set server firewall with a nil param' do
333
+ exception = assert_raises(ArgumentError) do
334
+ subject.set_sql_server_firewall_rule('zv2nfoah2t1', nil)
335
+ end
336
+ assert_match(/Missing or empty parameter server_name, rule_name, start_ip or end_ip/i,
337
+ exception.message)
338
+ end
339
+ end
340
+ end
341
+ end
@@ -0,0 +1,74 @@
1
+ require 'test_helper'
2
+
3
+ describe Azure::HttpClient do
4
+ subject { Azure }
5
+
6
+ let :uri do
7
+ URI('https://management.core.windows.net')
8
+ end
9
+
10
+ describe '#agents' do
11
+
12
+ describe 'ssl vs non ssl uris' do
13
+ it 'should set verify true if using ssl' do
14
+ Azure.agents(uri).ssl[:verify].must_equal true
15
+ end
16
+
17
+ it 'should not set ssl if not using ssl' do
18
+ Azure.agents('http://localhost').ssl.must_be_empty
19
+ end
20
+ end
21
+
22
+ describe 'when using a ca_file' do
23
+ before do
24
+ Azure.config.ca_file = './blah.pem'
25
+ end
26
+
27
+ after do
28
+ Azure.config.ca_file = nil
29
+ end
30
+
31
+ it 'should set ca_file option on the http connection' do
32
+ Azure.agents(uri).ssl[:ca_file].must_equal './blah.pem'
33
+ end
34
+ end
35
+
36
+ describe 'when not using a ca_file' do
37
+ it 'should not set ca_file option on the http connection' do
38
+ Azure.agents(uri).ssl[:ca_file].must_be_nil
39
+ end
40
+ end
41
+
42
+ describe 'when using a http proxy' do
43
+ let(:proxy_uri){ URI('http://localhost:80') }
44
+
45
+ before do
46
+ ENV['HTTP_PROXY'] = proxy_uri.to_s
47
+ end
48
+
49
+ after do
50
+ ENV['HTTP_PROXY'] = nil
51
+ end
52
+
53
+ it 'should set the proxy configuration information on the http connection' do
54
+ Azure.agents(uri).proxy.uri.must_equal proxy_uri
55
+ end
56
+ end
57
+
58
+ describe 'when using a https proxy' do
59
+ let(:proxy_uri){ URI('https://localhost:443') }
60
+
61
+ before do
62
+ ENV['HTTPS_PROXY'] = proxy_uri.to_s
63
+ end
64
+
65
+ after do
66
+ ENV['HTTPS_PROXY'] = nil
67
+ end
68
+
69
+ it 'should set the proxy configuration information on the http connection' do
70
+ Azure.agents(uri).proxy.uri.must_equal proxy_uri
71
+ end
72
+ end
73
+ end
74
+ end