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,75 +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/blob/blob_service"
17
-
18
- describe Azure::Blob::BlobService do
19
- subject { Azure::Blob::BlobService.new }
20
- after { TableNameHelper.clean }
21
-
22
- describe '#set/get_blob_metadata' do
23
- let(:container_name) { ContainerNameHelper.name }
24
- let(:blob_name) { "blobname" }
25
- let(:length) { 1024 }
26
- let(:metadata){ {"custommetadata" => "CustomMetadataValue"} }
27
- before {
28
- subject.create_container container_name
29
- subject.create_page_blob container_name, blob_name, length
30
- }
31
-
32
- it 'sets and gets metadata for a blob' do
33
- result = subject.set_blob_metadata container_name, blob_name, metadata
34
- result.must_be_nil
35
- blob = subject.get_blob_metadata container_name, blob_name
36
-
37
- metadata.each { |k,v|
38
- blob.metadata.must_include k
39
- blob.metadata[k].must_equal v
40
- }
41
- end
42
-
43
- describe 'when a blob has a snapshot' do
44
- let(:snapshot) { subject.create_blob_snapshot container_name, blob_name, {:metadata => metadata }}
45
- before { s = snapshot }
46
-
47
- it 'gets metadata for a blob snapshot (when set during create)' do
48
-
49
- blob = subject.get_blob_metadata container_name, blob_name, { :snapshot => snapshot }
50
-
51
- blob.snapshot.must_equal snapshot
52
- metadata.each { |k,v|
53
- blob.metadata.must_include k
54
- blob.metadata[k].must_equal v
55
- }
56
-
57
- end
58
-
59
- it 'errors if the snapshot does not exist' do
60
- assert_raises(Azure::Core::Http::HTTPError) do
61
- subject.get_blob_metadata container_name, blob_name, { :snapshot => "invalidsnapshot" }
62
- end
63
- end
64
- end
65
-
66
- it 'errors if the blob name does not exist' do
67
- assert_raises(Azure::Core::Http::HTTPError) do
68
- subject.get_blob_metadata container_name, "thisblobdoesnotexist"
69
- end
70
- assert_raises(Azure::Core::Http::HTTPError) do
71
- subject.set_blob_metadata container_name, "thisblobdoesnotexist", metadata
72
- end
73
- end
74
- end
75
- end
@@ -1,119 +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/blob/blob_service'
17
-
18
- describe Azure::Blob::BlobService do
19
- subject { Azure::Blob::BlobService.new }
20
- after { TableNameHelper.clean }
21
-
22
- let(:container_name) { ContainerNameHelper.name }
23
- let(:blob_name) { 'blobname' }
24
- let(:blob_name2) { 'blobname2' }
25
- let(:length) { 2560 }
26
- before {
27
- subject.create_container container_name
28
- subject.create_page_blob container_name, blob_name, length
29
- subject.create_page_blob container_name, blob_name2, length
30
- }
31
-
32
- describe '#create_blob_pages' do
33
- it 'creates pages in a page blob' do
34
- content = ''
35
- 512.times.each{|i| content << '@' }
36
-
37
- subject.create_blob_pages container_name, blob_name, 0, 511, content
38
- subject.create_blob_pages container_name, blob_name, 1024, 1535, content
39
-
40
- ranges = subject.list_page_blob_ranges container_name, blob_name, { :start_range => 0, :end_range => 1536 }
41
- ranges[0][0].must_equal 0
42
- ranges[0][1].must_equal 511
43
- ranges[1][0].must_equal 1024
44
- ranges[1][1].must_equal 1535
45
- end
46
- end
47
-
48
- describe 'when the options hash is used' do
49
- it 'if none match is specified' do
50
- content = ''
51
- 512.times.each{|i| content << '@' }
52
-
53
- blob = subject.create_blob_pages container_name, blob_name2, 0, 511, content
54
-
55
- assert_raises(Azure::Core::Http::HTTPError) do
56
- subject.create_blob_pages container_name, blob_name2, 1024, 1535, content, { :if_none_match => blob.properties[:etag] }
57
- end
58
- end
59
-
60
- it 'if match is specified' do
61
- content = ''
62
- 512.times.each{|i| content << '@' }
63
-
64
- blob = subject.create_blob_pages container_name, blob_name, 0, 511, content
65
- subject.create_blob_pages container_name, blob_name, 1024, 1535, content, { :if_match => blob.properties[:etag] }
66
- end
67
- end
68
-
69
- describe '#clear_blob_pages' do
70
- before {
71
- content = ''
72
- 512.times.each{|i| content << '@' }
73
-
74
- subject.create_blob_pages container_name, blob_name, 0, 511, content
75
- subject.create_blob_pages container_name, blob_name, 1024, 1535, content
76
- subject.create_blob_pages container_name, blob_name, 2048, 2559, content
77
-
78
- ranges = subject.list_page_blob_ranges container_name, blob_name, { :start_range => 0, :end_range => 2560 }
79
- ranges.length.must_equal 3
80
- ranges[0][0].must_equal 0
81
- ranges[0][1].must_equal 511
82
- ranges[1][0].must_equal 1024
83
- ranges[1][1].must_equal 1535
84
- ranges[2][0].must_equal 2048
85
- ranges[2][1].must_equal 2559
86
- }
87
-
88
- describe 'when both start_range and end_range are specified' do
89
- it 'clears the data in page blobs within the provided range' do
90
- subject.clear_blob_pages container_name, blob_name, 512, 1535
91
-
92
- ranges = subject.list_page_blob_ranges container_name, blob_name, { :start_range => 0, :end_range => 2560 }
93
- ranges.length.must_equal 2
94
- ranges[0][0].must_equal 0
95
- ranges[0][1].must_equal 511
96
- ranges[1][0].must_equal 2048
97
- ranges[1][1].must_equal 2559
98
- end
99
- end
100
- end
101
-
102
- describe '#list_page_blob_ranges' do
103
- before {
104
- content = ''
105
- 512.times.each{|i| content << '@' }
106
-
107
- subject.create_blob_pages container_name, blob_name, 0, 511, content
108
- subject.create_blob_pages container_name, blob_name, 1024, 1535, content
109
- }
110
-
111
- it 'lists the active blob pages' do
112
- ranges = subject.list_page_blob_ranges container_name, blob_name, { :start_range => 0, :end_range => 1536 }
113
- ranges[0][0].must_equal 0
114
- ranges[0][1].must_equal 511
115
- ranges[1][0].must_equal 1024
116
- ranges[1][1].must_equal 1535
117
- end
118
- end
119
- end
@@ -1,77 +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/blob/blob_service"
17
-
18
- describe Azure::Blob::BlobService do
19
- subject { Azure::Blob::BlobService.new }
20
- after { TableNameHelper.clean }
21
-
22
- describe '#set/get_blob_properties' do
23
- let(:container_name) { ContainerNameHelper.name }
24
- let(:blob_name) { "blobname" }
25
- let(:length) { 1024 }
26
- before {
27
- subject.create_container container_name
28
- subject.create_page_blob container_name, blob_name, length
29
- }
30
- let(:options){{
31
- :blob_content_type=>"application/my-special-format",
32
- :blob_content_encoding=>"utf-16",
33
- :blob_content_language=>"klingon",
34
- :blob_cache_control=>"max-age=1296000",
35
- }}
36
-
37
- it 'sets and gets properties for a blob' do
38
- result = subject.set_blob_properties container_name, blob_name, options
39
- result.must_be_nil
40
- blob = subject.get_blob_properties container_name, blob_name
41
- blob.properties[:content_type].must_equal options[:blob_content_type]
42
- blob.properties[:content_encoding].must_equal options[:blob_content_encoding]
43
- blob.properties[:cache_control].must_equal options[:blob_cache_control]
44
- end
45
-
46
- describe 'when a blob has a snapshot' do
47
- before {
48
- subject.set_blob_properties container_name, blob_name, options
49
- }
50
-
51
- it 'gets properties for a blob snapshot' do
52
- snapshot = subject.create_blob_snapshot container_name, blob_name
53
- blob = subject.get_blob_properties container_name, blob_name, { :snapshot => snapshot }
54
-
55
- blob.snapshot.must_equal snapshot
56
- blob.properties[:content_type].must_equal options[:blob_content_type]
57
- blob.properties[:content_encoding].must_equal options[:blob_content_encoding]
58
- blob.properties[:cache_control].must_equal options[:blob_cache_control]
59
- end
60
-
61
- it 'errors if the snapshot does not exist' do
62
- assert_raises(Azure::Core::Http::HTTPError) do
63
- subject.get_blob_properties container_name, blob_name, { :snapshot => "invalidsnapshot" }
64
- end
65
- end
66
- end
67
-
68
- it 'errors if the blob name does not exist' do
69
- assert_raises(Azure::Core::Http::HTTPError) do
70
- subject.get_blob_properties container_name, "thisblobdoesnotexist"
71
- end
72
- assert_raises(Azure::Core::Http::HTTPError) do
73
- subject.get_blob_properties container_name, "thisblobdoesnotexist", options
74
- end
75
- end
76
- end
77
- end
@@ -1,303 +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/blob/blob_service"
17
- require 'base64'
18
-
19
- describe Azure::Blob::BlobService do
20
- subject { Azure::Blob::BlobService.new }
21
-
22
- let(:container_name) { ContainerNameHelper.name }
23
- let(:blob_name) { "blobname" }
24
- let(:content) { content = ""; 512.times.each{|i| content << "@" }; content }
25
- let(:file_path) { "/tmp/azure-sdk-for-ruby-blob.txt" }
26
-
27
- before { subject.create_container container_name }
28
- after { ContainerNameHelper.clean }
29
-
30
- describe '#create_block_blob' do
31
- it 'creates a block blob with String body (default encoding)' do
32
- subject.create_block_blob container_name, blob_name, content
33
- blob = subject.get_blob_properties container_name, blob_name
34
- blob.name.must_equal blob_name
35
- blob.properties[:content_encoding].must_equal content.encoding.to_s.downcase
36
- end
37
-
38
- it 'creates a block blob with String body (content-encoding)' do
39
- options = {
40
- :content_encoding=>"ascii"
41
- }
42
-
43
- subject.create_block_blob container_name, blob_name, content, options
44
- blob = subject.get_blob_properties container_name, blob_name
45
- blob.name.must_equal blob_name
46
- blob.properties[:content_encoding].must_equal options[:content_encoding]
47
- end
48
-
49
- it 'creates a block blob with IO body (default encoding)' do
50
- begin
51
- File.delete(file_path) if File.exist?(file_path)
52
- File.write(file_path, content);
53
- file = File.open(file_path)
54
-
55
- subject.create_block_blob container_name, blob_name, file
56
- blob = subject.get_blob_properties container_name, blob_name
57
- blob.name.must_equal blob_name
58
- blob.properties[:content_encoding].must_equal file.external_encoding.to_s.downcase
59
- ensure
60
- file.close if file
61
- File.delete(file_path) if File.exist?(file_path)
62
- end
63
- end
64
-
65
- it 'creates a block blob with IO body (content-encoding)' do
66
- begin
67
- options = {
68
- :content_encoding=>"ascii"
69
- }
70
-
71
- File.delete(file_path) if File.exist?(file_path)
72
- File.write(file_path, content);
73
- file = File.open(file_path)
74
-
75
- subject.create_block_blob container_name, blob_name, file, options
76
- blob = subject.get_blob_properties container_name, blob_name
77
- blob.name.must_equal blob_name
78
- blob.properties[:content_encoding].must_equal options[:content_encoding]
79
- ensure
80
- file.close if file
81
- File.delete(file_path) if File.exist?(file_path)
82
- end
83
- end
84
-
85
- it 'sets additional properties when the options hash is used' do
86
- options = {
87
- :content_type=>"application/xml",
88
- :content_encoding=>"utf-8",
89
- :content_language=>"en-US",
90
- :cache_control=>"max-age=1296000",
91
- :metadata => { "CustomMetadataProperty"=>"CustomMetadataValue"}
92
- }
93
-
94
- blob = subject.create_block_blob container_name, blob_name, content, options
95
- blob = subject.get_blob_properties container_name, blob_name
96
- blob.name.must_equal blob_name
97
- blob.properties[:content_type].must_equal options[:content_type]
98
- blob.properties[:content_encoding].must_equal options[:content_encoding]
99
- blob.properties[:cache_control].must_equal options[:cache_control]
100
-
101
- blob = subject.get_blob_metadata container_name, blob_name
102
- blob.name.must_equal blob_name
103
- blob.metadata["custommetadataproperty"].must_equal "CustomMetadataValue"
104
- end
105
-
106
- it 'errors if the container does not exist' do
107
- assert_raises(Azure::Core::Http::HTTPError) do
108
- subject.create_block_blob ContainerNameHelper.name, blob_name, content
109
- end
110
- end
111
- end
112
-
113
- describe '#create_blob_block' do
114
- let(:blockid) {"anyblockid1" }
115
-
116
- it 'creates a block as part of a block blob' do
117
- subject.create_blob_block container_name, blob_name, blockid, content
118
-
119
- # verify
120
- block_list = subject.list_blob_blocks container_name, blob_name
121
- block = block_list[:uncommitted][0]
122
- block.type.must_equal :uncommitted
123
- block.size.must_equal 512
124
- block.name.must_equal blockid
125
- end
126
- end
127
-
128
- describe '#commit_blob_blocks' do
129
- let(:blocklist) { [["anyblockid0"], ["anyblockid1"]] }
130
- before {
131
- blocklist.each { |block_entry|
132
- subject.create_blob_block container_name, blob_name, block_entry[0], content
133
- }
134
- }
135
-
136
- it 'commits a list of blocks to blob' do
137
- # verify starting state
138
- block_list = subject.list_blob_blocks container_name, blob_name
139
-
140
- (0..1).each { |i|
141
- block = block_list[:uncommitted][i]
142
- block.type.must_equal :uncommitted
143
- block.size.must_equal 512
144
- block.name.must_equal blocklist[i][0]
145
- }
146
-
147
- assert_raises(Azure::Core::Http::HTTPError) do
148
- subject.get_blob container_name, blob_name
149
- end
150
-
151
- # commit blocks
152
- result = subject.commit_blob_blocks container_name, blob_name, blocklist
153
- result.must_be_nil
154
-
155
- blob, returned_content = subject.get_blob container_name, blob_name
156
- blob.properties[:content_length].must_equal (content.length * 2)
157
- returned_content.must_equal (content + content)
158
- end
159
- end
160
-
161
- describe '#list_blob_blocks' do
162
- let(:blocklist) { [["anyblockid0"], ["anyblockid1"], ["anyblockid2"], ["anyblockid3"]] }
163
- before {
164
-
165
- subject.create_blob_block container_name, blob_name, blocklist[0][0], content
166
- subject.create_blob_block container_name, blob_name, blocklist[1][0], content
167
-
168
- # two committed blocks, two uncommitted blocks
169
- result = subject.commit_blob_blocks container_name, blob_name, blocklist.slice(0..1)
170
- result.must_be_nil
171
-
172
- subject.create_blob_block container_name, blob_name, blocklist[2][0], content
173
- subject.create_blob_block container_name, blob_name, blocklist[3][0], content
174
- }
175
-
176
- it 'lists blocks in a blob, including their status' do
177
- result = subject.list_blob_blocks container_name, blob_name
178
-
179
- committed = result[:committed]
180
- committed.length.must_equal 2
181
-
182
- expected_blocks = blocklist.slice(0..1).each
183
-
184
- committed.each { |block|
185
- block.name.must_equal expected_blocks.next[0]
186
- block.type.must_equal :committed
187
- block.size.must_equal 512
188
- }
189
-
190
- uncommitted = result[:uncommitted]
191
- uncommitted.length.must_equal 2
192
-
193
- expected_blocks = blocklist.slice(2..3).each
194
-
195
- uncommitted.each { |block|
196
- block.name.must_equal expected_blocks.next[0]
197
- block.type.must_equal :uncommitted
198
- block.size.must_equal 512
199
- }
200
- end
201
-
202
- describe 'when blocklist_type parameter is used' do
203
- it 'lists uncommitted blocks only if :uncommitted is passed' do
204
- result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :uncommitted }
205
-
206
- committed = result[:committed]
207
- committed.length.must_equal 0
208
-
209
- uncommitted = result[:uncommitted]
210
- uncommitted.length.must_equal 2
211
-
212
- expected_blocks = blocklist.slice(2..3).each
213
-
214
- uncommitted.each { |block|
215
- block.name.must_equal expected_blocks.next[0]
216
- block.type.must_equal :uncommitted
217
- block.size.must_equal 512
218
- }
219
- end
220
-
221
- it 'lists committed blocks only if :committed is passed' do
222
- result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :committed }
223
-
224
- committed = result[:committed]
225
- committed.length.must_equal 2
226
-
227
- expected_blocks = blocklist.slice(0..1).each
228
-
229
- committed.each { |block|
230
- block.name.must_equal expected_blocks.next[0]
231
- block.type.must_equal :committed
232
- block.size.must_equal 512
233
- }
234
-
235
- uncommitted = result[:uncommitted]
236
- uncommitted.length.must_equal 0
237
- end
238
-
239
- it 'lists committed and uncommitted blocks if :all is passed' do
240
- result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :all }
241
-
242
- committed = result[:committed]
243
- committed.length.must_equal 2
244
-
245
- expected_blocks = blocklist.slice(0..1).each
246
-
247
- committed.each { |block|
248
- block.name.must_equal expected_blocks.next[0]
249
- block.type.must_equal :committed
250
- block.size.must_equal 512
251
- }
252
-
253
- uncommitted = result[:uncommitted]
254
- uncommitted.length.must_equal 2
255
-
256
- expected_blocks = blocklist.slice(2..3).each
257
-
258
- uncommitted.each { |block|
259
- block.name.must_equal expected_blocks.next[0]
260
- block.type.must_equal :uncommitted
261
- block.size.must_equal 512
262
- }
263
- end
264
- end
265
-
266
- describe 'when snapshot parameter is used' do
267
- it 'lists blocks for the blob snapshot' do
268
- snapshot = subject.create_blob_snapshot container_name, blob_name
269
-
270
- result = subject.commit_blob_blocks container_name, blob_name, blocklist
271
- result.must_be_nil
272
- result = subject.list_blob_blocks container_name, blob_name
273
-
274
- committed = result[:committed]
275
- committed.length.must_equal 4
276
- expected_blocks = blocklist.each
277
-
278
- committed.each { |block|
279
- block.name.must_equal expected_blocks.next[0]
280
- block.type.must_equal :committed
281
- block.size.must_equal 512
282
- }
283
-
284
- result = subject.list_blob_blocks container_name, blob_name, { :blocklist_type => :all, :snapshot => snapshot }
285
-
286
- committed = result[:committed]
287
- committed.length.must_equal 2
288
-
289
- expected_blocks = blocklist.slice(0..1).each
290
-
291
- committed.each { |block|
292
- block.name.must_equal expected_blocks.next[0]
293
- block.type.must_equal :committed
294
- block.size.must_equal 512
295
- }
296
-
297
- # uncommitted blobs aren't copied in a snapshot.
298
- uncommitted = result[:uncommitted]
299
- uncommitted.length.must_equal 0
300
- end
301
- end
302
- end
303
- end