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::CloudServiceManagementService do
18
+
19
+ subject { Azure::CloudServiceManagementService.new }
20
+ let(:request_path) { '/services/hostedservices' }
21
+ let(:cloud_services_xml) { Fixtures['list_cloud_services'] }
22
+ let(:verb) { :get }
23
+ let(:mock_request) { mock }
24
+ let(:response) do
25
+ response = mock
26
+ response.stubs(:body).returns(cloud_services_xml)
27
+ response
28
+ end
29
+ let(:response_body) { Nokogiri::XML response.body }
30
+
31
+ before{
32
+ Azure::Loggerx.expects(:puts).returns(nil).at_least(0)
33
+ }
34
+
35
+ describe "#list_cloud_services" do
36
+ before do
37
+ Azure::BaseManagement::ManagementHttpRequest.stubs(:new).with(verb, request_path, anything).returns(mock_request)
38
+ mock_request.expects(:call).returns(response_body)
39
+ end
40
+
41
+ it 'assembles a URI for the request' do
42
+ subject.list_cloud_services
43
+ end
44
+
45
+ it 'sets the properties of the CloudService instance' do
46
+ cloud_service = subject.list_cloud_services.first
47
+ cloud_service.name.must_equal 'cloud-service-1'
48
+ end
49
+
50
+ it 'returns a list of cloud services for the subscription' do
51
+ results = subject.list_cloud_services
52
+ results.must_be_kind_of Array
53
+ results.length.must_equal 2
54
+ results.first.must_be_kind_of Azure::CloudServiceManagement::CloudService
55
+ end
56
+ end
57
+
58
+ describe "#get_cloud_service" do
59
+ before do
60
+ Azure::BaseManagement::ManagementHttpRequest.stubs(:new).with(verb, request_path, anything).returns(mock_request)
61
+ mock_request.expects(:call).returns(response_body)
62
+ end
63
+
64
+ it 'assembles a URI for the request' do
65
+ subject.get_cloud_service 'cloud-service-1'
66
+ end
67
+
68
+ it 'return cloud service instance if found cloud service with given name' do
69
+ result = subject.get_cloud_service 'cloud-service-1'
70
+ result.must_be_kind_of Azure::CloudServiceManagement::CloudService
71
+ end
72
+
73
+ it "returns nil if cloud service with given name doesn't exists" do
74
+ result = subject.get_cloud_service 'cloud-service-3'
75
+ result.must_equal nil
76
+ end
77
+ end
78
+
79
+ describe "#create_cloud_service" do
80
+
81
+ it "Create cloud service return message if cloud service exists of given name." do
82
+ Azure::BaseManagement::ManagementHttpRequest.any_instance.expects(:call).returns response_body
83
+ msg = subject.create_cloud_service 'cloud-service-1'
84
+ assert_match(/^Cloud service cloud-service-1 already exists*/, msg)
85
+ end
86
+
87
+ it "Create cloud service if cloud service doesn't exists of given name." do
88
+ Azure::CloudServiceManagementService.any_instance.stubs(:get_cloud_service).with('cloud-service-3').returns(false)
89
+ Azure::BaseManagement::ManagementHttpRequest.any_instance.expects(:call).returns nil
90
+ subject.create_cloud_service 'cloud-service-3'
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,169 @@
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::CloudServiceManagement::Serialization do
18
+ subject { Azure::CloudServiceManagement::Serialization }
19
+
20
+ let(:cloud_services_from_xml) { Fixtures['list_cloud_services'] }
21
+
22
+ describe '#cloud_services_from_xml' do
23
+ let (:cloud_services_xml) { Nokogiri::XML(cloud_services_from_xml) }
24
+ it 'accepts an XML string' do
25
+ subject.cloud_services_from_xml Nokogiri::XML(cloud_services_from_xml)
26
+ end
27
+
28
+ it 'returns an Array of CloudService instances' do
29
+ results = subject.cloud_services_from_xml(cloud_services_xml)
30
+ results.must_be_kind_of Array
31
+ results[0].must_be_kind_of(Azure::CloudServiceManagement::CloudService)
32
+ results.count.must_equal 2
33
+ end
34
+
35
+ it 'populates all properties for a cloud service' do
36
+ results = subject.cloud_services_from_xml(cloud_services_xml)
37
+ cloud = results.first
38
+ cloud_xml = cloud_services_xml.css('HostedServices HostedService').first
39
+ cloud.url.must_equal(cloud_xml.css('Url').text)
40
+ cloud.name.must_equal(cloud_xml.css('ServiceName').text)
41
+ cloud.description.must_equal(cloud_xml.css('Description').text)
42
+ cloud.location.must_equal(cloud_xml.css('Location').text)
43
+ cloud.label.must_equal(Base64.decode64(cloud_xml.css('Label').text))
44
+ cloud.status.must_equal(cloud_xml.css('Status').text)
45
+ cloud.date_created.must_equal(cloud_xml.css('DateCreated').text)
46
+ cloud.date_modified.must_equal(cloud_xml.css('DateLastModified').text)
47
+ cloud.extended_properties.size.must_equal(
48
+ cloud_xml.css('ExtendedProperties ExtendedProperty').size
49
+ )
50
+ cloud_xml.css('ExtendedProperties ExtendedProperty').each do |p|
51
+ cloud.extended_properties[p.css('Name').text].must_equal(
52
+ p.css('Value').text
53
+ )
54
+ end
55
+ cloud.default_winrm_certificate_thumbprint.must_equal(
56
+ cloud_xml.css('DefaultWinRMCertificateThumbprint').text
57
+ )
58
+ end
59
+ end
60
+
61
+ describe '#cloud_services_to_xml' do
62
+ let(:cloud_service_name) { 'cloud-service' }
63
+
64
+ it 'accepts an name and options hash' do
65
+ subject.cloud_services_to_xml cloud_service_name
66
+ end
67
+
68
+ it 'uses name for label if label not provided' do
69
+ results = subject.cloud_services_to_xml(
70
+ cloud_service_name,
71
+
72
+ location: 'East Asia'
73
+
74
+ )
75
+
76
+ doc = Nokogiri::XML(results)
77
+ Base64.decode64(doc.css('Label').text).must_equal(cloud_service_name)
78
+ end
79
+
80
+ it 'uses label when label is provided' do
81
+ results = subject.cloud_services_to_xml(
82
+ cloud_service_name,
83
+
84
+ location: 'East Asia',
85
+ label: 'My Label'
86
+
87
+ )
88
+
89
+ doc = Nokogiri::XML(results)
90
+ Base64.decode64(doc.css('Label').text).must_equal('My Label')
91
+ end
92
+
93
+ it 'serializes the argument to xml' do
94
+ results = subject.cloud_services_to_xml(
95
+ cloud_service_name, location: 'West US'
96
+ )
97
+ results.must_be_kind_of String
98
+ doc = Nokogiri::XML results
99
+ doc.css('ServiceName').text.must_equal cloud_service_name
100
+ doc.css('Location').text.must_equal 'West US'
101
+ end
102
+
103
+ it 'uses affinity_group if provided and ignores location' do
104
+ results = subject.cloud_services_to_xml(
105
+ cloud_service_name,
106
+
107
+ affinity_group_name: 'my-affinity-group',
108
+ location: 'West US'
109
+
110
+ )
111
+ results.must_be_kind_of String
112
+ doc = Nokogiri::XML results
113
+ doc.css('ServiceName').text.must_equal(cloud_service_name)
114
+ doc.css('AffinityGroup').wont_be_empty
115
+ doc.css('AffinityGroup').text.must_equal('my-affinity-group')
116
+ doc.css('Location').must_be_empty
117
+ end
118
+
119
+ it 'uses location when affinity group not provided' do
120
+ results = subject.cloud_services_to_xml(
121
+ cloud_service_name,
122
+
123
+ location: 'East Asia'
124
+
125
+ )
126
+
127
+ doc = Nokogiri::XML(results)
128
+ doc.css('AffinityGroup').must_be_empty
129
+ doc.css('Location').wont_be_empty
130
+ doc.css('Location').text.must_equal('East Asia')
131
+ end
132
+
133
+ it 'serializes extended properties when provided' do
134
+ xtended_props = {
135
+ prop_1_name: 'prop_1_value',
136
+ prop_2_name: 'prop_2_value'
137
+ }
138
+ results = subject.cloud_services_to_xml(
139
+ cloud_service_name,
140
+
141
+ extended_properties: xtended_props
142
+
143
+ )
144
+
145
+ doc = Nokogiri::XML(results)
146
+ props_xml = doc.css('ExtendedProperties ExtendedProperty')
147
+ props_xml.wont_be_empty
148
+ props_xml.size.must_equal(2)
149
+ props_xml.css('Name').first.text.must_equal('prop_1_name')
150
+ props_xml.css('Value').first.text.must_equal(
151
+ xtended_props[:"#{props_xml.css('Name').first.text}"]
152
+ )
153
+ props_xml.css('Name').last.text.must_equal('prop_2_name')
154
+ props_xml.css('Value').last.text.must_equal(
155
+ xtended_props[:"#{props_xml.css('Name').last.text}"]
156
+ )
157
+ end
158
+
159
+ it 'serializes the options hash to xml' do
160
+ results = subject.cloud_services_to_xml(
161
+ cloud_service_name,
162
+ location: 'East US'
163
+ )
164
+ doc = Nokogiri::XML results
165
+ doc.css('Location').text.must_equal 'East US'
166
+ results.must_be_kind_of String
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,112 @@
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
+
17
+ describe Azure do
18
+
19
+ describe 'default configuration for the azure module' do
20
+ subject { Azure }
21
+
22
+ it 'should provide itself as the base configuration through the config method' do
23
+ subject.config.must_equal Azure
24
+ end
25
+
26
+ it 'should provide access to the configuration through the config method' do
27
+ subject.config.management_endpoint.must_equal Azure.management_endpoint
28
+ end
29
+
30
+ it 'should start with the default management endpoint' do
31
+ Azure.management_endpoint.must_equal Azure::Default.management_endpoint
32
+ end
33
+
34
+ describe 'configuration of management certificates with files and strings' do
35
+ let(:private_key) {Azure.http_private_key}
36
+ let(:public_key) {Azure.http_certificate_key}
37
+
38
+ describe 'using a pfx' do
39
+
40
+ describe 'loaded as a string' do
41
+ before do
42
+ Azure.management_certificate = File.binread(Fixtures['management_certificate.pfx'])
43
+ end
44
+
45
+ it 'should populate the private key' do
46
+ refute_nil(private_key)
47
+ private_key.must_be_kind_of(OpenSSL::PKey::RSA)
48
+ end
49
+
50
+ it 'should populate the public key' do
51
+ refute_nil(public_key)
52
+ public_key.must_be_kind_of(OpenSSL::X509::Certificate)
53
+ end
54
+
55
+ end
56
+
57
+ describe 'loaded as a file' do
58
+ before do
59
+ Azure.management_certificate = Fixtures['management_certificate.pfx']
60
+ end
61
+
62
+ it 'should populate the private key' do
63
+ refute_nil(private_key)
64
+ private_key.must_be_kind_of(OpenSSL::PKey::RSA)
65
+ end
66
+
67
+ it 'should populate the public key' do
68
+ refute_nil(public_key)
69
+ public_key.must_be_kind_of(OpenSSL::X509::Certificate)
70
+ end
71
+ end
72
+ end
73
+
74
+ describe 'using a pem' do
75
+
76
+ describe 'loaded as a string' do
77
+ before do
78
+ Azure.management_certificate = File.read(Fixtures['management_certificate.pem'])
79
+ end
80
+
81
+ it 'should populate the private key' do
82
+ refute_nil(private_key)
83
+ private_key.must_be_kind_of(OpenSSL::PKey::RSA)
84
+ end
85
+
86
+ it 'should populate the public key' do
87
+ refute_nil(public_key)
88
+ public_key.must_be_kind_of(OpenSSL::X509::Certificate)
89
+ end
90
+
91
+ end
92
+
93
+ describe 'loaded as a file' do
94
+ before do
95
+ Azure.management_certificate = Fixtures['management_certificate.pem']
96
+ end
97
+
98
+ it 'should populate the private key' do
99
+ refute_nil(private_key)
100
+ private_key.must_be_kind_of(OpenSSL::PKey::RSA)
101
+ end
102
+
103
+ it 'should populate the public key' do
104
+ refute_nil(public_key)
105
+ public_key.must_be_kind_of(OpenSSL::X509::Certificate)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ end
@@ -0,0 +1,37 @@
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
+
17
+ describe Azure::Client do
18
+
19
+ describe 'default configuration for a client instance' do
20
+ subject { Azure.client }
21
+
22
+ Azure::Configurable.keys.each do |key|
23
+ it "should have the same value as its parent for #{key}" do
24
+ subject.send(key.to_sym).must_equal Azure.send(key.to_sym)
25
+ end
26
+
27
+ unless key == :management_certificate ## TODO: generate another pem and pfx for file / string tests then remove this
28
+ it "should have a different value as its parent after changing the client for #{key}" do
29
+ subject.send("#{key}=".to_sym, 'blah')
30
+ subject.send(key.to_sym).wont_equal Azure.send(key.to_sym)
31
+ end
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,51 @@
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/auth/shared_key_lite'
17
+
18
+ describe Azure::Core::Auth::SharedKeyLite do
19
+ subject { Azure::Core::Auth::SharedKeyLite.new 'account-name', 'YWNjZXNzLWtleQ==' }
20
+
21
+ let(:verb) { 'POST' }
22
+ let(:uri) { URI.parse 'http://dummy.uri/resource' }
23
+ let(:headers) do
24
+ {
25
+ 'Content-MD5' => 'foo',
26
+ 'Content-Type' => 'foo',
27
+ 'Date' => 'foo'
28
+ }
29
+ end
30
+ let(:headers_without_date) {
31
+ headers_without_date = headers.clone
32
+ headers_without_date.delete 'Date'
33
+ headers_without_date
34
+ }
35
+
36
+ describe 'sign' do
37
+ it 'creates a signature from the provided HTTP method, uri, and reduced set of standard headers' do
38
+ subject.sign(verb, uri, headers).must_equal 'account-name:vVFnj/+27JFABZgpt5H8g/JVU2HuWFnjv5aeUIxQvBE='
39
+ end
40
+
41
+ it 'ignores standard headers other than Content-MD5, Content-Type, and Date' do
42
+ subject.sign(verb, uri, headers.merge({'Content-Encoding' => 'foo'})).must_equal 'account-name:vVFnj/+27JFABZgpt5H8g/JVU2HuWFnjv5aeUIxQvBE='
43
+ end
44
+
45
+ it 'throws IndexError when there is no Date header' do
46
+ assert_raises IndexError do
47
+ subject.sign(verb, uri, headers_without_date)
48
+ end
49
+ end
50
+ end
51
+ end