azure 0.0.0 → 0.1.0

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 (212) hide show
  1. data/Gemfile +3 -0
  2. data/Gemfile.lock +36 -0
  3. data/README.md +3 -0
  4. data/Rakefile +81 -0
  5. data/azure.gemspec +20 -9
  6. data/lib/azure.rb +4 -0
  7. data/lib/azure/atom.rb +170 -0
  8. data/lib/azure/auth.rb +29 -0
  9. data/lib/azure/blobs.rb +620 -0
  10. data/lib/azure/blobs/blob.rb +360 -0
  11. data/lib/azure/blobs/container.rb +209 -0
  12. data/lib/azure/blobs/service.rb +396 -0
  13. data/lib/azure/blobs/shared_access_signature.rb +84 -0
  14. data/lib/azure/blobs/uri.rb +60 -0
  15. data/lib/azure/configuration.rb +121 -0
  16. data/lib/azure/core/auth/shared_key.rb +95 -0
  17. data/lib/azure/core/auth/shared_key_lite.rb +34 -0
  18. data/lib/azure/core/collection.rb +118 -0
  19. data/lib/azure/core/service.rb +43 -0
  20. data/lib/azure/core/signer.rb +32 -0
  21. data/lib/azure/core/utils/interval.rb +97 -0
  22. data/lib/azure/core/utils/queryable.rb +74 -0
  23. data/lib/azure/core/utils/storage_service_properties.rb +83 -0
  24. data/lib/azure/core/utils/string.rb +59 -0
  25. data/lib/azure/error.rb +72 -0
  26. data/lib/azure/queues.rb +272 -0
  27. data/lib/azure/queues/message.rb +174 -0
  28. data/lib/azure/queues/queue.rb +187 -0
  29. data/lib/azure/queues/service.rb +263 -0
  30. data/lib/azure/queues/service_properties.rb +152 -0
  31. data/lib/azure/queues/uri.rb +78 -0
  32. data/lib/azure/request.rb +102 -0
  33. data/lib/azure/response.rb +93 -0
  34. data/lib/azure/service_bus.rb +4 -0
  35. data/lib/azure/service_bus/auth/authorizer.rb +22 -0
  36. data/lib/azure/service_bus/auth/uri.rb +52 -0
  37. data/lib/azure/service_bus/auth/wrap.rb +37 -0
  38. data/lib/azure/service_bus/auth/wrap_service.rb +76 -0
  39. data/lib/azure/service_bus/auth/wrap_token.rb +45 -0
  40. data/lib/azure/service_bus/auth/wrap_token_manager.rb +46 -0
  41. data/lib/azure/service_bus/brokered_message.rb +139 -0
  42. data/lib/azure/service_bus/brokered_message_serializer.rb +113 -0
  43. data/lib/azure/service_bus/queues.rb +194 -0
  44. data/lib/azure/service_bus/queues/queue.rb +100 -0
  45. data/lib/azure/service_bus/queues/queue_serializer.rb +51 -0
  46. data/lib/azure/service_bus/queues/service.rb +154 -0
  47. data/lib/azure/service_bus/queues/uri.rb +80 -0
  48. data/lib/azure/service_bus/rules.rb +110 -0
  49. data/lib/azure/service_bus/rules/rule.rb +97 -0
  50. data/lib/azure/service_bus/rules/service.rb +122 -0
  51. data/lib/azure/service_bus/rules/uri.rb +39 -0
  52. data/lib/azure/service_bus/service_bus_service.rb +22 -0
  53. data/lib/azure/service_bus/subscriptions.rb +170 -0
  54. data/lib/azure/service_bus/subscriptions/service.rb +133 -0
  55. data/lib/azure/service_bus/subscriptions/subscription.rb +164 -0
  56. data/lib/azure/service_bus/subscriptions/subscription_serializer.rb +74 -0
  57. data/lib/azure/service_bus/subscriptions/uri.rb +71 -0
  58. data/lib/azure/service_bus/topics.rb +120 -0
  59. data/lib/azure/service_bus/topics/service.rb +98 -0
  60. data/lib/azure/service_bus/topics/topic.rb +122 -0
  61. data/lib/azure/service_bus/topics/topic_serializer.rb +44 -0
  62. data/lib/azure/service_bus/topics/uri.rb +58 -0
  63. data/lib/azure/service_runtime/client/goal_state_pipe_monitor.rb +21 -0
  64. data/lib/azure/service_runtime/client/goal_state_protocol.rb +18 -0
  65. data/lib/azure/service_runtime/client/runtime_client.rb +135 -0
  66. data/lib/azure/service_runtime/deployment.rb +24 -0
  67. data/lib/azure/service_runtime/local_resource.rb +15 -0
  68. data/lib/azure/service_runtime/role.rb +17 -0
  69. data/lib/azure/service_runtime/role_environment.rb +206 -0
  70. data/lib/azure/service_runtime/role_environment_change.rb +32 -0
  71. data/lib/azure/service_runtime/role_instance.rb +35 -0
  72. data/lib/azure/service_runtime/role_instance_endpoint.rb +14 -0
  73. data/lib/azure/tables.rb +215 -0
  74. data/lib/azure/tables/auth/shared_key.rb +71 -0
  75. data/lib/azure/tables/auth/shared_key_lite.rb +30 -0
  76. data/lib/azure/tables/entities_collection.rb +66 -0
  77. data/lib/azure/tables/entity.rb +127 -0
  78. data/lib/azure/tables/service.rb +211 -0
  79. data/lib/azure/tables/table.rb +129 -0
  80. data/lib/azure/tables/tables_collection.rb +62 -0
  81. data/lib/azure/tables/types.rb +65 -0
  82. data/lib/azure/tables/uri.rb +62 -0
  83. data/test/fixtures/32px-fulls-black.jpg +0 -0
  84. data/test/fixtures/all_containers.xml +20 -0
  85. data/test/fixtures/all_tables.xml +22 -0
  86. data/test/fixtures/create_table_response_entry.xml +15 -0
  87. data/test/fixtures/error.xml +5 -0
  88. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  89. data/test/fixtures/messages.xml +12 -0
  90. data/test/fixtures/query_entities_empty_response.xml +7 -0
  91. data/test/fixtures/query_entities_response.xml +45 -0
  92. data/test/fixtures/queue_service_properties.xml +22 -0
  93. data/test/fixtures/queue_service_properties_original.xml +19 -0
  94. data/test/fixtures/queues.xml +16 -0
  95. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  96. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  97. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  98. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  99. data/test/integration/blobs/auth_test.rb +19 -0
  100. data/test/integration/blobs/blob_test.rb +61 -0
  101. data/test/integration/blobs/clear_page_range_test.rb +19 -0
  102. data/test/integration/blobs/copy_test.rb +33 -0
  103. data/test/integration/blobs/create_blobs_test.rb +51 -0
  104. data/test/integration/blobs/create_container_test.rb +13 -0
  105. data/test/integration/blobs/create_snapshot_test.rb +17 -0
  106. data/test/integration/blobs/delete_blob_snapshots_test.rb +19 -0
  107. data/test/integration/blobs/delete_blobs_test.rb +25 -0
  108. data/test/integration/blobs/delete_container_test.rb +24 -0
  109. data/test/integration/blobs/delete_snapshot_test.rb +17 -0
  110. data/test/integration/blobs/get_blob_snapshot_test.rb +18 -0
  111. data/test/integration/blobs/get_blobs_test.rb +31 -0
  112. data/test/integration/blobs/get_page_range_test.rb +19 -0
  113. data/test/integration/blobs/list_blobs_test.rb +39 -0
  114. data/test/integration/blobs/list_containers_test.rb +28 -0
  115. data/test/integration/blobs/manage_blob_leases_test.rb +45 -0
  116. data/test/integration/blobs/manage_blob_metadata_test.rb +51 -0
  117. data/test/integration/blobs/manage_blob_properties_test.rb +25 -0
  118. data/test/integration/blobs/manage_blob_service_properties_test.rb +38 -0
  119. data/test/integration/blobs/manage_container_metadata_test.rb +46 -0
  120. data/test/integration/blobs/manage_container_permissions_test.rb +17 -0
  121. data/test/integration/blobs/update_page_range_test.rb +20 -0
  122. data/test/integration/queues/clear_messages_test.rb +22 -0
  123. data/test/integration/queues/create_queue_test.rb +13 -0
  124. data/test/integration/queues/delete_message_test.rb +42 -0
  125. data/test/integration/queues/delete_queue_test.rb +24 -0
  126. data/test/integration/queues/get_messages_test.rb +39 -0
  127. data/test/integration/queues/list_queues_test.rb +43 -0
  128. data/test/integration/queues/manage_queue_metadata_test.rb +45 -0
  129. data/test/integration/queues/manage_queue_service_properties_test.rb +27 -0
  130. data/test/integration/queues/peek_messages_test.rb +55 -0
  131. data/test/integration/queues/put_message_test.rb +31 -0
  132. data/test/integration/queues/update_message_test.rb +46 -0
  133. data/test/integration/service_bus/auth_test.rb +18 -0
  134. data/test/integration/service_bus/queues/create_queue_test.rb +25 -0
  135. data/test/integration/service_bus/queues/delete_message_from_queue_test.rb +29 -0
  136. data/test/integration/service_bus/queues/delete_queue_test.rb +25 -0
  137. data/test/integration/service_bus/queues/get_queue_test.rb +23 -0
  138. data/test/integration/service_bus/queues/list_queues_test.rb +39 -0
  139. data/test/integration/service_bus/queues/peek_message_from_queue_test.rb +34 -0
  140. data/test/integration/service_bus/queues/read_and_delete_message_from_queue_test.rb +31 -0
  141. data/test/integration/service_bus/queues/send_message_to_queue_test.rb +22 -0
  142. data/test/integration/service_bus/queues/unlock_message_from_queue_test.rb +36 -0
  143. data/test/integration/service_bus/rules/create_rule_test.rb +19 -0
  144. data/test/integration/service_bus/rules/delete_rule_test.rb +17 -0
  145. data/test/integration/service_bus/rules/get_rule_test.rb +21 -0
  146. data/test/integration/service_bus/rules/list_rules_test.rb +24 -0
  147. data/test/integration/service_bus/rules/rule_test.rb +16 -0
  148. data/test/integration/service_bus/subscriptions/create_subscription_test.rb +25 -0
  149. data/test/integration/service_bus/subscriptions/delete_message_from_subscription_test.rb +31 -0
  150. data/test/integration/service_bus/subscriptions/delete_subscription_test.rb +30 -0
  151. data/test/integration/service_bus/subscriptions/fetch_subscription_test.rb +28 -0
  152. data/test/integration/service_bus/subscriptions/list_subscriptions_test.rb +23 -0
  153. data/test/integration/service_bus/subscriptions/peek_lock_message_from_subscription_test.rb +42 -0
  154. data/test/integration/service_bus/subscriptions/read_delete_message_from_subscription_test.rb +36 -0
  155. data/test/integration/service_bus/subscriptions/subscription_test.rb +31 -0
  156. data/test/integration/service_bus/subscriptions/unlock_message_from_subscription_test.rb +43 -0
  157. data/test/integration/service_bus/topics/create_topic_test.rb +25 -0
  158. data/test/integration/service_bus/topics/delete_topic_test.rb +25 -0
  159. data/test/integration/service_bus/topics/get_topic_test.rb +23 -0
  160. data/test/integration/service_bus/topics/list_topics_test.rb +39 -0
  161. data/test/integration/service_bus/topics/send_message_to_topic_test.rb +23 -0
  162. data/test/integration/tables/auth_test.rb +29 -0
  163. data/test/integration/tables/creating_tables_test.rb +16 -0
  164. data/test/integration/tables/delete_entity_test.rb +39 -0
  165. data/test/integration/tables/deleting_table_test.rb +22 -0
  166. data/test/integration/tables/insert_entity_test.rb +23 -0
  167. data/test/integration/tables/merge_entity_test.rb +28 -0
  168. data/test/integration/tables/query_entities_test.rb +131 -0
  169. data/test/integration/tables/query_tables_test.rb +63 -0
  170. data/test/integration/tables/update_entity_test.rb +54 -0
  171. data/test/integration/test_helper.rb +14 -0
  172. data/test/support/blobs.rb +12 -0
  173. data/test/support/env.rb +5 -0
  174. data/test/support/fixtures.rb +22 -0
  175. data/test/support/stubs.rb +28 -0
  176. data/test/support/table_names.rb +44 -0
  177. data/test/test_helper.rb +10 -0
  178. data/test/unit/atom_test.rb +58 -0
  179. data/test/unit/auth_test.rb +24 -0
  180. data/test/unit/blobs/blob_test.rb +5 -0
  181. data/test/unit/blobs/container_test.rb +67 -0
  182. data/test/unit/blobs/service_test.rb +17 -0
  183. data/test/unit/blobs/shared_access_signature_test.rb +66 -0
  184. data/test/unit/blobs_test.rb +156 -0
  185. data/test/unit/core/service_test.rb +57 -0
  186. data/test/unit/core/utils/interval_test.rb +70 -0
  187. data/test/unit/core/utils/queryable_test.rb +69 -0
  188. data/test/unit/core/utils/storage_service_properties_test.rb +66 -0
  189. data/test/unit/error_test.rb +39 -0
  190. data/test/unit/queues/message_test.rb +40 -0
  191. data/test/unit/queues/queue_test.rb +64 -0
  192. data/test/unit/queues/service_properties.rb +35 -0
  193. data/test/unit/request_test.rb +38 -0
  194. data/test/unit/response_test.rb +43 -0
  195. data/test/unit/service_bus/auth/authorizer_test.rb +27 -0
  196. data/test/unit/service_bus/auth/wrap_token_test.rb +28 -0
  197. data/test/unit/service_bus/queues/queue_test.rb +38 -0
  198. data/test/unit/service_bus/topics/topic_test.rb +33 -0
  199. data/test/unit/service_runtime/data/goalstate.xml +9 -0
  200. data/test/unit/service_runtime/data/roleenvironmentdata.xml +29 -0
  201. data/test/unit/service_runtime/data/runtime.xml +6 -0
  202. data/test/unit/service_runtime/role_environment_test.rb +144 -0
  203. data/test/unit/tables/auth/shared_key_lite_test.rb +39 -0
  204. data/test/unit/tables/auth/shared_key_test.rb +45 -0
  205. data/test/unit/tables/entities_collection_test.rb +39 -0
  206. data/test/unit/tables/entity_test.rb +72 -0
  207. data/test/unit/tables/table_test.rb +57 -0
  208. data/test/unit/tables_test.rb +302 -0
  209. data/test/unit/types_test.rb +67 -0
  210. metadata +310 -47
  211. data/LICENSE +0 -0
  212. data/README +0 -0
@@ -0,0 +1,19 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Create Rules" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("mySubscription")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "should be able to create a new rule" do
14
+ response = Azure::ServiceBus::Rules.create(@subscription, "myName")
15
+ response.must_be :kind_of?, Azure::ServiceBus::Rules::Rule
16
+ response.filter["TrueFilter"].must_equal("SqlExpression" => "1=1", "CompatibilityLevel" => "20")
17
+ response.error.must_be_nil
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Delete Rules" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("mySubscription")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "should be able to create a new rule" do
14
+ rule = Azure::ServiceBus::Rules.create(@subscription, "myName")
15
+ Azure::ServiceBus::Rules.delete(rule).must_equal true
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Get Rules" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("mySubscription")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "should be able to create a new rule" do
14
+ Azure::ServiceBus::Rules.create(@subscription, "myName")
15
+ rule = Azure::ServiceBus::Rules.get(@subscription, "myName")
16
+ rule.must_be :kind_of?, Azure::ServiceBus::Rules::Rule
17
+ rule.name.must_equal "myName"
18
+ rule.filter.wont_be_nil
19
+ rule.action.wont_be_nil
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "List Rules" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("mySubscription")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "should be able to create a new rule" do
14
+ Azure::ServiceBus::Rules.create(@subscription, "myRule")
15
+ Azure::ServiceBus::Rules.create(@subscription, "myOtherRule")
16
+
17
+ rules = Azure::ServiceBus::Rules.all(@subscription)
18
+ rules.must_be :kind_of?, Array
19
+ rules.size.must_equal 3
20
+ rules.first.name.must_equal "$Default"
21
+ rules.first.filter.wont_be_nil
22
+ rules.first.action.wont_be_nil
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ require "integration/test_helper"
2
+
3
+ describe Azure::ServiceBus::Rules::Rule do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("mySubscription")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "should be able to delete itself" do
14
+ @subscription.create_rule("myRule").delete.must_equal true
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Creating a Subscription" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ end
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ it "should be able to create a new subscription" do
13
+ subscription = @topic.subscriptions.create("subscription-name")
14
+ subscription.must_be_kind_of Azure::ServiceBus::Subscriptions::Subscription
15
+ assert subscription.valid?
16
+ end
17
+
18
+ it "can create a subscription with extra parameters" do
19
+ subscription = @topic.subscriptions.create("subscription-name") do |sub|
20
+ sub.default_ttl = 75
21
+ end
22
+
23
+ subscription.default_ttl.must_equal 75
24
+ end
25
+ end
@@ -0,0 +1,31 @@
1
+ require "integration/test_helper"
2
+ require "azure/service_bus/topics"
3
+ require "azure/service_bus/subscriptions"
4
+ require "azure/service_bus/brokered_message"
5
+
6
+ describe "Delete a Message from a Subscription" do
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ before do
13
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name)
14
+ @subscription = @topic.subscriptions.create("subscription-name")
15
+ @message = Azure::ServiceBus::BrokeredMessage.new("some text", "prop1" => "val1") {|m| m.to = 'me' }
16
+ end
17
+
18
+ it "should be able to read-delete a message from a subscription" do
19
+ Azure::ServiceBus::Topics.send_message_to_topic(@topic, @message)
20
+
21
+ retrieved = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription)
22
+
23
+ result = Azure::ServiceBus::Subscriptions.delete_message_from_subscription(@subscription, retrieved)
24
+ result.must_equal true
25
+
26
+ # It should be deleted
27
+ retrieved2 = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription, :timeout => 2)
28
+ refute retrieved2.valid?
29
+ retrieved2.error.message.must_equal "No messages available within the specified timeout period."
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Deleting a subscription" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ end
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ it "freezes the subscription if successful" do
13
+ subscription = @topic.subscriptions.create("subscription-name")
14
+ result = subscription.delete
15
+ result.must_equal true
16
+ assert subscription.frozen?
17
+ assert subscription.valid?
18
+ end
19
+
20
+ it "invalidates the subscription if unsuccessful" do
21
+ subscription = Azure::ServiceBus::Subscriptions::Subscription.new("nonexistent") do |sub|
22
+ sub.topic = @topic
23
+ end
24
+
25
+ result = subscription.delete
26
+ result.must_equal false
27
+ refute subscription.frozen?
28
+ refute subscription.valid?
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Fetching a Subscription by name" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("subscription-name")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "can fetch a subscription by name" do
14
+ subscription = @topic.subscriptions.fetch("subscription-name")
15
+ assert subscription.valid?
16
+ end
17
+
18
+ it "can raises ArgumentError on missing subscriptions" do
19
+ proc {
20
+ @topic.subscriptions.fetch("nonexistent")
21
+ }.must_raise ArgumentError
22
+ end
23
+
24
+ it "can handle errors in a different way" do
25
+ error = @topic.subscriptions.fetch("nonexistant") { |err| err }
26
+ error.must_be_kind_of Azure::Error
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Listing Subscription" do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ end
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ it "returns an empty collection when there are no subscriptions" do
13
+ @topic.subscriptions.must_be_empty
14
+ end
15
+
16
+ it "returns the subscriptions when there are any" do
17
+ sub_1 = @topic.subscriptions.create("subscription-1")
18
+ sub_2 = @topic.subscriptions.create("subscription-2")
19
+
20
+ @topic.subscriptions.must_include(sub_1)
21
+ @topic.subscriptions.must_include(sub_2)
22
+ end
23
+ end
@@ -0,0 +1,42 @@
1
+ require "integration/test_helper"
2
+ require "azure/service_bus/topics"
3
+ require "azure/service_bus/subscriptions"
4
+ require "azure/service_bus/brokered_message"
5
+
6
+ describe "Peek-lock a Message from a Subscription" do
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ before do
13
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name)
14
+ @subscription = @topic.subscriptions.create("subscription-name")
15
+ @message = Azure::ServiceBus::BrokeredMessage.new("some text", "prop1" => "val1") do |m|
16
+ m.to = "yo"
17
+ m.label = 'my_label'
18
+ end
19
+ end
20
+
21
+ it "should be able to peek a message from a subscription" do
22
+ Azure::ServiceBus::Topics.send_message_to_topic(@topic, @message)
23
+
24
+ retrieved = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription)
25
+ retrieved.must_be :kind_of?, Azure::ServiceBus::BrokeredMessage
26
+ assert retrieved.valid?
27
+
28
+ retrieved.body.must_equal @message.body
29
+ retrieved.to.must_equal @message.to
30
+ retrieved.label.must_equal @message.label
31
+ retrieved.properties['prop1'].must_equal @message.properties['prop1']
32
+
33
+ refute retrieved.location.nil?
34
+ refute retrieved.lock_token.nil?
35
+ refute retrieved.sequence_number.nil?
36
+
37
+ # There shouldn't be an available message in the subscription
38
+ retrieved2 = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription)
39
+ refute retrieved2.valid?
40
+ retrieved2.error.message.must_equal "No messages available within the specified timeout period."
41
+ end
42
+ end
@@ -0,0 +1,36 @@
1
+ require "integration/test_helper"
2
+ require "azure/service_bus/topics"
3
+ require "azure/service_bus/subscriptions"
4
+ require "azure/service_bus/brokered_message"
5
+
6
+ describe "Read and Delete a Message from a Subscription" do
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ before do
13
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name)
14
+ @subscription = @topic.subscriptions.create("subscription-name")
15
+ @message = Azure::ServiceBus::BrokeredMessage.new("some text", "prop1" => "val1") do |m|
16
+ m.to = "yo"
17
+ m.label = 'my_label'
18
+ end
19
+ end
20
+
21
+ it "should be able to read-delete a message from a subscription" do
22
+ Azure::ServiceBus::Topics.send_message_to_topic(@topic, @message)
23
+
24
+ retrieved = Azure::ServiceBus::Subscriptions.read_delete_message_from_subscription(@subscription)
25
+
26
+ retrieved.must_be :kind_of?, Azure::ServiceBus::BrokeredMessage
27
+ assert retrieved.valid?
28
+ retrieved.body.must_equal @message.body
29
+ retrieved.to.must_equal @message.to
30
+
31
+ # It should be deleted
32
+ retrieved2 = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription, :timeout => 2)
33
+ refute retrieved2.valid?
34
+ retrieved2.error.message.must_equal "No messages available within the specified timeout period."
35
+ end
36
+ end
@@ -0,0 +1,31 @@
1
+ require "integration/test_helper"
2
+
3
+ describe Azure::ServiceBus::Subscriptions::Subscription do
4
+ before do
5
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, {})
6
+ @subscription = @topic.subscriptions.create("mySubscription")
7
+ end
8
+
9
+ after do
10
+ ServiceBusTopicNameHelper.clean
11
+ end
12
+
13
+ it "should be able to create rules" do
14
+ rule = @subscription.create_rule("myRule")
15
+ rule.must_be :kind_of?, Azure::ServiceBus::Rules::Rule
16
+ end
17
+
18
+ it "should be able to list rules" do
19
+ @subscription.create_rule("myRule")
20
+ rules = @subscription.get_rules
21
+ rules.size.must_equal 2 # There is always a $Default Rule
22
+ rules.first.must_be :kind_of?, Azure::ServiceBus::Rules::Rule
23
+ end
24
+
25
+ it "should be able to get rules" do
26
+ @subscription.create_rule("myRule")
27
+ rule = @subscription.get_rule("myRule")
28
+ rule.must_be :kind_of?, Azure::ServiceBus::Rules::Rule
29
+ rule.name.must_equal "myRule"
30
+ end
31
+ end
@@ -0,0 +1,43 @@
1
+ require "integration/test_helper"
2
+ require "azure/service_bus/topics"
3
+ require "azure/service_bus/subscriptions"
4
+ require "azure/service_bus/brokered_message"
5
+
6
+ describe "Unlock Message from a Subscription" do
7
+
8
+ after do
9
+ ServiceBusTopicNameHelper.clean
10
+ end
11
+
12
+ before do
13
+ @topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name)
14
+ @subscription = @topic.subscriptions.create("subscription-name")
15
+ @message = Azure::ServiceBus::BrokeredMessage.new("some text", "prop1" => "val1") do |m|
16
+ m.to = "yo"
17
+ m.label = 'my_label'
18
+ end
19
+ end
20
+
21
+ it "should be able to unlock a message from a subscription" do
22
+ Azure::ServiceBus::Topics.send_message_to_topic(@topic, @message)
23
+
24
+ retrieved = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription)
25
+ retrieved.must_be :kind_of?, Azure::ServiceBus::BrokeredMessage
26
+ assert retrieved.valid?
27
+
28
+ # Now there shouldn't be an available message in the subscription
29
+ retrieved2 = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription)
30
+ refute retrieved2.valid?
31
+ retrieved2.error.message.must_equal "No messages available within the specified timeout period."
32
+
33
+ # Unlock the message
34
+ res = Azure::ServiceBus::Subscriptions.unlock_message_from_subscription(@subscription, retrieved)
35
+ res.must_equal true
36
+
37
+ # The message should be available once again
38
+ retrieved = Azure::ServiceBus::Subscriptions.peek_lock_message_from_subscription(@subscription)
39
+ assert retrieved.valid?
40
+ retrieved.body.must_equal @message.body
41
+ retrieved.to.must_equal @message.to
42
+ end
43
+ end
@@ -0,0 +1,25 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Creating a Topic" do
4
+
5
+ after do
6
+ ServiceBusTopicNameHelper.clean
7
+ end
8
+
9
+ it "should be able to create a new topic" do
10
+ # properties = {
11
+ # 'LockDuration' => 'PT30S',
12
+ # 'DefaultMessageTimeToLive' => 'P10675199DT2H48M5.4775807S',
13
+ # 'DuplicateDetectionHistoryTimeWindow' => 'PT10M',
14
+ # 'MaxSizeInMegabytes' => 1,
15
+ # 'RequiresDuplicateDetection' => true,
16
+ # 'RequiresSession' => false,
17
+ # 'DeadLetteringOnMessageExpiration' => false
18
+ # }
19
+ properties = {}
20
+
21
+ topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name, properties)
22
+ topic.must_be_kind_of Azure::ServiceBus::Topics::Topic
23
+ assert topic.valid?, "must be valid"
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require "integration/test_helper"
2
+
3
+ describe "Deleting a Topic" do
4
+
5
+ after do
6
+ ServiceBusTopicNameHelper.clean
7
+ end
8
+
9
+ it "should return false if the topic cannot be deleted" do
10
+ topic = Azure::ServiceBus::Topics::Topic.new(ServiceBusTopicNameHelper.name)
11
+ response = topic.delete
12
+
13
+ response.must_equal false
14
+ refute topic.valid?
15
+ refute topic.frozen?
16
+ end
17
+
18
+ it "should return true if the topic can be deleted" do
19
+ topic = Azure::ServiceBus::Topics.create(ServiceBusTopicNameHelper.name)
20
+ response = topic.delete
21
+
22
+ response.must_equal true
23
+ assert topic.frozen?
24
+ end
25
+ end