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,101 +1,101 @@
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 'integration/test_helper'
16
-
17
- require 'azure/service_bus/brokered_message'
18
-
19
- class ScenarioHelper
20
- def self.out(s)
21
- print s + "\n" if false
22
- end
23
-
24
- def self.get_custom_properties(i)
25
- custom_properties = {}
26
- custom_properties['i'] = i
27
- custom_properties['test'] = Time.local(2001, i, 1)
28
- custom_properties['name'] = 'Test' + i.to_s
29
- custom_properties['meanname'] = "'\"Me`\\'&*<>!@#%^*)\n" + i.to_s
30
- custom_properties['int'] = 50 + i
31
- custom_properties['float'] = 3.14159 + i
32
- custom_properties['even'] = (i % 2 == 0)
33
- custom_properties
34
- end
35
-
36
- def self.create_issue_message(issue_id, issue_body, label)
37
- message = Azure::ServiceBus::BrokeredMessage.new(issue_body)
38
-
39
- message.correlation_id = 'correlationid' + label
40
- message.delivery_count = 1
41
- message.sequence_number = 12
42
- message.content_type = 'text/xml'
43
- message.label = label
44
- message.to = '1@1.com'
45
- message.message_id = issue_id
46
-
47
- custom_properties = ScenarioHelper.get_custom_properties issue_id.to_i
48
- custom_properties.each do |key, value|
49
- message.properties[key] = value
50
- end
51
-
52
- message
53
- end
54
-
55
- def self.compare_messages(expected,
56
- actual,
57
- custom_properties = nil)
58
- actual.body.must_equal expected.body
59
- actual.content_type.must_equal expected.content_type
60
- actual.correlation_id.must_equal expected.correlation_id
61
- actual.label.must_equal expected.label
62
- actual.message_id.must_equal expected.message_id
63
- actual.reply_to.must_equal expected.reply_to
64
- actual.reply_to_session_id.must_equal expected.reply_to_session_id
65
- actual.scheduled_enqueue_time_utc.must_equal(
66
- expected.scheduled_enqueue_time_utc
67
- )
68
- actual.session_id.must_equal expected.session_id
69
- actual.to.must_equal expected.to
70
-
71
- # Note: The following properties are controlled by the server,
72
- # so we cannot verify as much
73
- actual.delivery_count.must_be_kind_of Integer
74
- actual.sequence_number.must_be_kind_of Integer
75
- actual.enqueued_time_utc.must_be_kind_of Time
76
- actual.lock_token.must_be_kind_of String unless actual.lock_token.nil?
77
-
78
- actual.locked_until_utc.must_be_kind_of Time\
79
- unless actual.locked_until_utc.nil?
80
-
81
- if custom_properties.nil?
82
- expected_properties = expected.properties
83
- index = expected_properties['i']
84
- index = 1 if index.nil?
85
- custom_properties = get_custom_properties(index.to_i)
86
- end
87
-
88
- custom_properties.each do |key, value|
89
- ScenarioHelper.out key + ':' + value.to_s
90
- k_d = actual.properties[key.downcase]
91
- ScenarioHelper.out("#{k_d}:#{k_d.nil? ? '<nil>' : k_d.to_s}")
92
- if value != 'GUID'
93
- if !value.nil? && value.class == Time
94
- value.httpdate.must_equal k_d
95
- else
96
- value.must_equal(k_d)
97
- end
98
- end
99
- end
100
- end
101
- 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 'integration/test_helper'
16
+
17
+ require 'azure/service_bus/brokered_message'
18
+
19
+ class ScenarioHelper
20
+ def self.out(s)
21
+ print s + "\n" if false
22
+ end
23
+
24
+ def self.get_custom_properties(i)
25
+ custom_properties = {}
26
+ custom_properties['i'] = i
27
+ custom_properties['test'] = Time.local(2001, i, 1)
28
+ custom_properties['name'] = 'Test' + i.to_s
29
+ custom_properties['meanname'] = "'\"Me`\\'&*<>!@#%^*)\n" + i.to_s
30
+ custom_properties['int'] = 50 + i
31
+ custom_properties['float'] = 3.14159 + i
32
+ custom_properties['even'] = (i % 2 == 0)
33
+ custom_properties
34
+ end
35
+
36
+ def self.create_issue_message(issue_id, issue_body, label)
37
+ message = Azure::ServiceBus::BrokeredMessage.new(issue_body)
38
+
39
+ message.correlation_id = 'correlationid' + label
40
+ message.delivery_count = 1
41
+ message.sequence_number = 12
42
+ message.content_type = 'text/xml'
43
+ message.label = label
44
+ message.to = '1@1.com'
45
+ message.message_id = issue_id
46
+
47
+ custom_properties = ScenarioHelper.get_custom_properties issue_id.to_i
48
+ custom_properties.each do |key, value|
49
+ message.properties[key] = value
50
+ end
51
+
52
+ message
53
+ end
54
+
55
+ def self.compare_messages(expected,
56
+ actual,
57
+ custom_properties = nil)
58
+ actual.body.must_equal expected.body
59
+ actual.content_type.must_equal expected.content_type
60
+ actual.correlation_id.must_equal expected.correlation_id
61
+ actual.label.must_equal expected.label
62
+ actual.message_id.must_equal expected.message_id
63
+ actual.reply_to.must_equal expected.reply_to
64
+ actual.reply_to_session_id.must_equal expected.reply_to_session_id
65
+ actual.scheduled_enqueue_time_utc.must_equal(
66
+ expected.scheduled_enqueue_time_utc
67
+ )
68
+ actual.session_id.must_equal expected.session_id
69
+ actual.to.must_equal expected.to
70
+
71
+ # Note: The following properties are controlled by the server,
72
+ # so we cannot verify as much
73
+ actual.delivery_count.must_be_kind_of Integer
74
+ actual.sequence_number.must_be_kind_of Integer
75
+ actual.enqueued_time_utc.must_be_kind_of Time
76
+ actual.lock_token.must_be_kind_of String unless actual.lock_token.nil?
77
+
78
+ actual.locked_until_utc.must_be_kind_of Time\
79
+ unless actual.locked_until_utc.nil?
80
+
81
+ if custom_properties.nil?
82
+ expected_properties = expected.properties
83
+ index = expected_properties['i']
84
+ index = 1 if index.nil?
85
+ custom_properties = get_custom_properties(index.to_i)
86
+ end
87
+
88
+ custom_properties.each do |key, value|
89
+ ScenarioHelper.out key + ':' + value.to_s
90
+ k_d = actual.properties[key.downcase]
91
+ ScenarioHelper.out("#{k_d}:#{k_d.nil? ? '<nil>' : k_d.to_s}")
92
+ if value != 'GUID'
93
+ if !value.nil? && value.class == Time
94
+ value.httpdate.must_equal k_d
95
+ else
96
+ value.must_equal(k_d)
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -1,211 +1,211 @@
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 "integration/test_helper"
16
-
17
- describe "ServiceBus Subscriptions" do
18
- subject { Azure::ServiceBus::ServiceBusService.new }
19
- after { ServiceBusTopicNameHelper.clean }
20
- let(:topic){ ServiceBusTopicNameHelper.name }
21
- let(:subscription) { "mySubscription" }
22
- let(:subscription_alternative) { "mySubscription" }
23
- let(:description_alternative) {{
24
- :lock_duration => 'PT30S',
25
- :requires_session => true,
26
- :default_message_time_to_live => 'PT30M',
27
- :dead_lettering_on_message_expiration => true,
28
- :dead_lettering_on_filter_evaluation_exceptions => true,
29
- :max_delivery_count => 20,
30
- :enable_batched_operations => true
31
- }}
32
-
33
- before { subject.create_topic topic }
34
-
35
- it "should be able to set description values to false" do
36
- s = Azure::ServiceBus::Subscription.new(subscription, {
37
- :requires_session => false
38
- })
39
-
40
- s.requires_session.must_equal false
41
- end
42
-
43
- it "should be able to create a new subscription" do
44
- result = subject.create_subscription topic, subscription
45
- result.must_be :kind_of?, Azure::ServiceBus::Subscription
46
- result.name.must_equal subscription
47
- end
48
-
49
- it "should be able to create a new subscription from a string and description Hash" do
50
- result = subject.create_subscription topic, subscription_alternative, description_alternative
51
- result.must_be :kind_of?, Azure::ServiceBus::Subscription
52
- result.name.must_equal subscription_alternative
53
-
54
- result.lock_duration.must_equal 30.0
55
- result.requires_session.must_equal description_alternative[:requires_session]
56
- result.default_message_time_to_live.must_equal 1800.0
57
- result.dead_lettering_on_message_expiration.must_equal description_alternative[:dead_lettering_on_message_expiration]
58
- result.dead_lettering_on_filter_evaluation_exceptions.must_equal description_alternative[:dead_lettering_on_filter_evaluation_exceptions]
59
- result.max_delivery_count.must_equal description_alternative[:max_delivery_count]
60
- result.enable_batched_operations.must_equal description_alternative[:enable_batched_operations]
61
- end
62
-
63
- it "should be able to create a new subscription with objects" do
64
- subscriptionObject = Azure::ServiceBus::Subscription.new "my_other_sub"
65
- subscriptionObject.topic = topic
66
- subscriptionObject.max_delivery_count = 3
67
-
68
- result = subject.create_subscription subscriptionObject
69
- result.must_be :kind_of?, Azure::ServiceBus::Subscription
70
- result.name.must_equal subscriptionObject.name
71
- result.max_delivery_count.must_equal subscriptionObject.max_delivery_count
72
-
73
- subject.delete_subscription result
74
- end
75
-
76
- describe "when a subscription exists" do
77
- before { subject.create_subscription topic, subscription }
78
- it "should be able to delete the subscription" do
79
- subject.delete_subscription topic, subscription
80
- end
81
-
82
- it "should be able to get the subscription" do
83
- result = subject.get_subscription topic, subscription
84
- result.must_be :kind_of?, Azure::ServiceBus::Subscription
85
- result.name.must_equal subscription
86
- end
87
-
88
- it "should be able to list subscriptions" do
89
- result = subject.list_subscriptions topic
90
- subscription_found = false
91
- result.each { |s|
92
- subscription_found = true if s.name == subscription
93
- }
94
- assert subscription_found, "list_subscriptions didn't include the expected subscription"
95
- end
96
-
97
- describe "when there are messages" do
98
- let(:msg) {
99
- m = Azure::ServiceBus::BrokeredMessage.new("some message body", {:prop1 => "val1"})
100
- m.to = "me"
101
- m.label = "my_label"
102
- m
103
- }
104
- before {
105
- subject.send_topic_message topic, msg
106
- }
107
-
108
- it "should be able to peek lock a message" do
109
- retrieved = subject.peek_lock_subscription_message topic, subscription
110
-
111
- retrieved.to.must_equal msg.to
112
- retrieved.body.must_equal msg.body
113
- retrieved.label.must_equal msg.label
114
-
115
- retrieved = subject.read_delete_subscription_message topic, subscription, { :timeout => 1 }
116
- retrieved.must_be_nil
117
- end
118
-
119
- it "should be able to read delete a message" do
120
- retrieved = subject.read_delete_subscription_message topic, subscription
121
-
122
- retrieved.must_be :kind_of?, Azure::ServiceBus::BrokeredMessage
123
- retrieved.body.must_equal msg.body
124
- retrieved.to.must_equal msg.to
125
-
126
- # it should be deleted
127
- retrieved = subject.read_delete_subscription_message topic, subscription, { :timeout => 1 }
128
- retrieved.must_be_nil
129
- end
130
-
131
- it "should be able to unlock a message" do
132
- retrieved = subject.peek_lock_subscription_message topic, subscription, { :timeout => 1 }
133
- retrieved.body.must_equal msg.body
134
-
135
- # There shouldn't be an available message in the queue
136
- retrieved2 = subject.peek_lock_subscription_message topic, subscription, { :timeout => 1 }
137
- retrieved2.must_be_nil
138
-
139
- # Unlock the message
140
- res = subject.unlock_subscription_message retrieved
141
- res.must_be_nil
142
-
143
- # The message should be available once again
144
- retrieved = subject.peek_lock_subscription_message topic, subscription, { :timeout => 1 }
145
- retrieved.body.must_equal msg.body
146
- end
147
-
148
- it "should be able to read a message from a subscription" do
149
- subject.send_topic_message topic, msg
150
- retrieved = subject.receive_subscription_message topic, subscription
151
-
152
- retrieved.to.must_equal msg.to
153
- retrieved.body.must_equal msg.body
154
- retrieved.label.must_equal msg.label
155
- end
156
- end
157
-
158
- describe 'when there are multiple subscriptions' do
159
- let(:subscription1) { ServiceBusTopicNameHelper.name }
160
- let(:subscription2) { ServiceBusTopicNameHelper.name }
161
-
162
- before {
163
- subject.create_subscription topic, subscription1
164
- subject.create_subscription topic, subscription2
165
- }
166
-
167
- it "should be able to list subscriptions" do
168
- result = subject.list_subscriptions topic
169
-
170
- subscription_found = false
171
- subscription1_found = false
172
- subscription2_found = false
173
-
174
- result.each { |s|
175
- subscription_found = true if s.name == subscription
176
- subscription1_found = true if s.name == subscription1
177
- subscription2_found = true if s.name == subscription2
178
- }
179
-
180
- assert (subscription_found and subscription1_found and subscription2_found), "list_subscriptions didn't include the expected subscriptions"
181
- end
182
-
183
- it "should be able to use $skip token" do
184
- result = subject.list_subscriptions topic
185
- result2 = subject.list_subscriptions topic, { :skip => 1 }
186
- result2.length.must_equal result.length - 1
187
- result2.continuation_token.must_be_nil
188
- result2[0].id.must_equal result[1].id
189
- end
190
-
191
- it "should be able to use $top token" do
192
- result = subject.list_subscriptions topic
193
- result.length.wont_equal 1
194
- result.continuation_token.must_be_nil
195
-
196
- result2 = subject.list_subscriptions topic, { :top => 1 }
197
- result2.continuation_token.wont_be_nil
198
- result2.continuation_token[:skip].wont_be_nil
199
- result2.continuation_token[:top].wont_be_nil
200
- result2.length.must_equal 1
201
- end
202
-
203
- it "should be able to use $skip and $top token together" do
204
- result = subject.list_subscriptions topic
205
- result2 = subject.list_subscriptions topic, { :skip => 1, :top => 1 }
206
- result2.length.must_equal 1
207
- result2[0].id.must_equal result[1].id
208
- end
209
- end
210
- end
211
- 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 "integration/test_helper"
16
+
17
+ describe "ServiceBus Subscriptions" do
18
+ subject { Azure::ServiceBus::ServiceBusService.new }
19
+ after { ServiceBusTopicNameHelper.clean }
20
+ let(:topic){ ServiceBusTopicNameHelper.name }
21
+ let(:subscription) { "mySubscription" }
22
+ let(:subscription_alternative) { "mySubscription" }
23
+ let(:description_alternative) {{
24
+ :lock_duration => 'PT30S',
25
+ :requires_session => true,
26
+ :default_message_time_to_live => 'PT30M',
27
+ :dead_lettering_on_message_expiration => true,
28
+ :dead_lettering_on_filter_evaluation_exceptions => true,
29
+ :max_delivery_count => 20,
30
+ :enable_batched_operations => true
31
+ }}
32
+
33
+ before { subject.create_topic topic }
34
+
35
+ it "should be able to set description values to false" do
36
+ s = Azure::ServiceBus::Subscription.new(subscription, {
37
+ :requires_session => false
38
+ })
39
+
40
+ s.requires_session.must_equal false
41
+ end
42
+
43
+ it "should be able to create a new subscription" do
44
+ result = subject.create_subscription topic, subscription
45
+ result.must_be :kind_of?, Azure::ServiceBus::Subscription
46
+ result.name.must_equal subscription
47
+ end
48
+
49
+ it "should be able to create a new subscription from a string and description Hash" do
50
+ result = subject.create_subscription topic, subscription_alternative, description_alternative
51
+ result.must_be :kind_of?, Azure::ServiceBus::Subscription
52
+ result.name.must_equal subscription_alternative
53
+
54
+ result.lock_duration.must_equal 30.0
55
+ result.requires_session.must_equal description_alternative[:requires_session]
56
+ result.default_message_time_to_live.must_equal 1800.0
57
+ result.dead_lettering_on_message_expiration.must_equal description_alternative[:dead_lettering_on_message_expiration]
58
+ result.dead_lettering_on_filter_evaluation_exceptions.must_equal description_alternative[:dead_lettering_on_filter_evaluation_exceptions]
59
+ result.max_delivery_count.must_equal description_alternative[:max_delivery_count]
60
+ result.enable_batched_operations.must_equal description_alternative[:enable_batched_operations]
61
+ end
62
+
63
+ it "should be able to create a new subscription with objects" do
64
+ subscriptionObject = Azure::ServiceBus::Subscription.new "my_other_sub"
65
+ subscriptionObject.topic = topic
66
+ subscriptionObject.max_delivery_count = 3
67
+
68
+ result = subject.create_subscription subscriptionObject
69
+ result.must_be :kind_of?, Azure::ServiceBus::Subscription
70
+ result.name.must_equal subscriptionObject.name
71
+ result.max_delivery_count.must_equal subscriptionObject.max_delivery_count
72
+
73
+ subject.delete_subscription result
74
+ end
75
+
76
+ describe "when a subscription exists" do
77
+ before { subject.create_subscription topic, subscription }
78
+ it "should be able to delete the subscription" do
79
+ subject.delete_subscription topic, subscription
80
+ end
81
+
82
+ it "should be able to get the subscription" do
83
+ result = subject.get_subscription topic, subscription
84
+ result.must_be :kind_of?, Azure::ServiceBus::Subscription
85
+ result.name.must_equal subscription
86
+ end
87
+
88
+ it "should be able to list subscriptions" do
89
+ result = subject.list_subscriptions topic
90
+ subscription_found = false
91
+ result.each { |s|
92
+ subscription_found = true if s.name == subscription
93
+ }
94
+ assert subscription_found, "list_subscriptions didn't include the expected subscription"
95
+ end
96
+
97
+ describe "when there are messages" do
98
+ let(:msg) {
99
+ m = Azure::ServiceBus::BrokeredMessage.new("some message body", {:prop1 => "val1"})
100
+ m.to = "me"
101
+ m.label = "my_label"
102
+ m
103
+ }
104
+ before {
105
+ subject.send_topic_message topic, msg
106
+ }
107
+
108
+ it "should be able to peek lock a message" do
109
+ retrieved = subject.peek_lock_subscription_message topic, subscription
110
+
111
+ retrieved.to.must_equal msg.to
112
+ retrieved.body.must_equal msg.body
113
+ retrieved.label.must_equal msg.label
114
+
115
+ retrieved = subject.read_delete_subscription_message topic, subscription, { :timeout => 1 }
116
+ retrieved.must_be_nil
117
+ end
118
+
119
+ it "should be able to read delete a message" do
120
+ retrieved = subject.read_delete_subscription_message topic, subscription
121
+
122
+ retrieved.must_be :kind_of?, Azure::ServiceBus::BrokeredMessage
123
+ retrieved.body.must_equal msg.body
124
+ retrieved.to.must_equal msg.to
125
+
126
+ # it should be deleted
127
+ retrieved = subject.read_delete_subscription_message topic, subscription, { :timeout => 1 }
128
+ retrieved.must_be_nil
129
+ end
130
+
131
+ it "should be able to unlock a message" do
132
+ retrieved = subject.peek_lock_subscription_message topic, subscription, { :timeout => 1 }
133
+ retrieved.body.must_equal msg.body
134
+
135
+ # There shouldn't be an available message in the queue
136
+ retrieved2 = subject.peek_lock_subscription_message topic, subscription, { :timeout => 1 }
137
+ retrieved2.must_be_nil
138
+
139
+ # Unlock the message
140
+ res = subject.unlock_subscription_message retrieved
141
+ res.must_be_nil
142
+
143
+ # The message should be available once again
144
+ retrieved = subject.peek_lock_subscription_message topic, subscription, { :timeout => 1 }
145
+ retrieved.body.must_equal msg.body
146
+ end
147
+
148
+ it "should be able to read a message from a subscription" do
149
+ subject.send_topic_message topic, msg
150
+ retrieved = subject.receive_subscription_message topic, subscription
151
+
152
+ retrieved.to.must_equal msg.to
153
+ retrieved.body.must_equal msg.body
154
+ retrieved.label.must_equal msg.label
155
+ end
156
+ end
157
+
158
+ describe 'when there are multiple subscriptions' do
159
+ let(:subscription1) { ServiceBusTopicNameHelper.name }
160
+ let(:subscription2) { ServiceBusTopicNameHelper.name }
161
+
162
+ before {
163
+ subject.create_subscription topic, subscription1
164
+ subject.create_subscription topic, subscription2
165
+ }
166
+
167
+ it "should be able to list subscriptions" do
168
+ result = subject.list_subscriptions topic
169
+
170
+ subscription_found = false
171
+ subscription1_found = false
172
+ subscription2_found = false
173
+
174
+ result.each { |s|
175
+ subscription_found = true if s.name == subscription
176
+ subscription1_found = true if s.name == subscription1
177
+ subscription2_found = true if s.name == subscription2
178
+ }
179
+
180
+ assert (subscription_found and subscription1_found and subscription2_found), "list_subscriptions didn't include the expected subscriptions"
181
+ end
182
+
183
+ it "should be able to use $skip token" do
184
+ result = subject.list_subscriptions topic
185
+ result2 = subject.list_subscriptions topic, { :skip => 1 }
186
+ result2.length.must_equal result.length - 1
187
+ result2.continuation_token.must_be_nil
188
+ result2[0].id.must_equal result[1].id
189
+ end
190
+
191
+ it "should be able to use $top token" do
192
+ result = subject.list_subscriptions topic
193
+ result.length.wont_equal 1
194
+ result.continuation_token.must_be_nil
195
+
196
+ result2 = subject.list_subscriptions topic, { :top => 1 }
197
+ result2.continuation_token.wont_be_nil
198
+ result2.continuation_token[:skip].wont_be_nil
199
+ result2.continuation_token[:top].wont_be_nil
200
+ result2.length.must_equal 1
201
+ end
202
+
203
+ it "should be able to use $skip and $top token together" do
204
+ result = subject.list_subscriptions topic
205
+ result2 = subject.list_subscriptions topic, { :skip => 1, :top => 1 }
206
+ result2.length.must_equal 1
207
+ result2[0].id.must_equal result[1].id
208
+ end
209
+ end
210
+ end
211
+ end