azure 0.7.1 → 0.7.3

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 (216) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +31 -0
  3. data/azure.gemspec +2 -1
  4. data/lib/azure.rb +1 -0
  5. data/lib/azure/base_management/management_http_request.rb +3 -12
  6. data/lib/azure/blob/auth/shared_access_signature.rb +4 -0
  7. data/lib/azure/blob/blob_service.rb +2 -2
  8. data/lib/azure/client_services.rb +13 -13
  9. data/lib/azure/core/http/http_request.rb +3 -14
  10. data/lib/azure/core/service.rb +2 -1
  11. data/lib/azure/http_client.rb +1 -17
  12. data/lib/azure/http_response_helper.rb +38 -0
  13. data/lib/azure/sql_database_management/serialization.rb +4 -0
  14. data/lib/azure/sql_database_management/sql_database_management_service.rb +10 -9
  15. data/lib/azure/version.rb +1 -1
  16. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +2 -2
  17. data/lib/azure/virtual_machine_management/serialization.rb +21 -12
  18. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +8 -3
  19. metadata +17 -199
  20. data/test/fixtures/32px-fulls-black.jpg +0 -0
  21. data/test/fixtures/affinity_group.xml +0 -33
  22. data/test/fixtures/all_containers.xml +0 -20
  23. data/test/fixtures/all_tables.xml +0 -22
  24. data/test/fixtures/container_acl.xml +0 -11
  25. data/test/fixtures/create_sql_database_server.xml +0 -2
  26. data/test/fixtures/create_storage_desc_error.xml +0 -5
  27. data/test/fixtures/create_storage_extendedprop_error.xml +0 -8
  28. data/test/fixtures/create_storage_extendedpropname_error.xml +0 -6
  29. data/test/fixtures/create_storage_full_error.xml +0 -6
  30. data/test/fixtures/create_storage_label_error.xml +0 -5
  31. data/test/fixtures/create_storage_location_error.xml +0 -5
  32. data/test/fixtures/create_storage_name_error.xml +0 -6
  33. data/test/fixtures/create_table_response_entry.xml +0 -15
  34. data/test/fixtures/delete_storage_container_error.xml +0 -5
  35. data/test/fixtures/delete_storage_error.xml +0 -5
  36. data/test/fixtures/deployment_error.xml +0 -5
  37. data/test/fixtures/empty_xml_file +0 -0
  38. data/test/fixtures/get_storage_account_error.xml +0 -5
  39. data/test/fixtures/get_storage_account_properties.xml +0 -34
  40. data/test/fixtures/get_storage_account_properties_new.xml +0 -32
  41. data/test/fixtures/http_error.xml +0 -5
  42. data/test/fixtures/insert_entity_response_entry.xml +0 -25
  43. data/test/fixtures/list_affinity_groups.xml +0 -22
  44. data/test/fixtures/list_blobs.xml +0 -121
  45. data/test/fixtures/list_block_all_with_none_committed.xml +0 -22
  46. data/test/fixtures/list_blocks_all.xml +0 -23
  47. data/test/fixtures/list_blocks_committed.xml +0 -13
  48. data/test/fixtures/list_cloud_services.xml +0 -39
  49. data/test/fixtures/list_containers.xml +0 -38
  50. data/test/fixtures/list_firewall_management_endpoint.xml +0 -27
  51. data/test/fixtures/list_locations.xml +0 -212
  52. data/test/fixtures/list_os_images.xml +0 -110
  53. data/test/fixtures/list_page_ranges.xml +0 -11
  54. data/test/fixtures/list_sql_database.xml +0 -24
  55. data/test/fixtures/list_sql_server_firewall.xml +0 -23
  56. data/test/fixtures/list_storage_account_single.xml +0 -25
  57. data/test/fixtures/list_storage_accounts.xml +0 -48
  58. data/test/fixtures/list_virtual_networks.xml +0 -91
  59. data/test/fixtures/list_vm_images.xml +0 -21
  60. data/test/fixtures/logging.xml +0 -11
  61. data/test/fixtures/management_certificate.pem +0 -55
  62. data/test/fixtures/management_certificate.pfx +0 -0
  63. data/test/fixtures/management_certificate.publishsettings +0 -12
  64. data/test/fixtures/messages.xml +0 -12
  65. data/test/fixtures/metrics.xml +0 -10
  66. data/test/fixtures/privatekey.key +0 -28
  67. data/test/fixtures/query_entities_empty_response.xml +0 -7
  68. data/test/fixtures/query_entities_response.xml +0 -45
  69. data/test/fixtures/queue_service_properties.xml +0 -22
  70. data/test/fixtures/queue_service_properties_original.xml +0 -19
  71. data/test/fixtures/queues.xml +0 -16
  72. data/test/fixtures/retention_policy.xml +0 -5
  73. data/test/fixtures/sb_default_create_queue_response.xml +0 -23
  74. data/test/fixtures/sb_default_create_relay_response.xml +0 -15
  75. data/test/fixtures/sb_default_create_topic_response.xml +0 -18
  76. data/test/fixtures/sb_get_access_token_response.txt +0 -1
  77. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +0 -9
  78. data/test/fixtures/storage_service_keys.xml +0 -8
  79. data/test/fixtures/storage_service_properties.xml +0 -55
  80. data/test/fixtures/update_storage_account.xml +0 -16
  81. data/test/fixtures/update_storage_error.xml +0 -5
  82. data/test/fixtures/updated_storage_accounts.xml +0 -55
  83. data/test/fixtures/virtual_machine.xml +0 -116
  84. data/test/fixtures/windows_virtual_machine.xml +0 -106
  85. data/test/integration/affinity_group/Affinity_test.rb +0 -55
  86. data/test/integration/affinity_group/Create_Affinity_test.rb +0 -64
  87. data/test/integration/affinity_group/Delete_Affinity_test.rb +0 -56
  88. data/test/integration/affinity_group/List_Affinity_test.rb +0 -41
  89. data/test/integration/affinity_group/Update_Affinity_test.rb +0 -87
  90. data/test/integration/blob/blob_gb18030_test.rb +0 -199
  91. data/test/integration/blob/blob_metadata_test.rb +0 -75
  92. data/test/integration/blob/blob_pages_test.rb +0 -119
  93. data/test/integration/blob/blob_properties_test.rb +0 -77
  94. data/test/integration/blob/block_blob_test.rb +0 -303
  95. data/test/integration/blob/container/container_acl_test.rb +0 -69
  96. data/test/integration/blob/container/container_metadata_test.rb +0 -50
  97. data/test/integration/blob/container/create_container_test.rb +0 -60
  98. data/test/integration/blob/container/delete_container_test.rb +0 -39
  99. data/test/integration/blob/container/get_container_properties_test.rb +0 -48
  100. data/test/integration/blob/container/list_containers_test.rb +0 -79
  101. data/test/integration/blob/container/root_container_test.rb +0 -55
  102. data/test/integration/blob/copy_blob_test.rb +0 -113
  103. data/test/integration/blob/create_blob_snapshot_test.rb +0 -80
  104. data/test/integration/blob/create_page_blob_test.rb +0 -83
  105. data/test/integration/blob/delete_blob_test.rb +0 -159
  106. data/test/integration/blob/get_blob_test.rb +0 -65
  107. data/test/integration/blob/informative_errors_test.rb +0 -39
  108. data/test/integration/blob/lease/acquire_lease_test.rb +0 -36
  109. data/test/integration/blob/lease/break_lease_test.rb +0 -40
  110. data/test/integration/blob/lease/release_lease_test.rb +0 -40
  111. data/test/integration/blob/lease/renew_lease_test.rb +0 -42
  112. data/test/integration/blob/list_blobs_test.rb +0 -113
  113. data/test/integration/cloud_service/Cloud_Create_test.rb +0 -45
  114. data/test/integration/cloud_service/Cloud_Delete_test.rb +0 -45
  115. data/test/integration/database/create_sql_server_firewall_test.rb +0 -81
  116. data/test/integration/database/create_sql_server_test.rb +0 -53
  117. data/test/integration/database/delete_sql_server_firewall_test.rb +0 -63
  118. data/test/integration/database/delete_sql_server_test.rb +0 -44
  119. data/test/integration/database/list_sql_server_firewall_test.rb +0 -44
  120. data/test/integration/database/list_sql_servers_test.rb +0 -44
  121. data/test/integration/database/reset_password_sql_server_test.rb +0 -53
  122. data/test/integration/location/Location_List_test.rb +0 -38
  123. data/test/integration/location/RoleSize_List_test.rb +0 -34
  124. data/test/integration/queue/clear_messages_test.rb +0 -42
  125. data/test/integration/queue/create_message_test.rb +0 -75
  126. data/test/integration/queue/create_queue_test.rb +0 -50
  127. data/test/integration/queue/delete_message_test.rb +0 -67
  128. data/test/integration/queue/delete_queue_test.rb +0 -45
  129. data/test/integration/queue/informative_errors_test.rb +0 -42
  130. data/test/integration/queue/list_messages_encoded_test.rb +0 -79
  131. data/test/integration/queue/list_messages_test.rb +0 -79
  132. data/test/integration/queue/list_queues_test.rb +0 -43
  133. data/test/integration/queue/peek_messages_test.rb +0 -59
  134. data/test/integration/queue/queue_gb18030_test.rb +0 -131
  135. data/test/integration/queue/queue_metadata_test.rb +0 -40
  136. data/test/integration/queue/update_message_test.rb +0 -74
  137. data/test/integration/service_bus/informative_errors_test.rb +0 -37
  138. data/test/integration/service_bus/queues_scenario_test.rb +0 -200
  139. data/test/integration/service_bus/queues_test.rb +0 -266
  140. data/test/integration/service_bus/relay_test.rb +0 -132
  141. data/test/integration/service_bus/rules_test.rb +0 -145
  142. data/test/integration/service_bus/sb_queue_gb18030_test.rb +0 -182
  143. data/test/integration/service_bus/scenario_test.rb +0 -101
  144. data/test/integration/service_bus/subscriptions_test.rb +0 -211
  145. data/test/integration/service_bus/topics_scenario_test.rb +0 -406
  146. data/test/integration/service_bus/topics_test.rb +0 -129
  147. data/test/integration/storage_management/storage_management_test.rb +0 -185
  148. data/test/integration/table/create_table_test.rb +0 -36
  149. data/test/integration/table/delete_entity_batch_test.rb +0 -107
  150. data/test/integration/table/delete_entity_test.rb +0 -94
  151. data/test/integration/table/delete_table_test.rb +0 -40
  152. data/test/integration/table/get_table_test.rb +0 -37
  153. data/test/integration/table/informative_errors_test.rb +0 -39
  154. data/test/integration/table/insert_entity_batch_test.rb +0 -100
  155. data/test/integration/table/insert_entity_test.rb +0 -88
  156. data/test/integration/table/insert_or_merge_entity_batch_test.rb +0 -159
  157. data/test/integration/table/insert_or_merge_entity_test.rb +0 -143
  158. data/test/integration/table/insert_or_replace_entity_batch_test.rb +0 -152
  159. data/test/integration/table/insert_or_replace_entity_test.rb +0 -137
  160. data/test/integration/table/merge_entity_batch_test.rb +0 -128
  161. data/test/integration/table/merge_entity_test.rb +0 -113
  162. data/test/integration/table/query_entities_test.rb +0 -196
  163. data/test/integration/table/query_tables_test.rb +0 -43
  164. data/test/integration/table/query_test.rb +0 -251
  165. data/test/integration/table/table_acl_test.rb +0 -52
  166. data/test/integration/table/table_gb18030_test.rb +0 -355
  167. data/test/integration/table/update_entity_batch_test.rb +0 -149
  168. data/test/integration/table/update_entity_test.rb +0 -131
  169. data/test/integration/test_helper.rb +0 -40
  170. data/test/integration/vm/VM_Create_test.rb +0 -262
  171. data/test/integration/vm/VM_Delete_test.rb +0 -53
  172. data/test/integration/vm/VM_Operations_test.rb +0 -172
  173. data/test/integration/vm_image/virtual_machine_disk_test.rb +0 -37
  174. data/test/integration/vm_image/virtual_machine_image_test.rb +0 -37
  175. data/test/integration/vnet/Virtual_Network_Create_test.rb +0 -116
  176. data/test/integration/vnet/Virtual_Network_list_test.rb +0 -48
  177. data/test/support/env.rb +0 -19
  178. data/test/support/fixtures.rb +0 -36
  179. data/test/support/name_generator.rb +0 -168
  180. data/test/support/stubs.rb +0 -42
  181. data/test/support/virtual_machine_name_generator.rb +0 -102
  182. data/test/support/virtual_network_helper.rb +0 -73
  183. data/test/test_helper.rb +0 -47
  184. data/test/unit/affinity_group/affinity_group_test.rb +0 -189
  185. data/test/unit/affinity_group/serialization_test.rb +0 -87
  186. data/test/unit/base_management/base_management_service_test.rb +0 -19
  187. data/test/unit/base_management/location_test.rb +0 -56
  188. data/test/unit/base_management/role_size_test.rb +0 -50
  189. data/test/unit/blob/auth/shared_access_signature_test.rb +0 -71
  190. data/test/unit/blob/blob_service_test.rb +0 -1970
  191. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +0 -94
  192. data/test/unit/cloud_service_management/serialization_test.rb +0 -169
  193. data/test/unit/config/azure_test.rb +0 -131
  194. data/test/unit/config/client_test.rb +0 -37
  195. data/test/unit/core/auth/shared_key_lite_test.rb +0 -51
  196. data/test/unit/core/auth/shared_key_test.rb +0 -58
  197. data/test/unit/core/auth/signer_test.rb +0 -30
  198. data/test/unit/core/http/http_error_test.rb +0 -61
  199. data/test/unit/core/http/http_request_test.rb +0 -138
  200. data/test/unit/core/http/http_response_test.rb +0 -20
  201. data/test/unit/core/http/retry_policy_test.rb +0 -23
  202. data/test/unit/core/utility_test.rb +0 -122
  203. data/test/unit/database/serialization_test.rb +0 -94
  204. data/test/unit/database/sql_database_server_service_test.rb +0 -341
  205. data/test/unit/http_client_test.rb +0 -74
  206. data/test/unit/service/serialization_test.rb +0 -533
  207. data/test/unit/service/storage_service_test.rb +0 -297
  208. data/test/unit/storage_management/serialization_test.rb +0 -244
  209. data/test/unit/storage_management/storage_management_service_test.rb +0 -247
  210. data/test/unit/table/edmtype_test.rb +0 -108
  211. data/test/unit/virtual_machine_image_management/serialization_test.rb +0 -50
  212. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +0 -114
  213. data/test/unit/virtual_machine_management/serialization_test.rb +0 -316
  214. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +0 -480
  215. data/test/unit/vnet/serialization_test.rb +0 -187
  216. data/test/unit/vnet/virtual_network_management_service_test.rb +0 -131
@@ -1,196 +0,0 @@
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
- require "azure/table/table_service"
17
- require "azure/core/http/http_error"
18
-
19
- describe Azure::Table::TableService do
20
- describe "#query_entities" do
21
- subject { Azure::Table::TableService.new }
22
- let(:table_name){ TableNameHelper.name }
23
- let(:entities_per_partition){3}
24
- let(:partitions){ ["part1", "part2", "part3"]}
25
- let(:entities){
26
- entities = {}
27
- index = 0
28
- partitions.each { |p|
29
- entities[p] = []
30
- (0..entities_per_partition).each { |i|
31
- entities[p].push "entity-#{index}"
32
- index+=1
33
- }
34
- }
35
- entities
36
- }
37
- let(:entity_properties){
38
- {
39
- "CustomStringProperty" => "CustomPropertyValue",
40
- "CustomIntegerProperty" => 37,
41
- "CustomBooleanProperty" => true,
42
- "CustomDateProperty" => Time.now
43
- }
44
- }
45
- before {
46
- subject.create_table table_name
47
- partitions.each { |p|
48
- entities[p].each { |e|
49
- entity = entity_properties.dup
50
- entity[:PartitionKey] = p
51
- entity[:RowKey] = e
52
- subject.insert_entity table_name, entity
53
- }
54
- }
55
- }
56
-
57
- after { TableNameHelper.clean }
58
-
59
- it "Queries a table for list of entities" do
60
- result = subject.query_entities table_name
61
- result.must_be_kind_of Array
62
- result.length.must_equal ((partitions.length + 1) * entities_per_partition)
63
-
64
- result.each { |e|
65
- entities[e.properties["PartitionKey"]].must_include e.properties["RowKey"]
66
- entity_properties.each { |k,v|
67
- unless v.class == Time
68
- e.properties[k].must_equal v
69
- else
70
- e.properties[k].to_i.must_equal v.to_i
71
- end
72
- }
73
- }
74
- end
75
-
76
- it "can constrain by partition and row key, returning zero or one entity" do
77
- partition = partitions[0]
78
- row_key = entities[partition][0]
79
-
80
- result = subject.query_entities table_name, { :partition_key => partition, :row_key => row_key }
81
- result.must_be_kind_of Array
82
- result.length.must_equal 1
83
-
84
- result.each { |e|
85
- e.properties["RowKey"].must_equal row_key
86
- entity_properties.each { |k,v|
87
- unless v.class == Time
88
- e.properties[k].must_equal v
89
- else
90
- e.properties[k].to_i.must_equal v.to_i
91
- end
92
- }
93
- }
94
- end
95
-
96
- it "can project a subset of properties, populating sparse properties with nil" do
97
- projection = ["CustomIntegerProperty", "ThisPropertyDoesNotExist"]
98
- puts '#########################################'
99
- result = subject.query_entities table_name, { :select => projection }
100
- result.must_be_kind_of Array
101
- result.length.must_equal ((partitions.length + 1) * entities_per_partition)
102
-
103
- result.each { |e|
104
- e.properties.length.must_equal projection.length
105
- e.properties["CustomIntegerProperty"].must_equal entity_properties["CustomIntegerProperty"]
106
- e.properties.must_include "ThisPropertyDoesNotExist"
107
- e.properties["ThisPropertyDoesNotExist"].must_equal ""
108
- }
109
- end
110
-
111
- it "can filter by one or more properties, returning a matching set of entities" do
112
- subject.insert_entity table_name, entity_properties.merge({
113
- "PartitionKey" => "filter-test-partition",
114
- "RowKey" => "filter-test-key",
115
- "CustomIntegerProperty" => entity_properties["CustomIntegerProperty"] + 1,
116
- "CustomBooleanProperty"=> false
117
- })
118
-
119
- filter = "CustomIntegerProperty gt #{entity_properties["CustomIntegerProperty"]} and CustomBooleanProperty eq false"
120
- result = subject.query_entities table_name, { :filter => filter }
121
- result.must_be_kind_of Array
122
- result.length.must_equal 1
123
- result.first.properties["PartitionKey"].must_equal "filter-test-partition"
124
-
125
- filter = "CustomIntegerProperty gt #{entity_properties["CustomIntegerProperty"]} and CustomBooleanProperty eq true"
126
- result = subject.query_entities table_name, { :filter => filter }
127
- result.must_be_kind_of Array
128
- result.length.must_equal 0
129
- end
130
-
131
- it "can limit the result set using the top parameter" do
132
- result = subject.query_entities table_name, { :top => 3 }
133
- result.must_be_kind_of Array
134
- result.length.must_equal 3
135
- result.continuation_token.wont_be_nil
136
- end
137
-
138
- it "can page results using the top parameter and continuation_token" do
139
- result = subject.query_entities table_name, { :top => 3 }
140
- result.must_be_kind_of Array
141
- result.length.must_equal 3
142
- result.continuation_token.wont_be_nil
143
-
144
- result2 = subject.query_entities table_name, { :top => 3, :continuation_token => result.continuation_token }
145
- result2.must_be_kind_of Array
146
- result2.length.must_equal 3
147
- result2.continuation_token.wont_be_nil
148
-
149
- result3 = subject.query_entities table_name, { :top => 3, :continuation_token => result2.continuation_token }
150
- result3.must_be_kind_of Array
151
- result3.length.must_equal 3
152
- result3.continuation_token.wont_be_nil
153
-
154
- result4 = subject.query_entities table_name, { :top => 3, :continuation_token => result3.continuation_token }
155
- result4.must_be_kind_of Array
156
- result4.length.must_equal 3
157
- result4.continuation_token.must_be_nil
158
- end
159
-
160
- it "can combine projection, filtering, and paging in the same query" do
161
- subject.insert_entity table_name, entity_properties.merge({
162
- "PartitionKey" => "filter-test-partition",
163
- "RowKey" => "filter-test-key",
164
- "CustomIntegerProperty" => entity_properties["CustomIntegerProperty"] + 1,
165
- "CustomBooleanProperty"=> false
166
- })
167
-
168
- filter = "CustomIntegerProperty eq #{entity_properties["CustomIntegerProperty"]}"
169
- projection = ["PartitionKey", "CustomIntegerProperty"]
170
- result = subject.query_entities table_name, { :select => projection, :filter => filter, :top => 3 }
171
- result.must_be_kind_of Array
172
- result.length.must_equal 3
173
- result.continuation_token.wont_be_nil
174
-
175
- result.first.properties["CustomIntegerProperty"].must_equal entity_properties["CustomIntegerProperty"]
176
- result.first.properties["PartitionKey"].wont_be_nil
177
- result.first.properties.length.must_equal 2
178
-
179
- result2 = subject.query_entities table_name, { :select => projection, :filter => filter, :top => 3, :continuation_token => result.continuation_token }
180
- result2.must_be_kind_of Array
181
- result2.length.must_equal 3
182
- result2.continuation_token.wont_be_nil
183
-
184
- result3 = subject.query_entities table_name, { :select => projection, :filter => filter, :top => 3, :continuation_token => result2.continuation_token }
185
- result3.must_be_kind_of Array
186
- result3.length.must_equal 3
187
- result3.continuation_token.wont_be_nil
188
-
189
- result4 = subject.query_entities table_name, { :select => projection, :filter => filter, :top => 3, :continuation_token => result3.continuation_token }
190
- result4.must_be_kind_of Array
191
- result4.length.must_equal 3
192
- result4.continuation_token.must_be_nil
193
- end
194
-
195
- end
196
- end
@@ -1,43 +0,0 @@
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
- require "azure/table/table_service"
17
- require "azure/core/http/http_error"
18
-
19
- describe Azure::Table::TableService do
20
- describe "#query_tables" do
21
- subject { Azure::Table::TableService.new }
22
- let(:tables){ [TableNameHelper.name, TableNameHelper.name] }
23
- before { tables.each { |t| subject.create_table t } }
24
- after { TableNameHelper.clean }
25
-
26
- it "gets a list of tables for the account" do
27
- result = subject.query_tables
28
- result.must_be_kind_of Array
29
-
30
- tables.each { |t|
31
- table = result.find {|c|
32
- c[:properties]["TableName"] == t
33
- }
34
- table.wont_be_nil
35
- updated = subject.get_table(t)
36
- updated.wont_be_nil
37
-
38
- # this is a weird, but sometimes it's off by a few seconds
39
- assert ((table[:updated] - updated).abs < 30), "time stamps don't match"
40
- }
41
- end
42
- end
43
- end
@@ -1,251 +0,0 @@
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
- require "azure/table/table_service"
17
- require "azure/table/query"
18
- require "azure/core/http/http_error"
19
-
20
- describe Azure::Table::TableService do
21
- describe "#query_entities" do
22
- subject { Azure::Table::TableService.new }
23
- let(:table_name){ TableNameHelper.name }
24
- let(:entities_per_partition){3}
25
- let(:partitions){ ["part1", "part2", "part3"]}
26
- let(:entities){
27
- entities = {}
28
- index = 0
29
- partitions.each { |p|
30
- entities[p] = []
31
- (0..entities_per_partition).each { |i|
32
- entities[p].push "entity-#{index}"
33
- index+=1
34
- }
35
- }
36
- entities
37
- }
38
- let(:entity_properties){
39
- {
40
- "CustomStringProperty" => "CustomPropertyValue",
41
- "CustomIntegerProperty" => 37,
42
- "CustomBooleanProperty" => true,
43
- "CustomDateProperty" => Time.now
44
- }
45
- }
46
- before {
47
- subject.create_table table_name
48
- partitions.each { |p|
49
- entities[p].each { |e|
50
- entity = entity_properties.dup
51
- entity[:PartitionKey] = p
52
- entity[:RowKey] = e
53
- subject.insert_entity table_name, entity
54
- }
55
- }
56
- }
57
-
58
- after { TableNameHelper.clean }
59
-
60
- it "Queries a table for list of entities" do
61
- q = Azure::Table::Query.new.from table_name
62
-
63
- result = q.execute
64
- result.must_be_kind_of Array
65
- result.length.must_equal ((partitions.length + 1) * entities_per_partition)
66
-
67
- result.each { |e|
68
- entities[e.properties["PartitionKey"]].must_include e.properties["RowKey"]
69
- entity_properties.each { |k,v|
70
- unless v.class == Time
71
- e.properties[k].must_equal v
72
- else
73
- e.properties[k].to_i.must_equal v.to_i
74
- end
75
- }
76
- }
77
- end
78
-
79
- it "can constrain by partition and row key, returning zero or one entity" do
80
- partition = partitions[0]
81
- row_key = entities[partition][0]
82
-
83
- q = Azure::Table::Query.new
84
- .from(table_name)
85
- .partition(partition)
86
- .row(row_key)
87
-
88
- result = q.execute
89
- result.must_be_kind_of Array
90
- result.length.must_equal 1
91
-
92
- result.each { |e|
93
- e.properties["RowKey"].must_equal row_key
94
- entity_properties.each { |k,v|
95
- unless v.class == Time
96
- e.properties[k].must_equal v
97
- else
98
- e.properties[k].to_i.must_equal v.to_i
99
- end
100
- }
101
- }
102
- end
103
-
104
- it "can project a subset of properties, populating sparse properties with nil" do
105
- projection = ['CustomIntegerProperty', 'ThisPropertyDoesNotExist']
106
-
107
- q = Azure::Table::Query.new
108
- .from(table_name)
109
- .select(projection[0])
110
- .select(projection[1])
111
-
112
- result = q.execute
113
- result.must_be_kind_of Array
114
- result.length.must_equal ((partitions.length + 1) * entities_per_partition)
115
-
116
- result.each { |e|
117
- e.properties.length.must_equal projection.length
118
- e.properties["CustomIntegerProperty"].must_equal entity_properties["CustomIntegerProperty"]
119
- e.properties.must_include "ThisPropertyDoesNotExist"
120
- e.properties["ThisPropertyDoesNotExist"].must_equal ""
121
- }
122
- end
123
-
124
- it "can filter by one or more properties, returning a matching set of entities" do
125
- subject.insert_entity table_name, entity_properties.merge({
126
- "PartitionKey" => "filter-test-partition",
127
- "RowKey" => "filter-test-key",
128
- "CustomIntegerProperty" => entity_properties["CustomIntegerProperty"] + 1,
129
- "CustomBooleanProperty"=> false
130
- })
131
-
132
- q = Azure::Table::Query.new
133
- .from(table_name)
134
- .where("CustomIntegerProperty gt #{entity_properties['CustomIntegerProperty']}")
135
- .where("CustomBooleanProperty eq false")
136
-
137
- result = q.execute
138
- result.must_be_kind_of Array
139
- result.length.must_equal 1
140
- result.first.properties["PartitionKey"].must_equal "filter-test-partition"
141
-
142
- q = Azure::Table::Query.new
143
- .from(table_name)
144
- .where("CustomIntegerProperty gt #{entity_properties['CustomIntegerProperty']}")
145
- .where("CustomBooleanProperty eq true")
146
- result = q.execute
147
- result.must_be_kind_of Array
148
- result.length.must_equal 0
149
- end
150
-
151
- it "can limit the result set using the top parameter" do
152
- q = Azure::Table::Query.new
153
- .from(table_name)
154
- .top(3)
155
-
156
- result = q.execute
157
- result.must_be_kind_of Array
158
- result.length.must_equal 3
159
- result.continuation_token.wont_be_nil
160
- end
161
-
162
- it "can page results using the top parameter and continuation_token" do
163
- q = Azure::Table::Query.new
164
- .from(table_name)
165
- .top(3)
166
-
167
- result = q.execute
168
- result.must_be_kind_of Array
169
- result.length.must_equal 3
170
- result.continuation_token.wont_be_nil
171
-
172
- q = Azure::Table::Query.new
173
- .from(table_name)
174
- .top(3)
175
- .next_row(result.continuation_token[:next_row_key])
176
- .next_partition(result.continuation_token[:next_partition_key])
177
-
178
- result2 = q.execute
179
- result2.must_be_kind_of Array
180
- result2.length.must_equal 3
181
- result2.continuation_token.wont_be_nil
182
-
183
- q = Azure::Table::Query.new
184
- .from(table_name)
185
- .top(3)
186
- .next_row(result2.continuation_token[:next_row_key])
187
- .next_partition(result2.continuation_token[:next_partition_key])
188
-
189
- result3 = q.execute
190
- result3.must_be_kind_of Array
191
- result3.length.must_equal 3
192
- result3.continuation_token.wont_be_nil
193
-
194
- q = Azure::Table::Query.new
195
- .from(table_name)
196
- .top(3)
197
- .next_row(result3.continuation_token[:next_row_key])
198
- .next_partition(result3.continuation_token[:next_partition_key])
199
-
200
- result4 = q.execute
201
- result4.must_be_kind_of Array
202
- result4.length.must_equal 3
203
- result4.continuation_token.must_be_nil
204
- end
205
-
206
- it "can combine projection, filtering, and paging in the same query" do
207
- subject.insert_entity table_name, entity_properties.merge({
208
- "PartitionKey" => "filter-test-partition",
209
- "RowKey" => "filter-test-key",
210
- "CustomIntegerProperty" => entity_properties["CustomIntegerProperty"] + 1,
211
- "CustomBooleanProperty"=> false
212
- })
213
-
214
-
215
- q = Azure::Table::Query.new
216
- .from(table_name)
217
- .select("PartitionKey")
218
- .select("CustomIntegerProperty")
219
- .where("CustomIntegerProperty eq #{entity_properties['CustomIntegerProperty']}")
220
- .top(3)
221
-
222
- result = q.execute
223
- result.must_be_kind_of Array
224
- result.length.must_equal 3
225
- result.continuation_token.wont_be_nil
226
-
227
- result.first.properties["CustomIntegerProperty"].must_equal entity_properties["CustomIntegerProperty"]
228
- result.first.properties["PartitionKey"].wont_be_nil
229
- result.first.properties.length.must_equal 2
230
-
231
- q.next_row(result.continuation_token[:next_row_key]).next_partition(result.continuation_token[:next_partition_key])
232
-
233
- result2 = q.execute
234
- result2.must_be_kind_of Array
235
- result2.length.must_equal 3
236
- result2.continuation_token.wont_be_nil
237
-
238
- q.next_row(result2.continuation_token[:next_row_key]).next_partition(result2.continuation_token[:next_partition_key])
239
- result3 = q.execute
240
- result3.must_be_kind_of Array
241
- result3.length.must_equal 3
242
- result3.continuation_token.wont_be_nil
243
-
244
- q.next_row(result3.continuation_token[:next_row_key]).next_partition(result3.continuation_token[:next_partition_key])
245
- result4 = q.execute
246
- result4.must_be_kind_of Array
247
- result4.length.must_equal 3
248
- result4.continuation_token.must_be_nil
249
- end
250
- end
251
- end