azure 0.6.0 → 0.6.1

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 (283) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -11
  3. data/.travis.yml +11 -33
  4. data/ChangeLog.txt +20 -5
  5. data/Gemfile +15 -15
  6. data/README.md +541 -537
  7. data/Rakefile +129 -127
  8. data/azure.gemspec +43 -42
  9. data/lib/azure.rb +52 -51
  10. data/lib/azure/base_management/affinity_group.rb +32 -32
  11. data/lib/azure/base_management/base_management_service.rb +234 -234
  12. data/lib/azure/base_management/location.rb +27 -27
  13. data/lib/azure/base_management/management_http_request.rb +171 -148
  14. data/lib/azure/base_management/serialization.rb +129 -129
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  16. data/lib/azure/blob/blob.rb +31 -31
  17. data/lib/azure/blob/blob_service.rb +1423 -1423
  18. data/lib/azure/blob/block.rb +30 -30
  19. data/lib/azure/blob/container.rb +31 -31
  20. data/lib/azure/blob/serialization.rb +284 -284
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -31
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +134 -125
  23. data/lib/azure/cloud_service_management/serialization.rb +101 -63
  24. data/lib/azure/core.rb +39 -36
  25. data/lib/azure/core/auth/authorizer.rb +36 -36
  26. data/lib/azure/core/auth/shared_key.rb +110 -110
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -48
  28. data/lib/azure/core/auth/signer.rb +48 -48
  29. data/lib/azure/core/configuration.rb +211 -184
  30. data/lib/azure/core/error.rb +22 -22
  31. data/lib/azure/core/filtered_service.rb +43 -43
  32. data/lib/azure/core/http/debug_filter.rb +35 -35
  33. data/lib/azure/core/http/http_error.rb +88 -88
  34. data/lib/azure/core/http/http_filter.rb +52 -52
  35. data/lib/azure/core/http/http_request.rb +157 -157
  36. data/lib/azure/core/http/http_response.rb +140 -140
  37. data/lib/azure/core/http/retry_policy.rb +73 -73
  38. data/lib/azure/core/http/signer_filter.rb +33 -33
  39. data/lib/azure/core/service.rb +62 -62
  40. data/lib/azure/core/signed_service.rb +42 -42
  41. data/lib/azure/core/utility.rb +190 -190
  42. data/lib/azure/queue/message.rb +29 -29
  43. data/lib/azure/queue/queue.rb +28 -28
  44. data/lib/azure/queue/queue_service.rb +567 -567
  45. data/lib/azure/queue/serialization.rb +106 -106
  46. data/lib/azure/service/access_policy.rb +25 -25
  47. data/lib/azure/service/enumeration_results.rb +20 -20
  48. data/lib/azure/service/logging.rb +31 -31
  49. data/lib/azure/service/metrics.rb +30 -30
  50. data/lib/azure/service/retention_policy.rb +24 -24
  51. data/lib/azure/service/serialization.rb +239 -239
  52. data/lib/azure/service/signed_identifier.rb +29 -29
  53. data/lib/azure/service/storage_service.rb +78 -78
  54. data/lib/azure/service/storage_service_properties.rb +31 -31
  55. data/lib/azure/service_bus/action.rb +21 -21
  56. data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
  57. data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
  58. data/lib/azure/service_bus/brokered_message.rb +123 -123
  59. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
  60. data/lib/azure/service_bus/correlation_filter.rb +45 -45
  61. data/lib/azure/service_bus/empty_rule_action.rb +29 -29
  62. data/lib/azure/service_bus/false_filter.rb +38 -38
  63. data/lib/azure/service_bus/filter.rb +21 -21
  64. data/lib/azure/service_bus/interval.rb +103 -103
  65. data/lib/azure/service_bus/queue.rb +229 -229
  66. data/lib/azure/service_bus/resource.rb +108 -108
  67. data/lib/azure/service_bus/rule.rb +97 -97
  68. data/lib/azure/service_bus/rule_aspect.rb +34 -34
  69. data/lib/azure/service_bus/serialization.rb +160 -160
  70. data/lib/azure/service_bus/service_bus_service.rb +828 -828
  71. data/lib/azure/service_bus/sql_filter.rb +50 -50
  72. data/lib/azure/service_bus/sql_rule_action.rb +50 -50
  73. data/lib/azure/service_bus/subscription.rb +183 -183
  74. data/lib/azure/service_bus/topic.rb +186 -186
  75. data/lib/azure/service_bus/true_filter.rb +38 -38
  76. data/lib/azure/sql_database_management/serialization.rb +111 -90
  77. data/lib/azure/sql_database_management/sql_database.rb +31 -31
  78. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -202
  79. data/lib/azure/storage_management/serialization.rb +190 -50
  80. data/lib/azure/storage_management/storage_account.rb +40 -29
  81. data/lib/azure/storage_management/storage_management_service.rb +166 -99
  82. data/lib/azure/table/auth/shared_key.rb +92 -92
  83. data/lib/azure/table/auth/shared_key_lite.rb +44 -44
  84. data/lib/azure/table/batch.rb +329 -329
  85. data/lib/azure/table/batch_response.rb +118 -118
  86. data/lib/azure/table/edmtype.rb +126 -126
  87. data/lib/azure/table/entity.rb +30 -30
  88. data/lib/azure/table/guid.rb +23 -23
  89. data/lib/azure/table/query.rb +111 -111
  90. data/lib/azure/table/serialization.rb +107 -107
  91. data/lib/azure/table/table_service.rb +559 -559
  92. data/lib/azure/version.rb +30 -30
  93. data/lib/azure/virtual_machine_image_management/serialization.rb +49 -49
  94. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +27 -27
  95. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +27 -27
  96. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +66 -66
  97. data/lib/azure/virtual_machine_management/serialization.rb +257 -247
  98. data/lib/azure/virtual_machine_management/virtual_machine.rb +41 -57
  99. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +317 -304
  100. data/lib/azure/virtual_network_management/serialization.rb +186 -186
  101. data/lib/azure/virtual_network_management/virtual_network.rb +36 -36
  102. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
  103. data/test/fixtures/affinity_group.xml +33 -33
  104. data/test/fixtures/all_containers.xml +20 -20
  105. data/test/fixtures/all_tables.xml +22 -22
  106. data/test/fixtures/certificate.pem +21 -21
  107. data/test/fixtures/container_acl.xml +11 -11
  108. data/test/fixtures/create_sql_database_server.xml +1 -1
  109. data/test/fixtures/create_storage_desc_error.xml +5 -0
  110. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  111. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  112. data/test/fixtures/create_storage_full_error.xml +6 -0
  113. data/test/fixtures/create_storage_label_error.xml +5 -0
  114. data/test/fixtures/create_storage_location_error.xml +5 -0
  115. data/test/fixtures/create_storage_name_error.xml +6 -0
  116. data/test/fixtures/create_table_response_entry.xml +15 -15
  117. data/test/fixtures/delete_storage_container_error.xml +5 -0
  118. data/test/fixtures/delete_storage_error.xml +5 -0
  119. data/test/fixtures/deployment_error.xml +5 -5
  120. data/test/fixtures/get_storage_account_error.xml +5 -0
  121. data/test/fixtures/get_storage_account_properties.xml +32 -0
  122. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  123. data/test/fixtures/http_error.xml +5 -5
  124. data/test/fixtures/insert_entity_response_entry.xml +25 -25
  125. data/test/fixtures/list_affinity_groups.xml +22 -22
  126. data/test/fixtures/list_blobs.xml +120 -120
  127. data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
  128. data/test/fixtures/list_blocks_all.xml +22 -22
  129. data/test/fixtures/list_blocks_committed.xml +12 -12
  130. data/test/fixtures/list_cloud_services.xml +38 -28
  131. data/test/fixtures/list_containers.xml +37 -37
  132. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  133. data/test/fixtures/list_images.xml +110 -110
  134. data/test/fixtures/list_locations.xml +62 -62
  135. data/test/fixtures/list_page_ranges.xml +10 -10
  136. data/test/fixtures/list_sql_database.xml +36 -36
  137. data/test/fixtures/list_sql_server_firewall.xml +23 -23
  138. data/test/fixtures/list_storage_accounts.xml +45 -45
  139. data/test/fixtures/list_virtual_networks.xml +92 -92
  140. data/test/fixtures/logging.xml +11 -11
  141. data/test/fixtures/management_certificate.pem +55 -55
  142. data/test/fixtures/messages.xml +12 -12
  143. data/test/fixtures/metrics.xml +10 -10
  144. data/test/fixtures/privatekey.key +28 -28
  145. data/test/fixtures/query_entities_empty_response.xml +7 -7
  146. data/test/fixtures/query_entities_response.xml +45 -45
  147. data/test/fixtures/queue_service_properties.xml +22 -22
  148. data/test/fixtures/queue_service_properties_original.xml +19 -19
  149. data/test/fixtures/queues.xml +16 -16
  150. data/test/fixtures/retention_policy.xml +5 -5
  151. data/test/fixtures/sb_default_create_queue_response.xml +23 -23
  152. data/test/fixtures/sb_default_create_topic_response.xml +18 -18
  153. data/test/fixtures/sb_get_access_token_response.txt +1 -1
  154. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
  155. data/test/fixtures/storage_service_properties.xml +23 -23
  156. data/test/fixtures/update_storage_account.xml +16 -0
  157. data/test/fixtures/update_storage_error.xml +5 -0
  158. data/test/fixtures/updated_storage_accounts.xml +53 -0
  159. data/test/fixtures/virtual_machine.xml +108 -107
  160. data/test/fixtures/windows_virtual_machine.xml +106 -106
  161. data/test/integration/affinity_group/Affinity_test.rb +55 -55
  162. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
  163. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
  164. data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
  165. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
  166. data/test/integration/blob/blob_gb18030_test.rb +199 -199
  167. data/test/integration/blob/blob_metadata_test.rb +75 -75
  168. data/test/integration/blob/blob_pages_test.rb +119 -119
  169. data/test/integration/blob/blob_properties_test.rb +77 -77
  170. data/test/integration/blob/block_blob_test.rb +254 -254
  171. data/test/integration/blob/container/container_acl_test.rb +69 -69
  172. data/test/integration/blob/container/container_metadata_test.rb +50 -50
  173. data/test/integration/blob/container/create_container_test.rb +60 -60
  174. data/test/integration/blob/container/delete_container_test.rb +39 -39
  175. data/test/integration/blob/container/get_container_properties_test.rb +48 -48
  176. data/test/integration/blob/container/list_containers_test.rb +79 -79
  177. data/test/integration/blob/container/root_container_test.rb +53 -53
  178. data/test/integration/blob/copy_blob_test.rb +113 -113
  179. data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
  180. data/test/integration/blob/create_page_blob_test.rb +83 -83
  181. data/test/integration/blob/delete_blob_test.rb +159 -159
  182. data/test/integration/blob/get_blob_test.rb +65 -65
  183. data/test/integration/blob/informative_errors_test.rb +38 -38
  184. data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
  185. data/test/integration/blob/lease/break_lease_test.rb +40 -40
  186. data/test/integration/blob/lease/release_lease_test.rb +40 -40
  187. data/test/integration/blob/lease/renew_lease_test.rb +42 -42
  188. data/test/integration/blob/list_blobs_test.rb +113 -113
  189. data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
  190. data/test/integration/database/create_sql_server_test.rb +53 -57
  191. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -72
  192. data/test/integration/database/delete_sql_server_test.rb +58 -63
  193. data/test/integration/database/list_sql_server_firewall_test.rb +45 -46
  194. data/test/integration/database/list_sql_servers_test.rb +44 -45
  195. data/test/integration/database/reset_password_sql_server_test.rb +55 -56
  196. data/test/integration/location/Location_List_test.rb +39 -39
  197. data/test/integration/queue/clear_messages_test.rb +42 -42
  198. data/test/integration/queue/create_message_test.rb +75 -75
  199. data/test/integration/queue/create_queue_test.rb +50 -50
  200. data/test/integration/queue/delete_message_test.rb +67 -67
  201. data/test/integration/queue/delete_queue_test.rb +45 -45
  202. data/test/integration/queue/informative_errors_test.rb +41 -41
  203. data/test/integration/queue/list_messages_encoded_test.rb +79 -79
  204. data/test/integration/queue/list_messages_test.rb +79 -79
  205. data/test/integration/queue/list_queues_test.rb +44 -44
  206. data/test/integration/queue/peek_messages_test.rb +59 -59
  207. data/test/integration/queue/queue_gb18030_test.rb +131 -131
  208. data/test/integration/queue/queue_metadata_test.rb +40 -40
  209. data/test/integration/queue/update_message_test.rb +74 -74
  210. data/test/integration/service_bus/informative_errors_test.rb +36 -36
  211. data/test/integration/service_bus/queues_scenario_test.rb +200 -200
  212. data/test/integration/service_bus/queues_test.rb +265 -265
  213. data/test/integration/service_bus/rules_test.rb +144 -144
  214. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
  215. data/test/integration/service_bus/scenario_test.rb +101 -101
  216. data/test/integration/service_bus/subscriptions_test.rb +211 -211
  217. data/test/integration/service_bus/topics_scenario_test.rb +406 -406
  218. data/test/integration/service_bus/topics_test.rb +129 -129
  219. data/test/integration/storage_management/storage_management_test.rb +160 -0
  220. data/test/integration/table/create_table_test.rb +35 -35
  221. data/test/integration/table/delete_entity_batch_test.rb +106 -106
  222. data/test/integration/table/delete_entity_test.rb +93 -93
  223. data/test/integration/table/delete_table_test.rb +39 -39
  224. data/test/integration/table/get_table_test.rb +36 -36
  225. data/test/integration/table/informative_errors_test.rb +38 -38
  226. data/test/integration/table/insert_entity_batch_test.rb +99 -99
  227. data/test/integration/table/insert_entity_test.rb +87 -87
  228. data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
  229. data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
  230. data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
  231. data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
  232. data/test/integration/table/merge_entity_batch_test.rb +127 -127
  233. data/test/integration/table/merge_entity_test.rb +112 -112
  234. data/test/integration/table/query_entities_test.rb +194 -194
  235. data/test/integration/table/query_tables_test.rb +42 -42
  236. data/test/integration/table/query_test.rb +250 -250
  237. data/test/integration/table/table_acl_test.rb +51 -51
  238. data/test/integration/table/table_gb18030_test.rb +355 -355
  239. data/test/integration/table/update_entity_batch_test.rb +148 -148
  240. data/test/integration/table/update_entity_test.rb +130 -130
  241. data/test/integration/test_helper.rb +42 -44
  242. data/test/integration/vm/VM_Create_test.rb +213 -235
  243. data/test/integration/vm/VM_Delete_test.rb +55 -55
  244. data/test/integration/vm/VM_List_test.rb +71 -71
  245. data/test/integration/vm/VM_ShutDown_test.rb +59 -59
  246. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
  247. data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
  248. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
  249. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
  250. data/test/support/env.rb +19 -19
  251. data/test/support/fixtures.rb +36 -36
  252. data/test/support/name_generator.rb +160 -160
  253. data/test/support/stubs.rb +42 -42
  254. data/test/support/virtual_machine_name_generator.rb +117 -127
  255. data/test/support/virtual_network_helper.rb +73 -73
  256. data/test/test_helper.rb +52 -52
  257. data/test/unit/affinity_group/affinity_group_test.rb +192 -192
  258. data/test/unit/affinity_group/serialization_test.rb +88 -88
  259. data/test/unit/base_management/location_test.rb +57 -57
  260. data/test/unit/blob/blob_service_test.rb +1946 -1946
  261. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
  262. data/test/unit/cloud_service_management/serialization_test.rb +169 -76
  263. data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
  264. data/test/unit/core/auth/shared_key_test.rb +58 -58
  265. data/test/unit/core/auth/signer_test.rb +30 -30
  266. data/test/unit/core/http/http_error_test.rb +57 -57
  267. data/test/unit/core/http/http_request_test.rb +66 -66
  268. data/test/unit/core/http/http_response_test.rb +45 -45
  269. data/test/unit/core/http/retry_policy_test.rb +23 -23
  270. data/test/unit/database/serialization_test.rb +97 -95
  271. data/test/unit/database/sql_database_server_service_test.rb +288 -152
  272. data/test/unit/service/serialization_test.rb +501 -501
  273. data/test/unit/service/storage_service_test.rb +290 -290
  274. data/test/unit/storage_management/serialization_test.rb +232 -65
  275. data/test/unit/storage_management/storage_management_service_test.rb +233 -94
  276. data/test/unit/table/edmtype_test.rb +107 -107
  277. data/test/unit/virtual_machine_image_management/serialization_test.rb +34 -34
  278. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +60 -60
  279. data/test/unit/virtual_machine_management/serialization_test.rb +119 -116
  280. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +383 -386
  281. data/test/unit/vnet/serialization_test.rb +187 -187
  282. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
  283. metadata +55 -23
@@ -1,291 +1,291 @@
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/service/storage_service"
17
- require "azure/core/http/http_request"
18
- require "azure/core/http/signer_filter"
19
- require "azure/service/storage_service_properties"
20
-
21
- describe Azure::Service::StorageService do
22
-
23
- let(:uri){ URI.parse "http://dummy.uri/resource" }
24
- let(:method){ :get }
25
-
26
- subject do
27
- storage_service = Azure::Service::StorageService.new
28
- storage_service.host = "http://dumyhost.uri"
29
- storage_service
30
- end
31
-
32
- describe "#call" do
33
- let(:mock_request){ mock() }
34
- let(:mock_signer_filter){ mock() }
35
-
36
- before do
37
- Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, nil).returns(mock_request)
38
- Azure::Core::Http::SignerFilter.stubs(:new).returns(mock_signer_filter)
39
-
40
- mock_request.expects(:call)
41
- end
42
-
43
- it "adds a SignerFilter to the HTTP pipeline" do
44
- mock_request.expects(:with_filter).with(mock_signer_filter)
45
- subject.call(method, uri)
46
- end
47
-
48
- describe "when passed the optional headers arguement" do
49
- before do
50
- mock_request.expects(:with_filter).with(mock_signer_filter)
51
- end
52
-
53
- let(:mock_headers) {{
54
- "Other-Header"=>"SomeValue",
55
- "Custom-Header"=>"PreviousValue",
56
- "connection"=>"PreviousValue"
57
- }}
58
-
59
- it "merges the custom headers with the HttpRequest headers" do
60
- mock_request.expects(:headers).returns(mock_headers).at_least(2)
61
- subject.call(method, uri, nil, { "Custom-Header"=>"CustomValue"} )
62
-
63
- mock_headers["Other-Header"].must_equal "SomeValue"
64
- mock_headers["Custom-Header"].must_equal "CustomValue"
65
- mock_headers["connection"].must_equal "keep-alive"
66
- end
67
- end
68
-
69
- describe "when passed the optional body arguement" do
70
- before do
71
- mock_request.expects(:with_filter).with(mock_signer_filter)
72
- end
73
-
74
- it "passes the body to the to HttpRequest" do
75
- Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, 'body').returns(mock_request)
76
- subject.call(method, uri, "body")
77
- end
78
- end
79
-
80
- describe "when with_filter was called" do
81
- before do
82
- mock_request.expects(:with_filter).with(mock_signer_filter)
83
- end
84
-
85
- it "builds the HTTP pipeline by passing the filters to the HTTPRequest" do
86
- filter = mock()
87
- filter1 = mock()
88
-
89
- subject.with_filter filter
90
- subject.with_filter filter1
91
-
92
- mock_request.expects(:with_filter).with(filter)
93
- mock_request.expects(:with_filter).with(filter1)
94
-
95
- subject.call(method, uri)
96
- end
97
- end
98
- end
99
-
100
- describe "#with_filter" do
101
- it "appends filters to a list of filters that will be used in the #call method" do
102
- initial_length = subject.filters.length
103
- filter = mock()
104
- subject.with_filter filter
105
- subject.filters.length.must_equal initial_length + 1
106
- end
107
-
108
- it "accepts object instances as filters" do
109
- filter = mock()
110
- subject.with_filter filter
111
- subject.filters.last.must_equal filter
112
- end
113
-
114
- it "accepts blocks as filters" do
115
- subject.with_filter do |a,b| end
116
- subject.filters.last.class.must_equal Proc
117
- end
118
-
119
- it "preserves the order of the filters" do
120
- subject.filters = []
121
-
122
- filter = mock()
123
- filter1 = mock()
124
-
125
- subject.with_filter filter
126
- subject.with_filter filter1
127
- subject.with_filter do |a,b| end
128
-
129
- subject.filters.first.must_equal filter
130
- subject.filters[1].must_equal filter1
131
- subject.filters.last.class.must_equal Proc
132
- end
133
- end
134
-
135
- describe "#get_service_properties" do
136
- let(:service_properties_xml) { Fixtures["storage_service_properties"] }
137
- let(:service_properties) { Azure::Service::StorageServiceProperties.new }
138
- let(:response) {
139
- response = mock()
140
- response.stubs(:body).returns(service_properties_xml)
141
- response
142
- }
143
-
144
- let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
145
-
146
- before do
147
- Azure::Service::Serialization.stubs(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
148
- subject.stubs(:service_properties_uri).returns(service_properties_uri)
149
- subject.stubs(:call).with(:get, service_properties_uri).returns(response)
150
- end
151
-
152
- it "calls the service_properties_uri method to determine the correct uri" do
153
- subject.expects(:service_properties_uri).returns(service_properties_uri)
154
- subject.get_service_properties
155
- end
156
-
157
- it "gets the response from the HTTP API" do
158
- subject.expects(:call).with(:get, service_properties_uri).returns(response)
159
- subject.get_service_properties
160
- end
161
-
162
- it "deserializes the response from xml" do
163
- Azure::Service::Serialization.expects(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
164
- subject.get_service_properties
165
- end
166
-
167
- it "returns a StorageServiceProperties instance" do
168
- result = subject.get_service_properties
169
- result.must_be_kind_of Azure::Service::StorageServiceProperties
170
- end
171
- end
172
-
173
- describe "#set_service_properties" do
174
- let(:service_properties_xml) { Fixtures["storage_service_properties"] }
175
- let(:service_properties) { Azure::Service::StorageServiceProperties.new }
176
- let(:response) {
177
- response = mock()
178
- response.stubs(:success?).returns(true)
179
- response
180
- }
181
-
182
- let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
183
-
184
- before do
185
- Azure::Service::Serialization.stubs(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
186
- subject.stubs(:service_properties_uri).returns(service_properties_uri)
187
- subject.stubs(:call).with(:put, service_properties_uri, service_properties_xml).returns(response)
188
- end
189
-
190
- it "calls the service_properties_uri method to determine the correct uri" do
191
- subject.expects(:service_properties_uri).returns(service_properties_uri)
192
- subject.set_service_properties service_properties
193
- end
194
-
195
- it "posts to the HTTP API" do
196
- subject.expects(:call).with(:put, service_properties_uri, service_properties_xml).returns(response)
197
- subject.set_service_properties service_properties
198
- end
199
-
200
- it "serializes the StorageServiceProperties object to xml" do
201
- Azure::Service::Serialization.expects(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
202
- subject.set_service_properties service_properties
203
- end
204
-
205
- it "returns nil on success" do
206
- result = subject.set_service_properties service_properties
207
- result.must_equal nil
208
- end
209
- end
210
-
211
- describe "service_properties_uri" do
212
- it "returns an instance of URI" do
213
- subject.service_properties_uri.must_be_kind_of URI
214
- end
215
-
216
- it "uses the value of the host property as the base of the url" do
217
- subject.service_properties_uri.to_s.must_include subject.host
218
- subject.host = "http://something.else"
219
- subject.service_properties_uri.to_s.must_include subject.host
220
- end
221
-
222
- it "sets a query string that specifies the storage service properties endpoint" do
223
- subject.service_properties_uri.query.must_include "restype=service&comp=properties"
224
- end
225
- end
226
-
227
- describe "#add_metadata_to_headers" do
228
- it "prefixes header names with x-ms-meta- but does not modify the values" do
229
- headers = {}
230
- subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
231
- headers.keys.must_include "x-ms-meta-Foo"
232
- headers["x-ms-meta-Foo"].must_equal "Bar"
233
- end
234
-
235
- it "updates any existing x-ms-meta-* headers with the new values" do
236
- headers = { "x-ms-meta-Foo"=> "Foo"}
237
- subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
238
- headers["x-ms-meta-Foo"].must_equal "Bar"
239
- end
240
- end
241
-
242
- describe "#generate_uri" do
243
- it "returns a URI instance" do
244
- subject.generate_uri().must_be_kind_of ::URI
245
- end
246
-
247
- describe "when called with no arguments" do
248
- it "returns the StorageService host URL" do
249
- subject.generate_uri().to_s.must_equal "http://dumyhost.uri/"
250
- end
251
- end
252
-
253
- describe "when passed an optional path" do
254
- it "adds the path to the host url" do
255
- subject.generate_uri("resource/entity/").path.must_equal "/resource/entity/"
256
- end
257
-
258
- it "correctly joins the path if the host url contained a path" do
259
- subject.host = "http://dummy.uri/host/path"
260
- subject.generate_uri("resource/entity/").path.must_equal "/host/path/resource/entity/"
261
- end
262
- end
263
-
264
- describe "when passed an Hash of query parameters" do
265
-
266
- it "encodes the keys" do
267
- subject.generate_uri('',{"key !" => "value"}).query.must_include "key+%21=value"
268
- end
269
-
270
- it "encodes the values" do
271
- subject.generate_uri('',{"key" => "value !"}).query.must_include "key=value+%21"
272
- end
273
-
274
- it "sets the query string to the encoded result" do
275
- subject.generate_uri('',{ "key" => "value !", "key !"=>"value"}).query.must_equal "key=value+%21&key+%21=value"
276
- end
277
-
278
- describe "when the query parameters include a timeout key" do
279
- it "overrides the default timeout" do
280
- subject.generate_uri('', {"timeout" => 45}).query.must_equal "timeout=45"
281
- end
282
- end
283
-
284
- describe "when the query parameters are nil" do
285
- it "does not include any query parameters" do
286
- subject.generate_uri('', nil).query.must_equal nil
287
- end
288
- end
289
- end
290
- end
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/service/storage_service"
17
+ require "azure/core/http/http_request"
18
+ require "azure/core/http/signer_filter"
19
+ require "azure/service/storage_service_properties"
20
+
21
+ describe Azure::Service::StorageService do
22
+
23
+ let(:uri){ URI.parse "http://dummy.uri/resource" }
24
+ let(:method){ :get }
25
+
26
+ subject do
27
+ storage_service = Azure::Service::StorageService.new
28
+ storage_service.host = "http://dumyhost.uri"
29
+ storage_service
30
+ end
31
+
32
+ describe "#call" do
33
+ let(:mock_request){ mock() }
34
+ let(:mock_signer_filter){ mock() }
35
+
36
+ before do
37
+ Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, nil).returns(mock_request)
38
+ Azure::Core::Http::SignerFilter.stubs(:new).returns(mock_signer_filter)
39
+
40
+ mock_request.expects(:call)
41
+ end
42
+
43
+ it "adds a SignerFilter to the HTTP pipeline" do
44
+ mock_request.expects(:with_filter).with(mock_signer_filter)
45
+ subject.call(method, uri)
46
+ end
47
+
48
+ describe "when passed the optional headers arguement" do
49
+ before do
50
+ mock_request.expects(:with_filter).with(mock_signer_filter)
51
+ end
52
+
53
+ let(:mock_headers) {{
54
+ "Other-Header"=>"SomeValue",
55
+ "Custom-Header"=>"PreviousValue",
56
+ "connection"=>"PreviousValue"
57
+ }}
58
+
59
+ it "merges the custom headers with the HttpRequest headers" do
60
+ mock_request.expects(:headers).returns(mock_headers).at_least(2)
61
+ subject.call(method, uri, nil, { "Custom-Header"=>"CustomValue"} )
62
+
63
+ mock_headers["Other-Header"].must_equal "SomeValue"
64
+ mock_headers["Custom-Header"].must_equal "CustomValue"
65
+ mock_headers["connection"].must_equal "keep-alive"
66
+ end
67
+ end
68
+
69
+ describe "when passed the optional body arguement" do
70
+ before do
71
+ mock_request.expects(:with_filter).with(mock_signer_filter)
72
+ end
73
+
74
+ it "passes the body to the to HttpRequest" do
75
+ Azure::Core::Http::HttpRequest.stubs(:new).with(method, uri, 'body').returns(mock_request)
76
+ subject.call(method, uri, "body")
77
+ end
78
+ end
79
+
80
+ describe "when with_filter was called" do
81
+ before do
82
+ mock_request.expects(:with_filter).with(mock_signer_filter)
83
+ end
84
+
85
+ it "builds the HTTP pipeline by passing the filters to the HTTPRequest" do
86
+ filter = mock()
87
+ filter1 = mock()
88
+
89
+ subject.with_filter filter
90
+ subject.with_filter filter1
91
+
92
+ mock_request.expects(:with_filter).with(filter)
93
+ mock_request.expects(:with_filter).with(filter1)
94
+
95
+ subject.call(method, uri)
96
+ end
97
+ end
98
+ end
99
+
100
+ describe "#with_filter" do
101
+ it "appends filters to a list of filters that will be used in the #call method" do
102
+ initial_length = subject.filters.length
103
+ filter = mock()
104
+ subject.with_filter filter
105
+ subject.filters.length.must_equal initial_length + 1
106
+ end
107
+
108
+ it "accepts object instances as filters" do
109
+ filter = mock()
110
+ subject.with_filter filter
111
+ subject.filters.last.must_equal filter
112
+ end
113
+
114
+ it "accepts blocks as filters" do
115
+ subject.with_filter do |a,b| end
116
+ subject.filters.last.class.must_equal Proc
117
+ end
118
+
119
+ it "preserves the order of the filters" do
120
+ subject.filters = []
121
+
122
+ filter = mock()
123
+ filter1 = mock()
124
+
125
+ subject.with_filter filter
126
+ subject.with_filter filter1
127
+ subject.with_filter do |a,b| end
128
+
129
+ subject.filters.first.must_equal filter
130
+ subject.filters[1].must_equal filter1
131
+ subject.filters.last.class.must_equal Proc
132
+ end
133
+ end
134
+
135
+ describe "#get_service_properties" do
136
+ let(:service_properties_xml) { Fixtures["storage_service_properties"] }
137
+ let(:service_properties) { Azure::Service::StorageServiceProperties.new }
138
+ let(:response) {
139
+ response = mock()
140
+ response.stubs(:body).returns(service_properties_xml)
141
+ response
142
+ }
143
+
144
+ let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
145
+
146
+ before do
147
+ Azure::Service::Serialization.stubs(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
148
+ subject.stubs(:service_properties_uri).returns(service_properties_uri)
149
+ subject.stubs(:call).with(:get, service_properties_uri).returns(response)
150
+ end
151
+
152
+ it "calls the service_properties_uri method to determine the correct uri" do
153
+ subject.expects(:service_properties_uri).returns(service_properties_uri)
154
+ subject.get_service_properties
155
+ end
156
+
157
+ it "gets the response from the HTTP API" do
158
+ subject.expects(:call).with(:get, service_properties_uri).returns(response)
159
+ subject.get_service_properties
160
+ end
161
+
162
+ it "deserializes the response from xml" do
163
+ Azure::Service::Serialization.expects(:service_properties_from_xml).with(service_properties_xml).returns(service_properties)
164
+ subject.get_service_properties
165
+ end
166
+
167
+ it "returns a StorageServiceProperties instance" do
168
+ result = subject.get_service_properties
169
+ result.must_be_kind_of Azure::Service::StorageServiceProperties
170
+ end
171
+ end
172
+
173
+ describe "#set_service_properties" do
174
+ let(:service_properties_xml) { Fixtures["storage_service_properties"] }
175
+ let(:service_properties) { Azure::Service::StorageServiceProperties.new }
176
+ let(:response) {
177
+ response = mock()
178
+ response.stubs(:success?).returns(true)
179
+ response
180
+ }
181
+
182
+ let(:service_properties_uri) { URI.parse 'http://dummy.uri/service/properties' }
183
+
184
+ before do
185
+ Azure::Service::Serialization.stubs(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
186
+ subject.stubs(:service_properties_uri).returns(service_properties_uri)
187
+ subject.stubs(:call).with(:put, service_properties_uri, service_properties_xml).returns(response)
188
+ end
189
+
190
+ it "calls the service_properties_uri method to determine the correct uri" do
191
+ subject.expects(:service_properties_uri).returns(service_properties_uri)
192
+ subject.set_service_properties service_properties
193
+ end
194
+
195
+ it "posts to the HTTP API" do
196
+ subject.expects(:call).with(:put, service_properties_uri, service_properties_xml).returns(response)
197
+ subject.set_service_properties service_properties
198
+ end
199
+
200
+ it "serializes the StorageServiceProperties object to xml" do
201
+ Azure::Service::Serialization.expects(:service_properties_to_xml).with(service_properties).returns(service_properties_xml)
202
+ subject.set_service_properties service_properties
203
+ end
204
+
205
+ it "returns nil on success" do
206
+ result = subject.set_service_properties service_properties
207
+ result.must_equal nil
208
+ end
209
+ end
210
+
211
+ describe "service_properties_uri" do
212
+ it "returns an instance of URI" do
213
+ subject.service_properties_uri.must_be_kind_of URI
214
+ end
215
+
216
+ it "uses the value of the host property as the base of the url" do
217
+ subject.service_properties_uri.to_s.must_include subject.host
218
+ subject.host = "http://something.else"
219
+ subject.service_properties_uri.to_s.must_include subject.host
220
+ end
221
+
222
+ it "sets a query string that specifies the storage service properties endpoint" do
223
+ subject.service_properties_uri.query.must_include "restype=service&comp=properties"
224
+ end
225
+ end
226
+
227
+ describe "#add_metadata_to_headers" do
228
+ it "prefixes header names with x-ms-meta- but does not modify the values" do
229
+ headers = {}
230
+ subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
231
+ headers.keys.must_include "x-ms-meta-Foo"
232
+ headers["x-ms-meta-Foo"].must_equal "Bar"
233
+ end
234
+
235
+ it "updates any existing x-ms-meta-* headers with the new values" do
236
+ headers = { "x-ms-meta-Foo"=> "Foo"}
237
+ subject.add_metadata_to_headers({"Foo"=> "Bar"}, headers)
238
+ headers["x-ms-meta-Foo"].must_equal "Bar"
239
+ end
240
+ end
241
+
242
+ describe "#generate_uri" do
243
+ it "returns a URI instance" do
244
+ subject.generate_uri().must_be_kind_of ::URI
245
+ end
246
+
247
+ describe "when called with no arguments" do
248
+ it "returns the StorageService host URL" do
249
+ subject.generate_uri().to_s.must_equal "http://dumyhost.uri/"
250
+ end
251
+ end
252
+
253
+ describe "when passed an optional path" do
254
+ it "adds the path to the host url" do
255
+ subject.generate_uri("resource/entity/").path.must_equal "/resource/entity/"
256
+ end
257
+
258
+ it "correctly joins the path if the host url contained a path" do
259
+ subject.host = "http://dummy.uri/host/path"
260
+ subject.generate_uri("resource/entity/").path.must_equal "/host/path/resource/entity/"
261
+ end
262
+ end
263
+
264
+ describe "when passed an Hash of query parameters" do
265
+
266
+ it "encodes the keys" do
267
+ subject.generate_uri('',{"key !" => "value"}).query.must_include "key+%21=value"
268
+ end
269
+
270
+ it "encodes the values" do
271
+ subject.generate_uri('',{"key" => "value !"}).query.must_include "key=value+%21"
272
+ end
273
+
274
+ it "sets the query string to the encoded result" do
275
+ subject.generate_uri('',{ "key" => "value !", "key !"=>"value"}).query.must_equal "key=value+%21&key+%21=value"
276
+ end
277
+
278
+ describe "when the query parameters include a timeout key" do
279
+ it "overrides the default timeout" do
280
+ subject.generate_uri('', {"timeout" => 45}).query.must_equal "timeout=45"
281
+ end
282
+ end
283
+
284
+ describe "when the query parameters are nil" do
285
+ it "does not include any query parameters" do
286
+ subject.generate_uri('', nil).query.must_equal nil
287
+ end
288
+ end
289
+ end
290
+ end
291
291
  end