azure-plus 0.6.5
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.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +11 -0
- data/ChangeLog.txt +40 -0
- data/Gemfile +16 -0
- data/README.md +590 -0
- data/Rakefile +129 -0
- data/azure.gemspec +47 -0
- data/lib/azure.rb +52 -0
- data/lib/azure/base_management/affinity_group.rb +32 -0
- data/lib/azure/base_management/base_management_service.rb +238 -0
- data/lib/azure/base_management/location.rb +27 -0
- data/lib/azure/base_management/management_http_request.rb +244 -0
- data/lib/azure/base_management/serialization.rb +129 -0
- data/lib/azure/base_management/sql_management_http_request.rb +45 -0
- data/lib/azure/blob/blob.rb +32 -0
- data/lib/azure/blob/blob_service.rb +1424 -0
- data/lib/azure/blob/block.rb +31 -0
- data/lib/azure/blob/container.rb +32 -0
- data/lib/azure/blob/serialization.rb +285 -0
- data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
- data/lib/azure/cloud_service_management/cloud_service_management_service.rb +361 -0
- data/lib/azure/cloud_service_management/configuration_set.rb +28 -0
- data/lib/azure/cloud_service_management/deployment.rb +64 -0
- data/lib/azure/cloud_service_management/input_endpoint.rb +29 -0
- data/lib/azure/cloud_service_management/instance_endpoint.rb +31 -0
- data/lib/azure/cloud_service_management/persistent_vm_downtime.rb +29 -0
- data/lib/azure/cloud_service_management/role.rb +30 -0
- data/lib/azure/cloud_service_management/role_instance.rb +40 -0
- data/lib/azure/cloud_service_management/serialization.rb +329 -0
- data/lib/azure/cloud_service_management/virtual_ip.rb +29 -0
- data/lib/azure/core.rb +39 -0
- data/lib/azure/core/auth/authorizer.rb +36 -0
- data/lib/azure/core/auth/shared_key.rb +110 -0
- data/lib/azure/core/auth/shared_key_lite.rb +48 -0
- data/lib/azure/core/auth/signer.rb +48 -0
- data/lib/azure/core/configuration.rb +211 -0
- data/lib/azure/core/error.rb +22 -0
- data/lib/azure/core/filtered_service.rb +44 -0
- data/lib/azure/core/http/debug_filter.rb +36 -0
- data/lib/azure/core/http/http_error.rb +88 -0
- data/lib/azure/core/http/http_filter.rb +53 -0
- data/lib/azure/core/http/http_request.rb +159 -0
- data/lib/azure/core/http/http_response.rb +140 -0
- data/lib/azure/core/http/retry_policy.rb +74 -0
- data/lib/azure/core/http/signer_filter.rb +34 -0
- data/lib/azure/core/service.rb +63 -0
- data/lib/azure/core/signed_service.rb +43 -0
- data/lib/azure/core/utility.rb +190 -0
- data/lib/azure/queue/message.rb +30 -0
- data/lib/azure/queue/queue.rb +29 -0
- data/lib/azure/queue/queue_service.rb +568 -0
- data/lib/azure/queue/serialization.rb +106 -0
- data/lib/azure/service/access_policy.rb +26 -0
- data/lib/azure/service/enumeration_results.rb +21 -0
- data/lib/azure/service/logging.rb +32 -0
- data/lib/azure/service/metrics.rb +31 -0
- data/lib/azure/service/retention_policy.rb +25 -0
- data/lib/azure/service/serialization.rb +240 -0
- data/lib/azure/service/signed_identifier.rb +30 -0
- data/lib/azure/service/storage_service.rb +79 -0
- data/lib/azure/service/storage_service_properties.rb +32 -0
- data/lib/azure/service_bus/action.rb +21 -0
- data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
- data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
- data/lib/azure/service_bus/brokered_message.rb +124 -0
- data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
- data/lib/azure/service_bus/correlation_filter.rb +45 -0
- data/lib/azure/service_bus/empty_rule_action.rb +30 -0
- data/lib/azure/service_bus/false_filter.rb +38 -0
- data/lib/azure/service_bus/filter.rb +21 -0
- data/lib/azure/service_bus/interval.rb +104 -0
- data/lib/azure/service_bus/queue.rb +230 -0
- data/lib/azure/service_bus/resource.rb +109 -0
- data/lib/azure/service_bus/rule.rb +98 -0
- data/lib/azure/service_bus/rule_aspect.rb +34 -0
- data/lib/azure/service_bus/serialization.rb +160 -0
- data/lib/azure/service_bus/service_bus_service.rb +829 -0
- data/lib/azure/service_bus/sql_filter.rb +50 -0
- data/lib/azure/service_bus/sql_rule_action.rb +50 -0
- data/lib/azure/service_bus/subscription.rb +184 -0
- data/lib/azure/service_bus/topic.rb +187 -0
- data/lib/azure/service_bus/true_filter.rb +38 -0
- data/lib/azure/sql_database_management/serialization.rb +111 -0
- data/lib/azure/sql_database_management/sql_database.rb +31 -0
- data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
- data/lib/azure/storage_management/serialization.rb +184 -0
- data/lib/azure/storage_management/storage_account.rb +40 -0
- data/lib/azure/storage_management/storage_management_service.rb +166 -0
- data/lib/azure/table/auth/shared_key.rb +92 -0
- data/lib/azure/table/auth/shared_key_lite.rb +44 -0
- data/lib/azure/table/batch.rb +330 -0
- data/lib/azure/table/batch_response.rb +118 -0
- data/lib/azure/table/edmtype.rb +127 -0
- data/lib/azure/table/entity.rb +31 -0
- data/lib/azure/table/guid.rb +24 -0
- data/lib/azure/table/query.rb +112 -0
- data/lib/azure/table/serialization.rb +108 -0
- data/lib/azure/table/table_service.rb +560 -0
- data/lib/azure/version.rb +31 -0
- data/lib/azure/virtual_machine_image_management/serialization.rb +51 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +66 -0
- data/lib/azure/virtual_machine_management/serialization.rb +436 -0
- data/lib/azure/virtual_machine_management/virtual_machine.rb +42 -0
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +549 -0
- data/lib/azure/virtual_network_management/serialization.rb +186 -0
- data/lib/azure/virtual_network_management/virtual_network.rb +36 -0
- data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
- data/test/fixtures/32px-fulls-black.jpg +0 -0
- data/test/fixtures/affinity_group.xml +33 -0
- data/test/fixtures/all_containers.xml +20 -0
- data/test/fixtures/all_tables.xml +22 -0
- data/test/fixtures/certificate.pem +21 -0
- data/test/fixtures/container_acl.xml +11 -0
- data/test/fixtures/create_sql_database_server.xml +2 -0
- data/test/fixtures/create_storage_desc_error.xml +5 -0
- data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
- data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
- data/test/fixtures/create_storage_full_error.xml +6 -0
- data/test/fixtures/create_storage_label_error.xml +5 -0
- data/test/fixtures/create_storage_location_error.xml +5 -0
- data/test/fixtures/create_storage_name_error.xml +6 -0
- data/test/fixtures/create_table_response_entry.xml +15 -0
- data/test/fixtures/delete_storage_container_error.xml +5 -0
- data/test/fixtures/delete_storage_error.xml +5 -0
- data/test/fixtures/deployment_error.xml +5 -0
- data/test/fixtures/empty_xml_file +0 -0
- data/test/fixtures/get_deployment.xml +94 -0
- data/test/fixtures/get_deployment_existing.xml +94 -0
- data/test/fixtures/get_deployment_missing.xml +5 -0
- data/test/fixtures/get_storage_account_error.xml +5 -0
- data/test/fixtures/get_storage_account_properties.xml +32 -0
- data/test/fixtures/get_storage_account_properties_new.xml +32 -0
- data/test/fixtures/http_error.xml +5 -0
- data/test/fixtures/insert_entity_response_entry.xml +25 -0
- data/test/fixtures/list_affinity_groups.xml +22 -0
- data/test/fixtures/list_blobs.xml +121 -0
- data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
- data/test/fixtures/list_blocks_all.xml +23 -0
- data/test/fixtures/list_blocks_committed.xml +13 -0
- data/test/fixtures/list_cloud_services.xml +39 -0
- data/test/fixtures/list_containers.xml +38 -0
- data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
- data/test/fixtures/list_images.xml +110 -0
- data/test/fixtures/list_locations.xml +62 -0
- data/test/fixtures/list_page_ranges.xml +11 -0
- data/test/fixtures/list_sql_database.xml +36 -0
- data/test/fixtures/list_sql_server_firewall.xml +23 -0
- data/test/fixtures/list_storage_account_single.xml +25 -0
- data/test/fixtures/list_storage_accounts.xml +46 -0
- data/test/fixtures/list_virtual_networks.xml +92 -0
- data/test/fixtures/logging.xml +11 -0
- data/test/fixtures/management_certificate.pem +55 -0
- data/test/fixtures/messages.xml +12 -0
- data/test/fixtures/metrics.xml +10 -0
- data/test/fixtures/privatekey.key +28 -0
- data/test/fixtures/query_entities_empty_response.xml +7 -0
- data/test/fixtures/query_entities_response.xml +45 -0
- data/test/fixtures/queue_service_properties.xml +22 -0
- data/test/fixtures/queue_service_properties_original.xml +19 -0
- data/test/fixtures/queues.xml +16 -0
- data/test/fixtures/retention_policy.xml +5 -0
- data/test/fixtures/sb_default_create_queue_response.xml +23 -0
- data/test/fixtures/sb_default_create_topic_response.xml +18 -0
- data/test/fixtures/sb_get_access_token_response.txt +1 -0
- data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
- data/test/fixtures/storage_service_properties.xml +23 -0
- data/test/fixtures/update_storage_account.xml +16 -0
- data/test/fixtures/update_storage_error.xml +5 -0
- data/test/fixtures/updated_storage_accounts.xml +53 -0
- data/test/fixtures/virtual_machine.xml +113 -0
- data/test/fixtures/windows_virtual_machine.xml +106 -0
- data/test/integration/affinity_group/Affinity_test.rb +55 -0
- data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
- data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
- data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
- data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
- data/test/integration/blob/blob_gb18030_test.rb +199 -0
- data/test/integration/blob/blob_metadata_test.rb +75 -0
- data/test/integration/blob/blob_pages_test.rb +119 -0
- data/test/integration/blob/blob_properties_test.rb +77 -0
- data/test/integration/blob/block_blob_test.rb +254 -0
- data/test/integration/blob/container/container_acl_test.rb +69 -0
- data/test/integration/blob/container/container_metadata_test.rb +50 -0
- data/test/integration/blob/container/create_container_test.rb +60 -0
- data/test/integration/blob/container/delete_container_test.rb +39 -0
- data/test/integration/blob/container/get_container_properties_test.rb +48 -0
- data/test/integration/blob/container/list_containers_test.rb +79 -0
- data/test/integration/blob/container/root_container_test.rb +54 -0
- data/test/integration/blob/copy_blob_test.rb +113 -0
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
- data/test/integration/blob/create_page_blob_test.rb +83 -0
- data/test/integration/blob/delete_blob_test.rb +159 -0
- data/test/integration/blob/get_blob_test.rb +65 -0
- data/test/integration/blob/informative_errors_test.rb +39 -0
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
- data/test/integration/blob/lease/break_lease_test.rb +40 -0
- data/test/integration/blob/lease/release_lease_test.rb +40 -0
- data/test/integration/blob/lease/renew_lease_test.rb +42 -0
- data/test/integration/blob/list_blobs_test.rb +113 -0
- data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
- data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
- data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
- data/test/integration/database/create_sql_server_test.rb +53 -0
- data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
- data/test/integration/database/delete_sql_server_test.rb +58 -0
- data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
- data/test/integration/database/list_sql_servers_test.rb +44 -0
- data/test/integration/database/reset_password_sql_server_test.rb +55 -0
- data/test/integration/location/Location_List_test.rb +39 -0
- data/test/integration/queue/clear_messages_test.rb +42 -0
- data/test/integration/queue/create_message_test.rb +75 -0
- data/test/integration/queue/create_queue_test.rb +50 -0
- data/test/integration/queue/delete_message_test.rb +67 -0
- data/test/integration/queue/delete_queue_test.rb +45 -0
- data/test/integration/queue/informative_errors_test.rb +42 -0
- data/test/integration/queue/list_messages_encoded_test.rb +79 -0
- data/test/integration/queue/list_messages_test.rb +79 -0
- data/test/integration/queue/list_queues_test.rb +44 -0
- data/test/integration/queue/peek_messages_test.rb +59 -0
- data/test/integration/queue/queue_gb18030_test.rb +131 -0
- data/test/integration/queue/queue_metadata_test.rb +40 -0
- data/test/integration/queue/update_message_test.rb +74 -0
- data/test/integration/service_bus/informative_errors_test.rb +37 -0
- data/test/integration/service_bus/queues_scenario_test.rb +200 -0
- data/test/integration/service_bus/queues_test.rb +266 -0
- data/test/integration/service_bus/rules_test.rb +145 -0
- data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
- data/test/integration/service_bus/scenario_test.rb +101 -0
- data/test/integration/service_bus/subscriptions_test.rb +211 -0
- data/test/integration/service_bus/topics_scenario_test.rb +406 -0
- data/test/integration/service_bus/topics_test.rb +129 -0
- data/test/integration/storage_management/storage_management_test.rb +160 -0
- data/test/integration/table/create_table_test.rb +36 -0
- data/test/integration/table/delete_entity_batch_test.rb +107 -0
- data/test/integration/table/delete_entity_test.rb +94 -0
- data/test/integration/table/delete_table_test.rb +40 -0
- data/test/integration/table/get_table_test.rb +37 -0
- data/test/integration/table/informative_errors_test.rb +39 -0
- data/test/integration/table/insert_entity_batch_test.rb +100 -0
- data/test/integration/table/insert_entity_test.rb +88 -0
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
- data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
- data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
- data/test/integration/table/merge_entity_batch_test.rb +128 -0
- data/test/integration/table/merge_entity_test.rb +113 -0
- data/test/integration/table/query_entities_test.rb +195 -0
- data/test/integration/table/query_tables_test.rb +43 -0
- data/test/integration/table/query_test.rb +251 -0
- data/test/integration/table/table_acl_test.rb +52 -0
- data/test/integration/table/table_gb18030_test.rb +355 -0
- data/test/integration/table/update_entity_batch_test.rb +149 -0
- data/test/integration/table/update_entity_test.rb +131 -0
- data/test/integration/test_helper.rb +42 -0
- data/test/integration/vm/VM_Create_test.rb +260 -0
- data/test/integration/vm/VM_Delete_test.rb +55 -0
- data/test/integration/vm/VM_Operations_test.rb +173 -0
- data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
- data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
- data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
- data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
- data/test/support/env.rb +19 -0
- data/test/support/fixtures.rb +36 -0
- data/test/support/name_generator.rb +160 -0
- data/test/support/stubs.rb +42 -0
- data/test/support/virtual_machine_name_generator.rb +102 -0
- data/test/support/virtual_network_helper.rb +73 -0
- data/test/test_helper.rb +53 -0
- data/test/unit/affinity_group/affinity_group_test.rb +192 -0
- data/test/unit/affinity_group/serialization_test.rb +88 -0
- data/test/unit/base_management/location_test.rb +57 -0
- data/test/unit/blob/blob_service_test.rb +1947 -0
- data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +276 -0
- data/test/unit/cloud_service_management/serialization_test.rb +169 -0
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
- data/test/unit/core/auth/shared_key_test.rb +58 -0
- data/test/unit/core/auth/signer_test.rb +30 -0
- data/test/unit/core/http/http_error_test.rb +57 -0
- data/test/unit/core/http/http_request_test.rb +66 -0
- data/test/unit/core/http/http_response_test.rb +45 -0
- data/test/unit/core/http/retry_policy_test.rb +23 -0
- data/test/unit/database/serialization_test.rb +97 -0
- data/test/unit/database/sql_database_server_service_test.rb +288 -0
- data/test/unit/service/serialization_test.rb +502 -0
- data/test/unit/service/storage_service_test.rb +291 -0
- data/test/unit/storage_management/serialization_test.rb +232 -0
- data/test/unit/storage_management/storage_management_service_test.rb +261 -0
- data/test/unit/table/edmtype_test.rb +108 -0
- data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
- data/test/unit/virtual_machine_management/serialization_test.rb +247 -0
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
- data/test/unit/vnet/serialization_test.rb +187 -0
- data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
- metadata +470 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
require "test_helper"
|
|
16
|
+
|
|
17
|
+
describe Azure::StorageManagementService do
|
|
18
|
+
|
|
19
|
+
subject { Azure::StorageManagementService.new }
|
|
20
|
+
let(:request_path) {'/services/storageservices'}
|
|
21
|
+
let(:storage_accounts_xml) { Fixtures["list_storage_accounts"] }
|
|
22
|
+
let(:one_storage_account_xml) { Fixtures['list_storage_account_single']}
|
|
23
|
+
let(:method) { :get }
|
|
24
|
+
let(:mock_request){ mock() }
|
|
25
|
+
|
|
26
|
+
let(:response) {
|
|
27
|
+
response = mock()
|
|
28
|
+
response.stubs(:body).returns(storage_accounts_xml)
|
|
29
|
+
response
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let(:single_response) {
|
|
33
|
+
single_response = mock()
|
|
34
|
+
single_response.stubs(:body).returns(one_storage_account_xml)
|
|
35
|
+
single_response
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let(:response_body) {Nokogiri::XML response.body}
|
|
39
|
+
let(:single_response_body) { Nokogiri::XML single_response.body }
|
|
40
|
+
|
|
41
|
+
before{
|
|
42
|
+
Loggerx.expects(:puts).returns(nil).at_least(0)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
describe "#list_storage_accounts" do
|
|
46
|
+
before {
|
|
47
|
+
ManagementHttpRequest.stubs(:new).with(method, request_path, nil).returns(mock_request)
|
|
48
|
+
mock_request.expects(:call).returns(response_body)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
it "assembles a URI for the request" do
|
|
52
|
+
subject.list_storage_accounts
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "sets the properties of the storage accounts" do
|
|
56
|
+
storage_account = subject.list_storage_accounts.first
|
|
57
|
+
storage_account.name.must_equal 'storage1'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "returns a list of storage accounts for the subscription" do
|
|
61
|
+
results = subject.list_storage_accounts
|
|
62
|
+
results.must_be_kind_of Array
|
|
63
|
+
results.length.must_equal 2
|
|
64
|
+
results.first.must_be_kind_of Azure::StorageManagement::StorageAccount
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#list_storage_accounts_single" do
|
|
69
|
+
before {
|
|
70
|
+
ManagementHttpRequest.stubs(:new).with(
|
|
71
|
+
method, request_path, nil
|
|
72
|
+
).returns(mock_request)
|
|
73
|
+
mock_request.expects(:call).returns(single_response_body)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
it "returns an array even if single account exists" do
|
|
77
|
+
results = subject.list_storage_accounts
|
|
78
|
+
results.must_be_kind_of Array
|
|
79
|
+
results.length.must_equal 1
|
|
80
|
+
results.first.must_be_kind_of Azure::StorageManagement::StorageAccount
|
|
81
|
+
results.first.name.must_equal 'storage1'
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe "#get_storage_account" do
|
|
86
|
+
before {
|
|
87
|
+
ManagementHttpRequest.stubs(:new).with(method, request_path, nil).returns(mock_request)
|
|
88
|
+
mock_request.expects(:call).returns(response_body)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
it "assembles a URI for the request" do
|
|
92
|
+
subject.get_storage_account 'storage1'
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "returns true if found storage account with given name" do
|
|
96
|
+
result = subject.get_storage_account 'storage1'
|
|
97
|
+
result.must_equal true
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "returns false if storage account with given name doesn't exists" do
|
|
101
|
+
result = subject.get_storage_account 'storage3'
|
|
102
|
+
result.must_equal false
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe "#create_storage_account" do
|
|
107
|
+
let(:options) {
|
|
108
|
+
{
|
|
109
|
+
location: 'East Asia',
|
|
110
|
+
description: 'Test Storage Description'
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
it 'Checks if name is provided' do
|
|
115
|
+
exception = assert_raises(RuntimeError) do
|
|
116
|
+
subject.create_storage_account(options)
|
|
117
|
+
end
|
|
118
|
+
assert_match('Name not specified', exception.message)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it 'Checks if name is not nil' do
|
|
122
|
+
exception = assert_raises(RuntimeError) do
|
|
123
|
+
subject.create_storage_account('', options)
|
|
124
|
+
end
|
|
125
|
+
assert_match('Name not specified', exception.message)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it 'Checks if name is not empty' do
|
|
129
|
+
exception = assert_raises(RuntimeError) do
|
|
130
|
+
subject.create_storage_account('', options)
|
|
131
|
+
end
|
|
132
|
+
assert_match('Name not specified', exception.message)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "Create storage account return message if storage account exists of given name." do
|
|
136
|
+
ManagementHttpRequest.any_instance.expects(:call).returns response_body
|
|
137
|
+
msg = subject.create_storage_account 'storage1'
|
|
138
|
+
assert_match(/^Storage Account storage1 already exist.*/, msg)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "Create storage account if storage account doesn't exists of given name." do
|
|
142
|
+
Azure::StorageManagementService.any_instance.stubs(:get_storage_account).with('storage3').returns(false)
|
|
143
|
+
ManagementHttpRequest.any_instance.expects(:call).returns nil
|
|
144
|
+
subject.create_storage_account 'storage3'
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
describe "#update_storage_account" do
|
|
150
|
+
let(:updated_accounts_xml) { Fixtures["updated_storage_accounts"] }
|
|
151
|
+
let(:no_options_specified) { 'No options specified' }
|
|
152
|
+
let(:update_storage_account_req) { Fixtures["update_storage_account"] }
|
|
153
|
+
|
|
154
|
+
let(:updated_storage_account_mock_request){ mock() }
|
|
155
|
+
let(:updated_storage_account_response) {
|
|
156
|
+
updated_storage_account_response = mock()
|
|
157
|
+
updated_storage_account_response.stubs(:body).returns(updated_accounts_xml)
|
|
158
|
+
updated_storage_account_response
|
|
159
|
+
}
|
|
160
|
+
let(:updated_storage_account_response_body) {Nokogiri::XML updated_storage_account_response.body}
|
|
161
|
+
|
|
162
|
+
let(:update_request) {
|
|
163
|
+
update_request = mock()
|
|
164
|
+
update_request.stubs(:body).returns('')
|
|
165
|
+
update_request
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
before {
|
|
169
|
+
ManagementHttpRequest.stubs(:new).with(method, request_path, nil).returns(mock_request)
|
|
170
|
+
mock_request.expects(:call).returns(response_body)
|
|
171
|
+
|
|
172
|
+
Azure::StorageManagement::Serialization.stubs(:update_storage_account).returns(update_storage_account_req)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
let(:options) { {
|
|
176
|
+
description: 'Test Description',
|
|
177
|
+
label: 'Test Label',
|
|
178
|
+
geo_replication_enabled: false,
|
|
179
|
+
extended_properties: {
|
|
180
|
+
prop_1_name: 'prop_1_value',
|
|
181
|
+
prop_2_name: 'prop_2_value'
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
it "checks if nil options is provided" do
|
|
187
|
+
exception = assert_raises RuntimeError do
|
|
188
|
+
subject.update_storage_account 'storage2', nil
|
|
189
|
+
end
|
|
190
|
+
assert_match no_options_specified, exception.message
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "checks if empty options is provided" do
|
|
194
|
+
exception = assert_raises RuntimeError do
|
|
195
|
+
subject.update_storage_account 'storage2', Hash.new
|
|
196
|
+
end
|
|
197
|
+
assert_match no_options_specified, exception.message
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
it "checks if account exists before updating" do
|
|
201
|
+
ret_val = subject.update_storage_account 'storage3', Hash.new
|
|
202
|
+
ret_val.must_equal "Storage Account 'storage3' does not exist. Skipped..."
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
it "updates the specified account" do
|
|
206
|
+
ManagementHttpRequest.stubs(:new).with(:put, "#{request_path}/storage2", update_storage_account_req).returns(update_request)
|
|
207
|
+
update_request.expects(:call).returns('')
|
|
208
|
+
|
|
209
|
+
subject.update_storage_account 'storage2', options
|
|
210
|
+
|
|
211
|
+
ManagementHttpRequest.stubs(:new).with(method, request_path, nil).returns(updated_storage_account_mock_request)
|
|
212
|
+
updated_storage_account_mock_request.expects(:call).returns(updated_storage_account_response_body)
|
|
213
|
+
|
|
214
|
+
accounts = subject.list_storage_accounts
|
|
215
|
+
|
|
216
|
+
accounts.each { |account|
|
|
217
|
+
next unless account.name == 'storage2'
|
|
218
|
+
|
|
219
|
+
account.name.must_equal 'storage2'
|
|
220
|
+
account.label.must_equal options[:label]
|
|
221
|
+
account.geo_replication_enabled.must_equal "#{options[:geo_replication_enabled]}"
|
|
222
|
+
|
|
223
|
+
account.extended_properties.each { |prop|
|
|
224
|
+
prop[:value].must_equal "#{options[:extended_properties][:"#{prop[:name]}"]}"
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
describe '#get_storage_account_properties' do
|
|
231
|
+
let(:account_name) { 'storage2' }
|
|
232
|
+
let(:label) { 'ValidLabel' }
|
|
233
|
+
let(:request_path) { "/services/storageservices/#{account_name}" }
|
|
234
|
+
let(:account_xml) { Fixtures['get_storage_account_properties'] }
|
|
235
|
+
|
|
236
|
+
let(:get_account_mock_request) { mock() }
|
|
237
|
+
let(:get_account_response) {
|
|
238
|
+
get_account_response = mock()
|
|
239
|
+
get_account_response.stubs(:body).returns(account_xml)
|
|
240
|
+
get_account_response
|
|
241
|
+
}
|
|
242
|
+
let(:get_account_response_body) {
|
|
243
|
+
Nokogiri::XML(get_account_response.body)
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
before {
|
|
247
|
+
ManagementHttpRequest.stubs(:new).with(
|
|
248
|
+
:get, request_path, nil
|
|
249
|
+
).returns(get_account_mock_request)
|
|
250
|
+
get_account_mock_request.expects(:call).returns(
|
|
251
|
+
get_account_response_body
|
|
252
|
+
)
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
it 'returns the label as a Base64 decoded string' do
|
|
256
|
+
account = subject.get_storage_account_properties(account_name)
|
|
257
|
+
account.label.must_be_kind_of(String)
|
|
258
|
+
account.label.must_equal(label)
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
require "test_helper"
|
|
16
|
+
require "azure/table/edmtype"
|
|
17
|
+
|
|
18
|
+
require "azure/table/guid"
|
|
19
|
+
|
|
20
|
+
describe Azure::Table::EdmType do
|
|
21
|
+
describe "#serialize_query_value" do
|
|
22
|
+
it "correctly serializes int64 query values" do
|
|
23
|
+
value = 2**128 + 1256231
|
|
24
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
25
|
+
serializedValue.must_equal value.to_s + "L"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "correctly serializes int32 query values" do
|
|
29
|
+
value = 2
|
|
30
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
31
|
+
serializedValue.must_equal "2"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "correctly serializes datetime query values" do
|
|
35
|
+
value = DateTime.new(2001,2,3,4,5,6)
|
|
36
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
37
|
+
serializedValue.must_equal "datetime'2001-02-03T04:05:06+00:00'"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "correctly serializes guid query values" do
|
|
41
|
+
value = Azure::Table::GUID.new("81425519-6394-43e4-ac6e-28d91f5c3921")
|
|
42
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
43
|
+
serializedValue.must_equal "guid'81425519-6394-43e4-ac6e-28d91f5c3921'"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "correctly serializes float query values" do
|
|
47
|
+
value = 1.2
|
|
48
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
49
|
+
serializedValue.must_equal "1.2"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "correctly serializes string query values" do
|
|
53
|
+
value = "string"
|
|
54
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
55
|
+
serializedValue.must_equal "string"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "correctly serializes binary query values" do
|
|
59
|
+
value = "1".force_encoding("BINARY")
|
|
60
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
|
61
|
+
serializedValue.must_equal "X'31'"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
describe "#unserialize_query_value" do
|
|
66
|
+
it "correctly unserializes int64 query values" do
|
|
67
|
+
value = "340282366920938463463374607431769467687"
|
|
68
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Int64")
|
|
69
|
+
unserializedValue.must_equal (2**128 + 1256231)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "correctly unserializes int32 query values" do
|
|
73
|
+
value = "2"
|
|
74
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Int32")
|
|
75
|
+
unserializedValue.must_equal 2
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "correctly unserializes datetime query values" do
|
|
79
|
+
value = "2001-02-03T04:05:06+00:00"
|
|
80
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.DateTime")
|
|
81
|
+
unserializedValue.must_equal Time.new(2001, 2, 3, 4, 5, 6, "+00:00")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "correctly unserializes guid query values" do
|
|
85
|
+
value = "81425519-6394-43e4-ac6e-28d91f5c3921"
|
|
86
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Guid")
|
|
87
|
+
unserializedValue.must_equal Azure::Table::GUID.new("81425519-6394-43e4-ac6e-28d91f5c3921")
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "correctly unserializes float query values" do
|
|
91
|
+
value = "1.2"
|
|
92
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Double")
|
|
93
|
+
unserializedValue.must_equal 1.2
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "correctly unserializes string query values" do
|
|
97
|
+
value = "string"
|
|
98
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.String")
|
|
99
|
+
unserializedValue.must_equal "string"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "correctly unserializes binary query values" do
|
|
103
|
+
value = "MTIzNDU=".force_encoding("BINARY")
|
|
104
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Binary")
|
|
105
|
+
unserializedValue.must_equal "12345"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
require 'test_helper'
|
|
16
|
+
|
|
17
|
+
describe Azure::VirtualMachineImageManagement::Serialization do
|
|
18
|
+
subject { Azure::VirtualMachineImageManagement::Serialization }
|
|
19
|
+
|
|
20
|
+
let(:virtual_machine_images_from_xml) { Fixtures['list_images'] }
|
|
21
|
+
|
|
22
|
+
describe '#virtual_machine_images_from_xml' do
|
|
23
|
+
|
|
24
|
+
it 'accepts an XML string' do
|
|
25
|
+
subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'returns an Array of VirtualMachineImageService instances' do
|
|
29
|
+
results = subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
|
|
30
|
+
results.must_be_kind_of Array
|
|
31
|
+
results[0].must_be_kind_of Azure::VirtualMachineImageManagement::VirtualMachineImage
|
|
32
|
+
results.count.must_equal 12
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
require 'test_helper'
|
|
16
|
+
|
|
17
|
+
describe Azure::VirtualMachineImageManagementService do
|
|
18
|
+
|
|
19
|
+
subject { Azure::VirtualMachineImageManagementService.new }
|
|
20
|
+
|
|
21
|
+
let(:request_path) { '/services/images' }
|
|
22
|
+
let(:images_xml) { Fixtures['list_images'] }
|
|
23
|
+
let(:method) { :get }
|
|
24
|
+
let(:mock_request) { mock }
|
|
25
|
+
let(:response) do
|
|
26
|
+
response = mock
|
|
27
|
+
response.stubs(:body).returns(images_xml)
|
|
28
|
+
response
|
|
29
|
+
end
|
|
30
|
+
let(:response_body) { Nokogiri::XML response.body }
|
|
31
|
+
|
|
32
|
+
before do
|
|
33
|
+
Loggerx.expects(:puts).returns(nil).at_least(0)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe '#list_virtual_machine_images' do
|
|
37
|
+
|
|
38
|
+
before do
|
|
39
|
+
ManagementHttpRequest.stubs(:new).with(
|
|
40
|
+
method,
|
|
41
|
+
request_path,
|
|
42
|
+
nil
|
|
43
|
+
).returns(mock_request)
|
|
44
|
+
mock_request.expects(:call).returns(response_body)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'assembles a URI for the request' do
|
|
48
|
+
subject.list_virtual_machine_images
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'sets the properties of the virtual machine images' do
|
|
52
|
+
virtual_machine_image = subject.list_virtual_machine_images.first
|
|
53
|
+
virtual_machine_image.name.must_equal 'RightImage-CentOS-6.2-x64-v5.8.8.1'
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'returns a list of virtual machine images from server' do
|
|
57
|
+
results = subject.list_virtual_machine_images
|
|
58
|
+
results.must_be_kind_of Array
|
|
59
|
+
results.length.must_equal 12
|
|
60
|
+
image_klass = Azure::VirtualMachineImageManagement::VirtualMachineImage
|
|
61
|
+
results.first.must_be_kind_of image_klass
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|