You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2013/03/26 18:58:15 UTC
[29/30] git commit: Client: Complete revamp of deltacloud-client unit
tests
Client: Complete revamp of deltacloud-client unit tests
- Use minitest instead of rspec
- Use VCR by default for tests (rake test_live override this)
- Coverage >90%
Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/3d865944
Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/3d865944
Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/3d865944
Branch: refs/heads/master
Commit: 3d865944ac1c8434c78e7b0efd62df57c2251ce3
Parents: 71afec5
Author: Michal Fojtik <mf...@redhat.com>
Authored: Thu Mar 7 13:47:37 2013 +0100
Committer: Michal fojtik <mf...@redhat.com>
Committed: Tue Mar 26 15:21:35 2013 +0100
----------------------------------------------------------------------
client/tests/buckets_test.rb | 141 ----------
client/tests/client/client_test.rb | 51 ++++
client/tests/client/connection_test.rb | 77 ++++++
client/tests/client_test.rb | 59 -----
client/tests/content_negotiation_test.rb | 127 ---------
client/tests/core_ext/element_test.rb | 40 +++
client/tests/core_ext/fixnum_test.rb | 35 +++
client/tests/core_ext/nil.rb | 27 ++
client/tests/core_ext/string_test.rb | 47 ++++
client/tests/errors_test.rb | 57 ----
client/tests/hardware_profiles_test.rb | 75 ------
client/tests/helpers/model_test.rb | 33 +++
client/tests/helpers/xml_test.rb | 56 ++++
client/tests/images_test.rb | 102 --------
client/tests/instance_states_test.rb | 66 -----
client/tests/instances_test.rb | 203 ---------------
client/tests/keys_test.rb | 81 ------
client/tests/methods/address_test.rb | 64 +++++
client/tests/methods/api_test.rb | 97 +++++++
.../tests/methods/backward_compatibility_test.rb | 87 ++++++
client/tests/methods/blob_test.rb | 64 +++++
client/tests/methods/bucket_test.rb | 62 +++++
client/tests/methods/driver_test.rb | 48 ++++
client/tests/methods/firewall_test.rb | 84 ++++++
client/tests/methods/hardware_profile_test.rb | 53 ++++
client/tests/methods/image_test.rb | 64 +++++
client/tests/methods/instance_state_test.rb | 43 +++
client/tests/methods/instance_test.rb | 120 +++++++++
client/tests/methods/key_test.rb | 63 +++++
client/tests/methods/realm_test.rb | 50 ++++
client/tests/methods/storage_snapshot_test.rb | 53 ++++
client/tests/methods/storage_volume_test.rb | 81 ++++++
client/tests/models/blob_test.rb | 40 +++
client/tests/models/bucket_test.rb | 37 +++
client/tests/models/driver_test.rb | 42 +++
client/tests/models/hardware_profile_test.rb | 80 ++++++
client/tests/models/image_test.rb | 63 +++++
client/tests/models/storage_volume_test.rb | 52 ++++
client/tests/realms_test.rb | 64 -----
client/tests/storage_snapshot_test.rb | 76 ------
client/tests/storage_volume_test.rb | 86 ------
client/tests/test_helper.rb | 70 +++++-
42 files changed, 1772 insertions(+), 1148 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/buckets_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/buckets_test.rb b/client/tests/buckets_test.rb
deleted file mode 100644
index 5ef6969..0000000
--- a/client/tests/buckets_test.rb
+++ /dev/null
@@ -1,141 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-describe "Buckets" do
-
- it "should allow retrieval of all buckets" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- buckets = client.buckets
- buckets.wont_be_empty
- buckets.each do |bucket|
- bucket.uri.wont_be_nil
- bucket.uri.must_be_kind_of String
- bucket.name.wont_be_nil
- bucket.name.must_be_kind_of String
- end
- end
- end
-
- it "should allow retrieval of a named bucket" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- bucket = client.bucket("bucket1")
- bucket.wont_be_nil
- bucket.uri.must_equal API_URL + "/buckets/bucket1"
- bucket.size.must_equal 3.0
- bucket.name.wont_be_nil
- bucket.name.must_be_kind_of String
- blob_list = bucket.blob_list.split(", ")
- blob_list.size.must_equal bucket.size.to_i
- end
- end
-
-end
-
-describe "Operations on buckets" do
-
- it "should allow creation of a new bucket" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- new_bucket = client.create_bucket({'id' => "my_new_bucket"})
- new_bucket.wont_be_nil
- new_bucket.uri.must_equal API_URL + "/buckets/my_new_bucket"
- new_bucket.name.wont_be_nil
- new_bucket.name.must_be_kind_of String
- new_bucket.name.must_equal "my_new_bucket"
- end
- end
-
- it "should allow deletion of an existing bucket" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- new_bucket = client.bucket("my_new_bucket")
- new_bucket.wont_be_nil
- new_bucket.name.must_equal "my_new_bucket"
- client.destroy_bucket('id' => "my_new_bucket").must_be_nil
- end
- end
-
- it "should throw error if you delete a non existing bucket" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda {
- client.destroy_bucket({'id' => "i_dont_exist"}).must_be_nil
- }.must_raise DeltaCloud::HTTPError::DeltacloudError
- end
- end
-
-end
-
-describe "Blobs" do
-
- it "should allow retrieval of a bucket's blobs" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- bucket = client.bucket("bucket1")
- bucket.wont_be_nil
- blob_list = bucket.blob_list.split(", ")
- blob_list.size.must_equal bucket.size.to_i
- blob_list.each do |b_id|
- blob = client.blob("bucket" => bucket.name, :id => b_id)
- blob.bucket.wont_be_nil
- blob.bucket.must_be_kind_of String
- blob.bucket.must_equal bucket.name
- blob.content_length.wont_be_nil
- blob.content_length.must_be_kind_of Float
- blob.content_length.must_be :'>=', 0
- blob_data = client.blob_data("bucket" => bucket.name, :id => b_id)
- blob_data.size.to_f.must_equal blob.content_length
- blob.last_modified.wont_be_nil
- end
- end
- end
-
-end
-
-describe "Operations on blobs" do
-
- it "should successfully create a new blob" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- blob_data = File.new("./blob_data_file", "w+")
- blob_data.write("this is some blob data \n")
- blob_data.rewind
- some_new_blob = client.create_blob(
- :id => "some_new_blob",
- 'bucket' => "bucket1",
- 'file_path' => blob_data.path
- )
- some_new_blob.wont_be_nil
- some_new_blob.content_length.wont_be_nil
- some_new_blob.content_length.must_equal 24.0
- File.delete(blob_data.path)
- end
- end
-
- it "should allow deletion of an existing blob" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- client.destroy_blob(:id=>"some_new_blob", 'bucket'=>"bucket1").must_be_nil
- end
- end
-
- it "should throw error if you delete a non existing blob" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda {
- client.destroy_blob(:id=>"no_such_blob", 'bucket'=>"bucket1").must_be_nil
- }.must_raise DeltaCloud::HTTPError::DeltacloudError
- end
- end
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/client/client_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/client/client_test.rb b/client/tests/client/client_test.rb
new file mode 100644
index 0000000..1502acc
--- /dev/null
+++ b/client/tests/client/client_test.rb
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client do
+
+ before do
+ VCR.insert_cassette(__name__)
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'support #VERSION' do
+ Deltacloud::Client::VERSION.wont_be_nil
+ end
+
+ it 'support #Client' do
+ Deltacloud.must_respond_to 'Client'
+ end
+
+ it 'support to change driver with #Client' do
+ client = Deltacloud::Client(
+ DELTACLOUD_URL, DELTACLOUD_USER, DELTACLOUD_PASSWORD,
+ :driver => :ec2
+ )
+ client.request_driver.must_equal :ec2
+ client.current_driver.must_equal 'ec2'
+ end
+
+ it 'support to test of valid DC connection' do
+ Deltacloud::Client.must_respond_to 'valid_connection?'
+ Deltacloud::Client.valid_connection?(DELTACLOUD_URL).must_equal true
+ Deltacloud::Client.valid_connection?('http://unknown:9999').must_equal false
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/client/connection_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/client/connection_test.rb b/client/tests/client/connection_test.rb
new file mode 100644
index 0000000..6833ed1
--- /dev/null
+++ b/client/tests/client/connection_test.rb
@@ -0,0 +1,77 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Connection do
+
+ before do
+ VCR.insert_cassette(__name__)
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'connects to Deltacloud API' do
+ client = new_client
+ client.connection.wont_be_nil
+ client.connection.must_be_kind_of Faraday::Connection
+ client.version.wont_be_nil
+ end
+
+ it 'supports #version' do
+ client = new_client
+ client.must_respond_to :version
+ client.version.wont_be_nil
+ client.version.wont_be_empty
+ end
+
+ it 'caches the API entrypoint' do
+ client = new_client
+ client.cache_entrypoint!.wont_be_nil
+ end
+
+ it 'supports #valid_credentials?' do
+ client = new_client
+ client.must_respond_to :"valid_credentials?"
+ client.valid_credentials?.must_equal true
+ client = Deltacloud::Client(DELTACLOUD_URL, 'foo', 'bar')
+ client.valid_credentials?.must_equal false
+ end
+
+ it 'supports switching drivers per instance' do
+ client = new_client
+ client.current_driver.must_equal 'mock'
+ ec2_client = client.use(:ec2, 'foo', 'bar')
+ ec2_client.current_driver.must_equal 'ec2'
+ client.current_driver.must_equal 'mock'
+ end
+
+ it 'supports switching providers per instance' do
+ client = new_client
+ ec2_client = client.use(:ec2, 'foo', 'bar', 'eu-west-1')
+ ec2_client.current_provider.must_equal 'eu-west-1'
+ ec2_client = client.use(:ec2, 'foo', 'bar', 'us-east-1')
+ ec2_client.current_provider.must_equal 'us-east-1'
+ end
+
+ it 'support switching provider without credentials' do
+ client = new_client.use(:ec2, 'foo', 'bar', 'eu-west-1')
+ new_provider = client.use_provider('us-east-1')
+ new_provider.current_provider.must_equal 'us-east-1'
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/client_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/client_test.rb b/client/tests/client_test.rb
deleted file mode 100644
index 59c39db..0000000
--- a/client/tests/client_test.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-describe "initializing the client" do
-
- it "should parse valid API URIs" do
- client = DeltaCloud.new( API_NAME, API_PASSWORD, API_URL )
- client.api_host.must_equal API_HOST
- client.api_port.must_equal API_PORT.to_i
- client.api_path.must_equal API_PATH
- end
-
- it "should discover entry points upon connection" do
- DeltaCloud.new( "name", "password", API_URL ) do |client|
- client.entry_points[:hardware_profiles].must_equal "#{API_URL}/hardware_profiles"
- client.entry_points[:images].must_equal "#{API_URL}/images"
- client.entry_points[:instances].must_equal "#{API_URL}/instances"
- client.entry_points[:storage_volumes].must_equal "#{API_URL}/storage_volumes"
- client.entry_points[:storage_snapshots].must_equal "#{API_URL}/storage_snapshots"
- client.entry_points[:buckets].must_equal "#{API_URL}/buckets"
- client.entry_points[:keys].must_equal "#{API_URL}/keys"
- end
- end
-
- it "should provide the current driver name via client" do
- DeltaCloud.new( "name", "password", API_URL ) do |client|
- client.driver_name.must_equal 'mock'
- end
- end
-
- it "should provide the current driver name without client" do
- DeltaCloud.driver_name( API_URL ).must_equal 'mock'
- end
-
- describe "without a block" do
- it "should connect without a block" do
- client = DeltaCloud.new( API_NAME, API_PASSWORD, API_URL )
- client.images.wont_be_nil
- end
- end
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/content_negotiation_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/content_negotiation_test.rb b/client/tests/content_negotiation_test.rb
deleted file mode 100644
index 60c90c0..0000000
--- a/client/tests/content_negotiation_test.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-def client; RestClient::Resource.new(API_URL); end
-
-def headers(header)
- encoded_credentials = ["#{API_NAME}:#{API_PASSWORD}"].pack("m0").gsub(/\n/,'')
- { :authorization => "Basic " + encoded_credentials }.merge(header)
-end
-
-describe "return JSON" do
-
- it 'should return JSON when using application/json, */*' do
- header_hash = {
- # FIXME: There is a bug in rack-accept that cause to respond with HTML
- # to the configuration below.
- #
- # 'Accept' => "application/json, */*"
- 'Accept' => "application/json"
- }
- client.get(header_hash) do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^application\/json/
- end
- end
-
- it 'should return JSON when using just application/json' do
- header_hash = {
- 'Accept' => "application/json"
- }
- client.get(header_hash) do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^application\/json/
- end
- end
-
-end
-
-describe "return HTML in different browsers" do
-
- it "wants XML using format parameter" do
- client.get(:params => { 'format' => 'xml' }, 'Accept' => 'application/xhtml+xml') do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^application\/xml/
- end
- end
-
- it "raise 406 error on wrong accept" do
- client['hardware_profiles'].get('Accept' => 'image/png;q=1') do |response, request, &block|
- response.code.must_equal 406
- end
- end
-
- it "wants HTML using format parameter and accept set to XML" do
- client.get(:params => { 'format' => 'html'}, 'Accept' => 'application/xml') do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^text\/html/
- end
- end
-
- it "doesn't have accept header" do
- client.get('Accept' => '') do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^application\/xml/
- end
- end
-
- it "can handle unknown formats" do
- client.get('Accept' => 'format/unknown') do |response, request, &block|
- response.code.must_equal 406
- end
- end
-
- it "wants explicitly XML" do
- client.get('Accept' => 'application/xml') do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^application\/xml/
- end
- end
-
- it "Internet Explorer" do
- header_hash = {
- 'Accept' => "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*",
- 'User-agent' => "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)"
- }
- client.get(header_hash) do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^text\/html/
- end
- end
-
- it "Mozilla Firefox" do
- client.get('Accept' => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^text\/html/
- end
- end
-
- it "Opera" do
- header_hash = {
- 'Accept' => "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1",
- 'User-agent' => "Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11"
- }
- client.get(header_hash) do |response, request, &block|
- response.code.must_equal 200
- response.headers[:content_type].must_match /^text\/html/
- end
- end
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/core_ext/element_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/core_ext/element_test.rb b/client/tests/core_ext/element_test.rb
new file mode 100644
index 0000000..b354d95
--- /dev/null
+++ b/client/tests/core_ext/element_test.rb
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Nokogiri::XML::Element do
+
+ before do
+ mock_xml = Nokogiri::XML(
+ '<root><test id="1"><inner id="2">VALUE</inner><r></r></test></root>'
+ )
+ @mock_el = mock_xml.root
+ end
+
+ it 'support #text_at' do
+ @mock_el.text_at('test/inner').must_equal 'VALUE'
+ @mock_el.text_at('test/unknown').must_be_nil
+ @mock_el.text_at('test/r').must_equal ''
+ end
+
+ it 'support #attr_at' do
+ @mock_el.attr_at('test', :id).must_equal '1'
+ @mock_el.attr_at('test', 'id').must_equal '1'
+ @mock_el.attr_at('test/inner', 'id').must_equal '2'
+ @mock_el.attr_at('r', 'id').must_be_nil
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/core_ext/fixnum_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/core_ext/fixnum_test.rb b/client/tests/core_ext/fixnum_test.rb
new file mode 100644
index 0000000..baba10c
--- /dev/null
+++ b/client/tests/core_ext/fixnum_test.rb
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Fixnum do
+
+ it 'support #is_redirect?' do
+ 300.must_respond_to :"is_redirect?"
+ 300.is_redirect?.must_equal true
+ 310.is_redirect?.must_equal true
+ 399.is_redirect?.must_equal true
+ 510.is_redirect?.must_equal false
+ end
+
+ it 'support #is_ok?' do
+ 200.must_respond_to :"is_ok?"
+ 200.is_ok?.must_equal true
+ 210.is_ok?.must_equal true
+ 299.is_ok?.must_equal true
+ 510.is_ok?.must_equal false
+ end
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/core_ext/nil.rb
----------------------------------------------------------------------
diff --git a/client/tests/core_ext/nil.rb b/client/tests/core_ext/nil.rb
new file mode 100644
index 0000000..ad61dd7
--- /dev/null
+++ b/client/tests/core_ext/nil.rb
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Nil do
+
+ it 'support #to_xml' do
+ nil.must_respond_to :to_xml
+ lambda {
+ nil.to_xml
+ }.must_raise Deltacloud::Client::InvalidXMLError
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/core_ext/string_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/core_ext/string_test.rb b/client/tests/core_ext/string_test.rb
new file mode 100644
index 0000000..3a55afc
--- /dev/null
+++ b/client/tests/core_ext/string_test.rb
@@ -0,0 +1,47 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe String do
+
+ it 'support #to_xml' do
+ "".must_respond_to :to_xml
+ "<root></root>".to_xml.must_be_kind_of Nokogiri::XML::Document
+ "<root></root>".to_xml.root.must_be_kind_of Nokogiri::XML::Element
+ "<root></root>".to_xml.root.name.must_equal 'root'
+ end
+
+ it 'support #camelize' do
+ "".must_respond_to :camelize
+ "test".camelize.must_equal 'Test'
+ "foo_bar".camelize.must_equal 'FooBar'
+ end
+
+ it 'support #pluralize' do
+ ''.must_respond_to :pluralize
+ "test".pluralize.must_equal 'tests'
+ "address".pluralize.must_equal 'addresses'
+ "entity".pluralize.must_equal 'entities'
+ end
+
+ it 'support #singularize' do
+ ''.must_respond_to :singularize
+ 'tests'.singularize.must_equal 'test'
+ 'addresses'.singularize.must_equal 'address'
+ 'entity'.singularize.must_equal 'entity'
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/errors_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/errors_test.rb b/client/tests/errors_test.rb
deleted file mode 100644
index 7b8347b..0000000
--- a/client/tests/errors_test.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-describe "server error handler" do
-
- it 'should capture HTTP 500 error as DeltacloudError' do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda { client.realm('500') }.must_raise DeltaCloud::HTTPError::DeltacloudError
- end
- end
-
- it 'should capture HTTP 502 error as ProviderError' do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda { client.realm('502') }.must_raise DeltaCloud::HTTPError::ProviderError
- end
- end
-
- it 'should capture HTTP 501 error as NotImplemented' do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda { client.realm('501') }.must_raise DeltaCloud::HTTPError::NotImplemented
- end
- end
-
- it 'should capture HTTP 504 error as ProviderTimeout' do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda { client.realm('504') }.must_raise DeltaCloud::HTTPError::ProviderTimeout
- end
- end
-
-end
-
-describe "client error handler" do
-
- it 'should capture HTTP 404 error as NotFound' do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- lambda { client.realm('non-existing-realm') }.must_raise DeltaCloud::HTTPError::NotFound
- end
- end
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/hardware_profiles_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/hardware_profiles_test.rb b/client/tests/hardware_profiles_test.rb
deleted file mode 100644
index b0ae60e..0000000
--- a/client/tests/hardware_profiles_test.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-def prop_check(prop, value_class)
- if prop.present?
- prop.value.wont_be_nil
- prop.value.must_be_kind_of value_class
- end
-end
-
-describe "Hardware Profiles" do
-
- it "should allow retrieval of all hardware profiles" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- hardware_profiles = client.hardware_profiles
- hardware_profiles.wont_be_empty
- hardware_profiles.each do |hwp|
- hwp.uri.wont_be_nil
- hwp.uri.must_be_kind_of String
- prop_check(hwp.architecture, String) unless hwp.name.eql?("opaque")
- end
- end
- end
-
- it "should allow filtering of hardware_profiles by architecture" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- hardware_profiles = client.hardware_profiles( :architecture=>'i386' )
- hardware_profiles.wont_be_empty
- hardware_profiles.size.must_equal 1
- hardware_profiles.first.architecture.value.must_equal 'i386'
- end
- end
-
- it "should allow fetching a hardware_profile by id" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- hwp = client.hardware_profile( 'm1-small' )
- hwp.wont_be_nil
- hwp.id.must_equal 'm1-small'
- end
- end
-
- it "should allow fetching different hardware_profiles" do
- client = DeltaCloud.new( API_NAME, API_PASSWORD, API_URL )
- hwp1 = client.hardware_profile( 'm1-small' )
- hwp2 = client.hardware_profile( 'm1-large' )
- hwp1.storage.value.wont_equal hwp2.storage.value
- hwp1.memory.value.wont_equal hwp2.memory.value
- end
-
- it "should allow fetching a hardware_profile by URI" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- hwp = client.fetch_hardware_profile( API_URL + '/hardware_profiles/m1-small' )
- hwp.wont_be_nil
- hwp.id.must_equal 'm1-small'
- end
- end
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/helpers/model_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/helpers/model_test.rb b/client/tests/helpers/model_test.rb
new file mode 100644
index 0000000..fd42522
--- /dev/null
+++ b/client/tests/helpers/model_test.rb
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Helpers::Model do
+
+ include Deltacloud::Client::Helpers::Model
+
+ it 'supports #model' do
+ model(:error).must_equal Deltacloud::Client::Error
+ model('error').must_equal Deltacloud::Client::Error
+ lambda { model(nil) }.must_raise Deltacloud::Client::Error
+ end
+
+ it 'supports #error' do
+ error.must_equal Deltacloud::Client::Error
+ error(:not_supported).must_equal Deltacloud::Client::NotSupported
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/helpers/xml_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/helpers/xml_test.rb b/client/tests/helpers/xml_test.rb
new file mode 100644
index 0000000..6feb1fc
--- /dev/null
+++ b/client/tests/helpers/xml_test.rb
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Helpers::XmlHelper do
+
+ include Deltacloud::Client::Helpers::XmlHelper
+
+ before do
+ VCR.insert_cassette(__name__)
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #extract_xml_body using string' do
+ extract_xml_body("test").must_be_kind_of String
+ end
+
+ it 'supports #extract_xml_body using faraday connection' do
+ result = extract_xml_body(new_client.connection.get('/api'))
+ result.must_be_kind_of String
+ result.wont_be_empty
+ end
+
+ it 'supports #extract_xml_body using nokogiri::document' do
+ result = extract_xml_body(
+ Nokogiri::XML(new_client.connection.get('/api').body)
+ )
+ result.must_be_kind_of String
+ result.wont_be_empty
+ end
+
+ it 'supports #extract_xml_body using nokogiri::element' do
+ result = extract_xml_body(
+ Nokogiri::XML(new_client.connection.get('/api').body).root
+ )
+ result.must_be_kind_of String
+ result.wont_be_empty
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/images_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/images_test.rb b/client/tests/images_test.rb
deleted file mode 100644
index 91cc961..0000000
--- a/client/tests/images_test.rb
+++ /dev/null
@@ -1,102 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-describe "Images" do
-
- it "should allow retrieval of all images" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- images = client.images
- images.wont_be_empty
- images.size.must_equal 3
- images.each do |image|
- image.uri.wont_be_nil
- image.uri.must_be_kind_of String
- image.description.wont_be_nil
- image.description.must_be_kind_of String
- image.architecture.wont_be_nil
- image.architecture.must_be_kind_of String
- image.owner_id.wont_be_nil
- image.owner_id.must_be_kind_of String
- end
- end
- end
-
- it "should allow retrieval of my own images" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- images = client.images( :owner_id=>:self )
- images.wont_be_empty
- images.size.must_equal 1
- images.each do |image|
- image.uri.wont_be_nil
- image.uri.must_be_kind_of String
- image.description.wont_be_nil
- image.description.must_be_kind_of String
- image.architecture.wont_be_nil
- image.architecture.must_be_kind_of String
- image.owner_id.wont_be_nil
- image.owner_id.must_be_kind_of String
- end
- end
- end
-
- it "should allow retrieval of a single image by ID" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- image = client.image( 'img1' )
- image.wont_be_nil
- image.uri.must_equal API_URL + '/images/img1'
- image.id.must_equal 'img1'
- image.architecture.must_equal 'x86_64'
- end
- end
-
- it "should allow retrieval of a single image by URI" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- image = client.fetch_image( API_URL + '/images/img1' )
- image.wont_be_nil
- image.uri.must_equal API_URL + '/images/img1'
- image.id.must_equal 'img1'
- image.architecture.must_equal 'x86_64'
- end
- end
-
- describe "filtering by architecture" do
- it "return matching images" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- images = client.images( :architecture=>'x86_64' )
- images.wont_be_empty
- images.each do |image|
- image.architecture.must_equal 'x86_64'
- end
- images = client.images( :architecture=>'i386' )
- images.wont_be_empty
- images.each do |image|
- image.architecture.must_equal 'i386'
- end
- end
- end
-
- it "should return an empty array for no matches" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- images = client.images( :architecture=>'8088' )
- images.must_be_empty
- end
- end
- end
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/instance_states_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/instance_states_test.rb b/client/tests/instance_states_test.rb
deleted file mode 100644
index f665676..0000000
--- a/client/tests/instance_states_test.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-describe "Instance States" do
-
- it "should allow retrieval of instance-state information" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance_states = client.instance_states
- instance_states.wont_be_nil
- instance_states.wont_be_empty
-
- instance_states[0].name.must_equal 'start'
- instance_states[0].transitions.size.must_equal 1
- instance_states[0].transitions[0].wont_equal :auto
-
- instance_states[1].name.must_equal 'pending'
- instance_states[1].transitions.size.must_equal 1
- instance_states[1].transitions[0].wont_equal :auto
-
- instance_states[2].name.must_equal 'running'
- instance_states[2].transitions.size.must_equal 2
- includes_transition( instance_states[2].transitions, :reboot, :running ).must_equal true
- includes_transition( instance_states[2].transitions, :stop, :stopped ).must_equal true
- end
- end
-
- it "should allow retrieval of a single instance-state blob" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance_state = client.instance_state( :pending )
- instance_state.wont_be_nil
- instance_state.name.must_equal 'pending'
- instance_state.transitions.size.must_equal 1
- instance_state.transitions[0].wont_equal :auto
-
- instance_state = client.instance_state( :running )
- instance_state.name.must_equal 'running'
- instance_state.transitions.size.must_equal 2
- includes_transition( instance_state.transitions, :reboot, :running ).must_equal true
- includes_transition( instance_state.transitions, :stop, :stopped ).must_equal true
- end
- end
-
- def includes_transition( transitions, action, to )
- found = transitions.find{|e| e.action.to_s == action.to_s && e.to.to_s == to.to_s }
- ! found.nil?
- end
-
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/instances_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/instances_test.rb b/client/tests/instances_test.rb
deleted file mode 100644
index 0ad990b..0000000
--- a/client/tests/instances_test.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-describe "Instances" do
-
- it "should allow retrieval of all instances" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instances = client.instances
- instances.wont_be_empty
- instances.each do |instance|
- instance.uri.wont_be_nil
- instance.uri.must_be_kind_of String
- instance.owner_id.wont_be_nil
- instance.owner_id.must_be_kind_of String
- instance.image.wont_be_nil
- instance.image.to_s.must_match /DeltaCloud::API::.*::Image/
- instance.hardware_profile.wont_be_nil
- instance.hardware_profile.must_be_kind_of DeltaCloud::API::Base::HardwareProfile
- instance.state.wont_be_nil
- instance.state.must_be_kind_of String
- instance.public_addresses.wont_be_nil
- instance.public_addresses.wont_be_empty
- instance.public_addresses.must_be_kind_of Array
- instance.private_addresses.wont_be_nil
- instance.private_addresses.wont_be_empty
- instance.private_addresses.must_be_kind_of Array
- end
- end
- end
-
- it "should allow navigation from instance to image" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instances = client.instances
- instances.wont_be_empty
- instance = instances.first
- instance.image.wont_be_nil
- instance.image.description.wont_be_nil
- instance.image.description.must_be_kind_of String
- end
- end
-
- it "should allow retrieval of a single instance" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.instance( "inst0" )
- instance.wont_be_nil
- instance.name.wont_be_nil
- instance.name.must_equal 'Mock Instance With Profile Change'
- instance.uri.wont_be_nil
- instance.uri.must_be_kind_of String
- instance.owner_id.must_equal "mockuser"
- instance.public_addresses.first.class.must_equal Hash
- instance.public_addresses.first[:type].must_equal 'hostname'
- instance.public_addresses.first[:address].must_equal 'img1.inst0.public.com'
- instance.image.wont_be_nil
- instance.image.uri.must_equal API_URL + "/images/img1"
- instance.hardware_profile.wont_be_nil
- instance.hardware_profile.wont_be_nil
- instance.hardware_profile.uri.must_equal API_URL + "/hardware_profiles/m1-large"
- instance.hardware_profile.memory.value.must_equal '10240'
- instance.hardware_profile.storage.value.must_equal '850'
- instance.state.must_equal "RUNNING"
- instance.actions.wont_be_nil
- end
- end
-
- it "should allow creation of new instances with reasonable defaults" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.create_instance( 'img1', :name=>'TestInstance', :hardware_profile => 'm1-large' )
- instance.wont_be_nil
- instance.uri.must_match %r{#{API_URL}/instances/inst[0-9]+}
- instance.id.must_match /inst[0-9]+/
- instance.name.must_equal 'TestInstance'
- instance.image.id.must_equal 'img1'
- instance.hardware_profile.id.must_equal 'm1-large'
- instance.realm.id.must_equal 'us'
- end
- end
-
- it "should allow creation of new instances with specific realm" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.create_instance( 'img1', :realm=>'eu', :hardware_profile => 'm1-large' )
- instance.wont_be_nil
- instance.uri.must_match %r{#{API_URL}/instances/inst[0-9]+}
- instance.id.must_match /inst[0-9]+/
- instance.image.id.must_equal 'img1'
- instance.hardware_profile.id.must_equal 'm1-large'
- instance.realm.id.must_equal 'eu'
- end
- end
-
- it "should allow creation of new instances with specific hardware profile" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.create_instance( 'img1',
- :hardware_profile=>'m1-xlarge' )
- instance.wont_be_nil
- instance.uri.must_match %r{#{API_URL}/instances/inst[0-9]+}
- instance.id.must_match /inst[0-9]+/
- instance.image.id.must_equal 'img1'
- instance.hardware_profile.id.must_equal 'm1-xlarge'
- instance.realm.id.must_equal 'us'
- end
- end
-
- it "should allow creation of new instances with specific hardware profile overriding memory" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- hwp = { :id => 'm1-xlarge', :memory => 32768 }
- instance = client.create_instance( 'img1', :hardware_profile=> hwp )
- instance.wont_be_nil
- instance.uri.must_match %r{#{API_URL}/instances/inst[0-9]+}
- instance.id.must_match /inst[0-9]+/
- instance.image.id.must_equal 'img1'
- instance.hardware_profile.id.must_equal 'm1-xlarge'
- instance.hardware_profile.memory.value.must_equal'12288'
- instance.realm.id.must_equal 'us'
- end
- end
-
- it "should allow creation of new instances with specific realm and hardware profile" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.create_instance( 'img1', :realm=>'eu',
- :hardware_profile=>'m1-xlarge' )
- instance.wont_be_nil
- instance.uri.must_match %r{#{API_URL}/instances/inst[0-9]+}
- instance.id.must_match /inst[0-9]+/
- instance.image.id.must_equal 'img1'
- instance.hardware_profile.id.must_equal 'm1-xlarge'
- instance.realm.id.must_equal 'eu'
- end
- end
-
- it "should allow fetching of instances by id" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.instance( 'inst1' )
- instance.wont_be_nil
- instance.uri.wont_be_nil
- instance.uri.must_be_kind_of String
- end
- end
-
- it "should allow fetching of instances by URI" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.fetch_instance( API_URL + '/instances/inst1' )
- instance.wont_be_nil
- instance.uri.must_equal API_URL + '/instances/inst1'
- instance.id.must_equal 'inst1'
- end
- end
-
- describe "performing actions on instances" do
- it "should allow actions that are valid" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.instance( 'inst1' )
- instance.wont_be_nil
- instance.state.must_equal "RUNNING"
- instance.uri.must_equal API_URL + '/instances/inst1'
- instance.id.must_equal 'inst1'
- instance.stop!
- instance.state.must_equal "STOPPED"
- instance.start!
- instance.state.must_equal "RUNNING"
- end
- end
-
- it "should not allow actions that are invalid" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.instance( 'inst1' )
- instance.wont_be_nil
- unless instance.state.eql?("RUNNING")
- instance.start!
- end
- instance.state.must_equal "RUNNING"
- lambda{instance.start!}.must_raise NoMethodError
- end
- end
-
- it "should not throw exception when destroying an instance" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- instance = client.create_instance( 'img1',
- :name=>'TestDestroyInstance',
- :hardware_profile => 'm1-xlarge' )
- instance.stop!
- instance.destroy!.must_be_nil
- end
- end
- end
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/keys_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/keys_test.rb b/client/tests/keys_test.rb
deleted file mode 100644
index 2610fd4..0000000
--- a/client/tests/keys_test.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership. The
-# ASF licenses this file to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the
-# License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-require 'rubygems'
-require 'require_relative' if RUBY_VERSION =~ /^1\.8/
-
-require_relative './test_helper.rb'
-
-def check_key(the_key, key_name = "")
- the_key.wont_be_nil
- the_key.id.must_be_kind_of String
- the_key.id.must_equal key_name
- the_key.actions.wont_be_nil
- the_key.actions.size.must_equal 1
- the_key.actions.first[0].must_equal "destroy"
- the_key.actions.first[1].must_equal "#{API_URL}/keys/#{key_name}"
- the_key.fingerprint.wont_be_nil
- the_key.fingerprint.must_be_kind_of String
- the_key.pem.wont_be_nil
- the_key.pem.must_be_kind_of String
-end
-
-def create_key_if_necessary(client, key_name)
- the_key = client.key(key_name)
- unless the_key
- client.create_key()
- end
-end
-
-
-describe "Keys" do
- it "should allow retrieval of all keys" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- client.keys.wont_be_empty
- end
- end
-end
-
-describe "Operations on Keys" do
-
- it "should allow successful creation and destroy of a new key" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- new_key = client.create_key({:name => "my_new_key"})
- check_key(new_key, "my_new_key")
- the_key = client.key('my_new_key')
- the_key.destroy!.must_be_nil
- end
- end
-
- it "should allow retrieval of an existing named key" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- key_name = "test-key"
- create_key_if_necessary(client, key_name)
- the_key = client.key(key_name)
- check_key(the_key, key_name)
- end
- end
-
- it "should raise error if you create a key with the same name as an existing key" do
- DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
- name = "test-key"
- create_key_if_necessary(client, name)
- lambda{
- client.create_key({:name => name})
- }.must_raise DeltaCloud::HTTPError::Forbidden
- end
- end
-
-end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/address_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/address_test.rb b/client/tests/methods/address_test.rb
new file mode 100644
index 0000000..90e4478
--- /dev/null
+++ b/client/tests/methods/address_test.rb
@@ -0,0 +1,64 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Address do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #addresses' do
+ @client.must_respond_to :addresses
+ @client.addresses.must_be_kind_of Array
+ @client.addresses.each { |r| r.must_be_instance_of Deltacloud::Client::Address }
+ end
+
+ it 'supports filtering #addresses by :id param' do
+ result = @client.addresses(:id => '192.168.0.1')
+ result.must_be_kind_of Array
+ result.size.must_equal 1
+ result.first.must_be_instance_of Deltacloud::Client::Address
+ result = @client.addresses(:id => 'unknown')
+ result.must_be_kind_of Array
+ result.size.must_equal 0
+ end
+
+ it 'support #address' do
+ @client.must_respond_to :address
+ result = @client.address('192.168.0.1')
+ result.must_be_instance_of Deltacloud::Client::Address
+ lambda { @client.address(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.address('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'support #create_address' do
+ @client.must_respond_to :create_address
+ result = @client.create_address
+ result.must_be_instance_of Deltacloud::Client::Address
+ result.ip.wont_be_empty
+ result.instance_id.must_be_nil
+ @client.must_respond_to :destroy_address
+ @client.destroy_address(result._id).must_equal true
+ lambda { @client.address(result._id) }.must_raise Deltacloud::Client::NotFound
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/api_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/api_test.rb b/client/tests/methods/api_test.rb
new file mode 100644
index 0000000..25e167e
--- /dev/null
+++ b/client/tests/methods/api_test.rb
@@ -0,0 +1,97 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Api do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #path' do
+ @client.must_respond_to :path
+ @client.path.must_be_kind_of String
+ @client.path.must_equal '/api'
+ end
+
+ it 'supports #api_uri' do
+ @client.must_respond_to :api_uri
+ @client.api_uri('/sample').must_be_kind_of URI::Generic
+ @client.api_uri('/sample').to_s.must_equal '/api/sample'
+ end
+
+ it 'supports #version' do
+ @client.must_respond_to :version
+ @client.version.must_equal '1.1.1'
+ end
+
+ it 'supports #current_driver' do
+ @client.must_respond_to :current_driver
+ @client.current_driver.must_equal 'mock'
+ end
+
+ it 'supports #current_provider' do
+ @client.must_respond_to :current_provider
+ @client.current_provider.must_be_nil
+ @client.use(:ec2, 'foo', 'bar', 'eu-west-1').current_provider.must_equal 'eu-west-1'
+ end
+
+ it 'supports #supported_collections' do
+ @client.must_respond_to :supported_collections
+ @client.supported_collections.must_be_kind_of Array
+ @client.supported_collections.wont_be_empty
+ @client.supported_collections.must_include 'realms'
+ end
+
+ it 'supports #support?' do
+ @client.must_respond_to :"support?"
+ @client.support?('realms').must_equal true
+ @client.support?(:realms).must_equal true
+ @client.support?('foo').must_equal false
+ end
+
+ it 'supports #must_support!' do
+ @client.must_respond_to :"must_support!"
+ @client.must_support!(:realms).must_be_nil
+ @client.must_support!('realms').must_be_nil
+ lambda { @client.must_support!(:foo) }.must_raise @client.error(:not_supported)
+ end
+
+ it 'supports #features' do
+ @client.must_respond_to :features
+ @client.features.must_be_kind_of Hash
+ @client.features['instances'].wont_be_nil
+ @client.features['instances'].must_be_kind_of Array
+ @client.features['instances'].wont_be_empty
+ @client.features['instances'].must_include 'user_name'
+ @client.features['instances'].wont_include nil
+ end
+
+ it 'supports #feature?' do
+ @client.must_respond_to :"feature?"
+ @client.feature?(:instances, 'user_name').must_equal true
+ @client.feature?('instances', :user_name).must_equal true
+ @client.feature?('instances', :foo).must_equal false
+ @client.feature?(:foo, :foo).must_equal false
+ @client.feature?(nil, nil).must_equal false
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/backward_compatibility_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/backward_compatibility_test.rb b/client/tests/methods/backward_compatibility_test.rb
new file mode 100644
index 0000000..6e71c3c
--- /dev/null
+++ b/client/tests/methods/backward_compatibility_test.rb
@@ -0,0 +1,87 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::BackwardCompatibility do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #api_host' do
+ @client.must_respond_to :api_host
+ @client.api_host.must_equal 'localhost'
+ end
+
+ it 'supports #api_port' do
+ @client.must_respond_to :api_port
+ @client.api_port.must_equal 3001
+ end
+
+ it 'supports #connect' do
+ @client.must_respond_to :connect
+ @client.connect do |new_client|
+ new_client.must_be_instance_of Deltacloud::Client::Connection
+ end
+ end
+
+ it 'supports #with_config' do
+ @client.must_respond_to :with_config
+ @client.with_config(:driver => :ec2, :username => 'f', :password => 'b') do |c|
+ c.must_be_instance_of Deltacloud::Client::Connection
+ c.current_driver.must_equal 'ec2'
+ c.request_driver.must_equal :ec2
+ end
+ end
+
+ it 'supports #use_driver' do
+ @client.must_respond_to :use_driver
+ @client.use_driver(:ec2, :username => 'f', :password => 'b') do |c|
+ c.must_be_instance_of Deltacloud::Client::Connection
+ c.current_driver.must_equal 'ec2'
+ c.request_driver.must_equal :ec2
+ end
+ end
+
+ it 'supports #discovered?' do
+ @client.must_respond_to :"discovered?"
+ @client.discovered?.must_equal true
+ end
+
+ it 'supports #valid_credentials? on class' do
+ Deltacloud::Client.must_respond_to :"valid_credentials?"
+ r = Deltacloud::Client.valid_credentials? DELTACLOUD_USER,
+ DELTACLOUD_PASSWORD, DELTACLOUD_URL
+ r.must_equal true
+ r = Deltacloud::Client.valid_credentials? 'foo',
+ DELTACLOUD_PASSWORD, DELTACLOUD_URL
+ r.must_equal false
+ r = Deltacloud::Client.valid_credentials? 'foo',
+ 'bar', DELTACLOUD_URL
+ r.must_equal false
+ lambda {
+ Deltacloud::Client.valid_credentials? 'foo',
+ 'bar', 'http://unknown.local'
+ }.must_raise Faraday::Error::ConnectionFailed
+ end
+
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/blob_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/blob_test.rb b/client/tests/methods/blob_test.rb
new file mode 100644
index 0000000..7cb55be
--- /dev/null
+++ b/client/tests/methods/blob_test.rb
@@ -0,0 +1,64 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Blob do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #blobs' do
+ @client.must_respond_to :blobs
+ @client.blobs('bucket1').must_be_kind_of Array
+ @client.blobs('bucket1').each { |r| r.must_be_instance_of Deltacloud::Client::Blob }
+ end
+
+ it 'support #blob' do
+ @client.must_respond_to :blob
+ result = @client.blob('bucket1', 'blob1')
+ result.must_be_instance_of Deltacloud::Client::Blob
+ lambda { @client.blob('bucket1', 'foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'support #create_blob and #destroy_blob' do
+ @client.must_respond_to :create_blob
+ result = @client.create_blob('bucket1', 'fooblob123', 'content_of_blob')
+ result.must_be_instance_of Deltacloud::Client::Blob
+ result.bucket_id.must_equal 'bucket1'
+ result._id.must_equal 'fooblob123'
+ result.content_length.must_equal '15'
+ result.content_type.must_equal 'text/plain'
+ @client.must_respond_to :destroy_blob
+ @client.destroy_blob('bucket1', result._id).must_equal true
+ end
+
+ it 'support #create_blob and #destroy_blob with meta_params' do
+ @client.must_respond_to :create_blob
+ result = @client.create_blob('bucket1', 'fooblob123', 'content', :user_metadata => { :key => :value })
+ result.must_be_instance_of Deltacloud::Client::Blob
+ result.user_metadata.must_be_kind_of Hash
+ result.user_metadata['key'].must_equal 'value'
+ @client.must_respond_to :destroy_blob
+ @client.destroy_blob('bucket1', result._id).must_equal true
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/bucket_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/bucket_test.rb b/client/tests/methods/bucket_test.rb
new file mode 100644
index 0000000..6b6736d
--- /dev/null
+++ b/client/tests/methods/bucket_test.rb
@@ -0,0 +1,62 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Bucket do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #buckets' do
+ @client.must_respond_to :buckets
+ @client.buckets.must_be_kind_of Array
+ @client.buckets.each { |r| r.must_be_instance_of Deltacloud::Client::Bucket }
+ end
+
+ it 'supports filtering #buckets by :id param' do
+ result = @client.buckets(:id => 'bucket1')
+ result.must_be_kind_of Array
+ result.size.must_equal 1
+ result.first.must_be_instance_of Deltacloud::Client::Bucket
+ result = @client.buckets(:id => 'unknown')
+ result.must_be_kind_of Array
+ result.size.must_equal 0
+ end
+
+ it 'support #bucket' do
+ @client.must_respond_to :bucket
+ result = @client.bucket('bucket1')
+ result.must_be_instance_of Deltacloud::Client::Bucket
+ lambda { @client.bucket(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.bucket('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'support #create_bucket and #destroy_bucket' do
+ @client.must_respond_to :create_bucket
+ b = @client.create_bucket('foo123')
+ b.must_be_instance_of Deltacloud::Client::Bucket
+ b.name.must_equal 'foo123'
+ @client.destroy_bucket(b._id)
+ lambda { @client.bucket(b._id) }.must_raise Deltacloud::Client::NotFound
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/driver_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/driver_test.rb b/client/tests/methods/driver_test.rb
new file mode 100644
index 0000000..3872c85
--- /dev/null
+++ b/client/tests/methods/driver_test.rb
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Driver do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #drivers' do
+ @client.must_respond_to :drivers
+ @client.drivers.must_be_kind_of Array
+ @client.drivers.each { |r| r.must_be_instance_of Deltacloud::Client::Driver }
+ end
+
+ it 'supports #driver' do
+ @client.must_respond_to :driver
+ result = @client.driver('ec2')
+ result.must_be_instance_of Deltacloud::Client::Driver
+ lambda { @client.driver(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.driver('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'supports #providers' do
+ @client.must_respond_to :providers
+ @client.providers.must_be_empty
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/firewall_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/firewall_test.rb b/client/tests/methods/firewall_test.rb
new file mode 100644
index 0000000..967b535
--- /dev/null
+++ b/client/tests/methods/firewall_test.rb
@@ -0,0 +1,84 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Firewall do
+
+ def new_client
+ Deltacloud::Client(DELTACLOUD_URL, 'AKIAJYOQYLLOIWN5LQ3A', 'Ra2ViYaYgocAJqPAQHxMVU/l2sGGU2pifmWT4q3H', :driver => :ec2 )
+ end
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #firewalls' do
+ @client.must_respond_to :firewalls
+ begin
+ @client.firewalls.must_be_kind_of Array
+ rescue Deltacloud::Client::AuthenticationError
+ skip
+ end
+ @client.firewalls.each { |r| r.must_be_instance_of Deltacloud::Client::Firewall }
+ end
+
+ it 'supports filtering #firewalls by :id param' do
+ begin
+ result = @client.firewalls(:id => 'mfojtik')
+ rescue Deltacloud::Client::AuthenticationError
+ skip
+ end
+ result.must_be_kind_of Array
+ result.size.must_equal 1
+ result.first.must_be_instance_of Deltacloud::Client::Firewall
+ end
+
+ it 'support #firewall' do
+ @client.must_respond_to :firewall
+ begin
+ result = @client.firewall('mfojtik')
+ rescue
+ skip
+ end
+ result.must_be_instance_of Deltacloud::Client::Firewall
+ lambda { @client.firewall(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.firewall('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'support #create_firewall and #destroy_firewall' do
+ @client.must_respond_to :create_firewall
+ @client.must_respond_to :destroy_firewall
+ begin
+ result = @client.create_firewall('foofirewall', :description => 'testing firewalls')
+ result.must_be_instance_of Deltacloud::Client::Firewall
+ result.name.must_equal 'foofirewall'
+ @client.destroy_firewall(result._id).must_equal true
+ lambda {
+ @client.create_firewall('foofirewall')
+ }.must_raise Deltacloud::Client::ClientFailure
+ rescue
+ skip
+ end
+ end
+
+
+ # FIXME: TBD, not supported by mock driver yet.
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/hardware_profile_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/hardware_profile_test.rb b/client/tests/methods/hardware_profile_test.rb
new file mode 100644
index 0000000..1e49c46
--- /dev/null
+++ b/client/tests/methods/hardware_profile_test.rb
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::HardwareProfile do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #hardware_profiles' do
+ @client.must_respond_to :hardware_profiles
+ @client.hardware_profiles.must_be_kind_of Array
+ @client.hardware_profiles.each { |r| r.must_be_instance_of Deltacloud::Client::HardwareProfile }
+ end
+
+ it 'supports filtering #hardware_profiles by :id param' do
+ result = @client.hardware_profiles(:id => 'm1-small')
+ result.must_be_kind_of Array
+ result.size.must_equal 1
+ result.first.must_be_instance_of Deltacloud::Client::HardwareProfile
+ result = @client.hardware_profiles(:id => 'unknown')
+ result.must_be_kind_of Array
+ result.size.must_equal 0
+ end
+
+ it 'support #hardware_profile' do
+ @client.must_respond_to :hardware_profile
+ result = @client.hardware_profile('m1-small')
+ result.must_be_instance_of Deltacloud::Client::HardwareProfile
+ lambda { @client.hardware_profile(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.hardware_profile('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/image_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/image_test.rb b/client/tests/methods/image_test.rb
new file mode 100644
index 0000000..6d505e1
--- /dev/null
+++ b/client/tests/methods/image_test.rb
@@ -0,0 +1,64 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Image do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #images' do
+ @client.must_respond_to :images
+ @client.images.must_be_kind_of Array
+ @client.images.each { |r| r.must_be_instance_of Deltacloud::Client::Image }
+ end
+
+ it 'supports filtering #images by :id param' do
+ result = @client.images(:id => 'img1')
+ result.must_be_kind_of Array
+ result.size.must_equal 1
+ result.first.must_be_instance_of Deltacloud::Client::Image
+ result = @client.images(:id => 'unknown')
+ result.must_be_kind_of Array
+ result.size.must_equal 0
+ end
+
+ it 'support #image' do
+ @client.must_respond_to :image
+ result = @client.image('img1')
+ result.must_be_instance_of Deltacloud::Client::Image
+ lambda { @client.image(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.image('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'support #create_image and #destroy_image' do
+ @client.must_respond_to :create_image
+ img = @client.create_image('inst1', :name => 'test')
+ img.must_be_instance_of Deltacloud::Client::Image
+ img.name.must_equal 'test'
+ @client.destroy_image(img._id)
+ lambda {
+ @client.create_image(nil, :name => 'test')
+ }.must_raise Deltacloud::Client::ServerError
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/instance_state_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/instance_state_test.rb b/client/tests/methods/instance_state_test.rb
new file mode 100644
index 0000000..bad6ae5
--- /dev/null
+++ b/client/tests/methods/instance_state_test.rb
@@ -0,0 +1,43 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::InstanceState do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ end
+
+ after do
+ VCR.eject_cassette
+ end
+
+ it 'supports #instance_states' do
+ @client.must_respond_to :instance_states
+ @client.instance_states.must_be_kind_of Array
+ @client.instance_states.each { |r| r.must_be_instance_of Deltacloud::Client::InstanceState::State }
+ end
+
+ it 'support #instance_state' do
+ @client.must_respond_to :instance_state
+ result = @client.instance_state('start')
+ result.must_be_instance_of Deltacloud::Client::InstanceState::State
+ @client.instance_state(nil).must_be_nil
+ @client.instance_state('foo').must_be_nil
+ end
+
+end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/3d865944/client/tests/methods/instance_test.rb
----------------------------------------------------------------------
diff --git a/client/tests/methods/instance_test.rb b/client/tests/methods/instance_test.rb
new file mode 100644
index 0000000..47b3934
--- /dev/null
+++ b/client/tests/methods/instance_test.rb
@@ -0,0 +1,120 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require_relative '../test_helper'
+
+describe Deltacloud::Client::Methods::Instance do
+
+ before do
+ VCR.insert_cassette(__name__)
+ @client = new_client
+ @created_instances = []
+ end
+
+ after do
+ VCR.eject_cassette
+ VCR.use_cassette('instances_cleanup') do
+ cleanup_instances(@created_instances)
+ end
+ end
+
+ it 'supports #instances' do
+ @client.must_respond_to :instances
+ @client.instances.must_be_kind_of Array
+ @client.instances.each { |r| r.must_be_instance_of Deltacloud::Client::Instance }
+ end
+
+ it 'supports filtering #instances by :id param' do
+ result = @client.instances(:id => 'inst1')
+ result.must_be_kind_of Array
+ result.size.must_equal 1
+ result.first.must_be_instance_of Deltacloud::Client::Instance
+ result = @client.instances(:id => 'unknown')
+ result.must_be_kind_of Array
+ result.size.must_equal 0
+ end
+
+ it 'support #instance' do
+ @client.must_respond_to :instance
+ result = @client.instance('inst1')
+ result.must_be_instance_of Deltacloud::Client::Instance
+ lambda { @client.instance(nil) }.must_raise Deltacloud::Client::NotFound
+ lambda { @client.instance('foo') }.must_raise Deltacloud::Client::NotFound
+ end
+
+ it 'support #create_instance' do
+ @client.must_respond_to :create_instance
+ inst = @client.create_instance('img1')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst.image_id.must_equal 'img1'
+ @created_instances << inst
+ end
+
+ it 'support #create_instance with hwp_id' do
+ @client.must_respond_to :create_instance
+ inst = @client.create_instance('img1', :hwp_id => 'm1-large')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst.image_id.must_equal 'img1'
+ inst.hardware_profile_id.must_equal 'm1-large'
+ @created_instances << inst
+ end
+
+ it 'support #create_instance with realm_id' do
+ @client.must_respond_to :create_instance
+ inst = @client.create_instance('img1', :realm_id => 'eu')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst.realm_id.must_equal 'eu'
+ @created_instances << inst
+ end
+
+ it 'support #create_instance with name' do
+ @client.must_respond_to :create_instance
+ inst = @client.create_instance('img1', :realm_id => 'eu', :name => 'test_instance')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst.name.must_equal 'test_instance'
+ inst.realm_id.must_equal 'eu'
+ @created_instances << inst
+ end
+
+ it 'support #stop_instance' do
+ @client.must_respond_to :stop_instance
+ inst = @client.create_instance('img1')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst = @client.stop_instance(inst._id)
+ inst.state.must_equal 'STOPPED'
+ @created_instances << inst
+ end
+
+ it 'support #start_instance' do
+ @client.must_respond_to :start_instance
+ inst = @client.create_instance('img1')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst = @client.stop_instance(inst._id)
+ inst.state.must_equal 'STOPPED'
+ inst = inst.start_instance(inst._id)
+ inst.state.must_equal 'RUNNING'
+ @created_instances << inst
+ end
+
+ it 'support #reboot_instance' do
+ @client.must_respond_to :reboot_instance
+ inst = @client.create_instance('img1')
+ inst.must_be_instance_of Deltacloud::Client::Instance
+ inst = @client.reboot_instance(inst._id)
+ inst.state.must_equal 'RUNNING'
+ @created_instances << inst
+ end
+
+end