You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by em...@gmail.com on 2011/10/31 21:06:33 UTC
[PATCH] cimi unit test cases for collection and individual resources
From: Tong Li <li...@us.ibm.com>
---
server/Rakefile | 9 ++
server/lib/cimi/server.rb | 2 +-
server/tests/cimi/cimi.rb | 3 +
server/tests/cimi/common/cloud_entry_point_test.rb | 92 ++++++++++++++++++++
.../cimi/common/machine_configuration_test.rb | 60 +++++++++++++
server/tests/cimi/common/machine_image_test.rb | 60 +++++++++++++
server/tests/cimi/common/machine_test.rb | 60 +++++++++++++
server/tests/cimi/common/volume_test.rb | 60 +++++++++++++
server/tests/common.rb | 6 +-
9 files changed, 350 insertions(+), 2 deletions(-)
create mode 100644 server/tests/cimi/cimi.rb
create mode 100644 server/tests/cimi/common/cloud_entry_point_test.rb
create mode 100644 server/tests/cimi/common/machine_configuration_test.rb
create mode 100644 server/tests/cimi/common/machine_image_test.rb
create mode 100644 server/tests/cimi/common/machine_test.rb
create mode 100644 server/tests/cimi/common/volume_test.rb
diff --git a/server/Rakefile b/server/Rakefile
index 27605d5..f07a6ce 100644
--- a/server/Rakefile
+++ b/server/Rakefile
@@ -62,6 +62,15 @@ namespace :test do
t.warning = false
}
end
+
+ desc "Run CIMI frontend tests"
+ Rake::TestTask.new "cimi" do |t|
+ t.test_files = ["tests/cimi/cimi.rb", "tests/cimi/common/*_test.rb"]
+ t.options = "-v -v"
+ t.verbose = true
+ t.warning = false
+ end
+
end
desc "Call our Test::Unit suite"
diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb
index 17285bd..cfb77ea 100644
--- a/server/lib/cimi/server.rb
+++ b/server/lib/cimi/server.rb
@@ -40,7 +40,7 @@ configure do
set :views, File::join($top_srcdir, 'views', 'cimi')
# NOTE: Change :public to :public_folder once we update sinatra to 1.3
# set :public_folder, File::join($top_srcdir, 'public')
- set :public, File::join($top_srcdir, 'public')
+ set :public_folder, File::join($top_srcdir, 'public')
# Try to load the driver on startup to fail early if there are issues
driver
set :store, STOREROOT
diff --git a/server/tests/cimi/cimi.rb b/server/tests/cimi/cimi.rb
new file mode 100644
index 0000000..8d351ad
--- /dev/null
+++ b/server/tests/cimi/cimi.rb
@@ -0,0 +1,3 @@
+ENV['API_FRONTEND'] = "cimi"
+ENV['API_USER'] = 'mockuser'
+ENV['API_PASSWORD'] = 'mockpassword'
diff --git a/server/tests/cimi/common/cloud_entry_point_test.rb b/server/tests/cimi/common/cloud_entry_point_test.rb
new file mode 100644
index 0000000..dc7cb36
--- /dev/null
+++ b/server/tests/cimi/common/cloud_entry_point_test.rb
@@ -0,0 +1,92 @@
+# 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.
+#
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+require 'nokogiri'
+
+module CimiUnitTest
+ class CloudEntryPointTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_it_redirect_client_to_entrypoint
+ get_url '/cimi'
+ last_response.status.should == 301
+ last_response.header['Location'].should == 'http://example.org/cimi/cloudEntryPoint'
+ end
+
+ def test_it_return_valid_content_type
+ get_url '/cimi/cloudEntryPoint'
+ last_response.content_type.should == 'application/CIMI-CloudEntryPoint+xml;charset=utf-8'
+ end
+
+ def test_it_return_valid_xmlns
+ get_url '/cimi/cloudEntryPoint'
+ (last_xml_response/'CloudEntryPoint').first.namespace.href.should == CMWG_NAMESPACE
+ end
+
+ def test_it_return_valid_root_element
+ get_url '/cimi/cloudEntryPoint'
+ last_xml_response.root.name == "CloudEntryPoint"
+ end
+
+ def test_it_include_all_properties
+ get_url '/cimi/cloudEntryPoint'
+ properties = ['uri', 'name', 'description', 'created', 'volumes', 'machines', 'machineImages', 'machineConfigurations'].sort
+ (last_xml_response/'CloudEntryPoint/*').collect { |p| p.name }.sort.should == properties
+ end
+
+ def test_collection_have_href_attributes
+ get_url '/cimi/cloudEntryPoint'
+ collections = [ 'volumes', 'machines', 'machineImages', 'machineConfigurations' ]
+ (last_xml_response/'CloudEntryPoint/*').each do |collection|
+ collection[:href].should_not nil
+ end
+ end
+
+ def test_collection_href_attributes_are_valid
+ valid_uris = {
+ 'volumes' => 'cimi/volumes',
+ 'machines' => 'cimi/machines',
+ 'machineImages' => 'cimi/machine_images',
+ 'machineConfiguration' => 'cimi/machine_configurations'
+ }
+ get_url '/cimi/cloudEntryPoint'
+ (last_xml_response/'CloudEntryPoint/*').each do |collection|
+ next unless valid_uris.keys.include? collection.name
+ collection[:href].should =~ /#{valid_uris[collection.name]}$/
+ end
+ end
+
+ def test_it_respond_to_json
+ get_url '/cimi/cloudEntryPoint', {}, :format => :json
+ JSON::parse(last_response.body).class.should == Hash
+ end
+
+ def test_json_include_all_properties
+ get_url '/cimi/cloudEntryPoint', {}, :format => :json
+ properties = ['uri', 'name', 'description', 'created', 'volumes', 'machines', 'machineImages', 'machineConfigurations'].sort
+ properties.each do |property|
+ JSON::parse(last_response.body).keys.include?(property).should == true
+ end
+ end
+
+ end
+end
diff --git a/server/tests/cimi/common/machine_configuration_test.rb b/server/tests/cimi/common/machine_configuration_test.rb
new file mode 100644
index 0000000..c28312f
--- /dev/null
+++ b/server/tests/cimi/common/machine_configuration_test.rb
@@ -0,0 +1,60 @@
+# 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.
+#
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+require 'nokogiri'
+
+module CimiUnitTest
+ class MachineConfigurationTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ #setup the url to access a machine. this will be used by all the test cases in this class
+ def setup
+ if @checked.nil?
+ get_url '/cimi/cloudEntryPoint'
+ configurations = last_xml_response/'CloudEntryPoint/machineConfigurations'
+ if configurations
+ get_auth_url configurations.attr('href')
+ elements = last_xml_response/'MachineConfigurationCollection/machineConfiguration'
+ if elements.size > 0
+ @access_url = elements[0].attr('href')
+ end
+ end
+ @checked = true
+ end
+ end
+
+ def test_machine_configuration_read_to_xml
+ if @access_url
+ get_auth_url @access_url, {}, :format => :xml
+ last_response.status.should == 200
+ end
+ end
+
+ def test_machine_configuration_read_to_json
+ if @access_url
+ get_auth_url @access_url, {}, :format => :json
+ last_response.status.should == 200
+ end
+ end
+
+ end
+end
diff --git a/server/tests/cimi/common/machine_image_test.rb b/server/tests/cimi/common/machine_image_test.rb
new file mode 100644
index 0000000..e271449
--- /dev/null
+++ b/server/tests/cimi/common/machine_image_test.rb
@@ -0,0 +1,60 @@
+# 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.
+#
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+require 'nokogiri'
+
+module CimiUnitTest
+ class MachineImageTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ #setup the url to access a machine. this will be used by all the test cases in this class
+ def setup
+ if @checked.nil?
+ get_url '/cimi/cloudEntryPoint'
+ images = last_xml_response/'CloudEntryPoint/machineImages'
+ if images
+ get_auth_url images.attr('href')
+ elements = last_xml_response/'MachineImageCollection/machineImage'
+ if elements.size > 0
+ @access_url = elements[0].attr('href')
+ end
+ end
+ @checked = true
+ end
+ end
+
+ def test_machine_image_read_to_xml
+ if @access_url
+ get_auth_url @access_url, {}, :format => :xml
+ last_response.status.should == 200
+ end
+ end
+
+ def test_machine_image_read_to_json
+ if @access_url
+ get_auth_url @access_url, {}, :format => :json
+ last_response.status.should == 200
+ end
+ end
+
+ end
+end
diff --git a/server/tests/cimi/common/machine_test.rb b/server/tests/cimi/common/machine_test.rb
new file mode 100644
index 0000000..2fda201
--- /dev/null
+++ b/server/tests/cimi/common/machine_test.rb
@@ -0,0 +1,60 @@
+# 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.
+#
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+require 'nokogiri'
+
+module CimiUnitTest
+ class MachineTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ #setup the url to access a machine. this will be used by all the test cases in this class
+ def setup
+ if @checked.nil?
+ get_url '/cimi/cloudEntryPoint'
+ machines = (last_xml_response/'CloudEntryPoint/machines')
+ if machines
+ get_auth_url machines.attr('href')
+ elements = last_xml_response/'MachineCollection/machine'
+ if elements.size > 0
+ @access_url = elements[0].attr('href')
+ end
+ end
+ @checked = true
+ end
+ end
+
+ def test_machine_read_to_xml
+ if @access_url
+ get_auth_url @access_url, {}, :format => :xml
+ last_response.status.should == 200
+ end
+ end
+
+ def test_machine_read_to_json
+ if @access_url
+ get_auth_url @access_url, {}, :format => :json
+ last_response.status.should == 200
+ end
+ end
+
+ end
+end
diff --git a/server/tests/cimi/common/volume_test.rb b/server/tests/cimi/common/volume_test.rb
new file mode 100644
index 0000000..9788309
--- /dev/null
+++ b/server/tests/cimi/common/volume_test.rb
@@ -0,0 +1,60 @@
+# 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.
+#
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+require 'nokogiri'
+
+module CimiUnitTest
+ class VolumeTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ #setup the url to access a machine. this will be used by all the test cases in this class
+ def setup
+ if @checked.nil?
+ get_url '/cimi/cloudEntryPoint'
+ volumes = (last_xml_response/'CloudEntryPoint/volumes')
+ if volumes
+ get_auth_url volumes.attr('href')
+ elements = last_xml_response/'VolumeCollection/volume'
+ if elements.size > 0
+ @access_url = elements[0].attr('href')
+ end
+ end
+ @checked = true
+ end
+ end
+
+ def test_volume_read_to_xml
+ if @access_url
+ get_auth_url @access_url, {}, :format => :xml
+ last_response.status.should == 200
+ end
+ end
+
+ def test_volume_read_to_json
+ if @access_url
+ get_auth_url @access_url, {}, :format => :json
+ last_response.status.should == 200
+ end
+ end
+
+ end
+end
diff --git a/server/tests/common.rb b/server/tests/common.rb
index e86f818..a0272ae 100644
--- a/server/tests/common.rb
+++ b/server/tests/common.rb
@@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
#
+ENV.delete 'API_VERBOSE'
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
$top_srcdir = File::dirname(File::dirname(__FILE__))
@@ -26,7 +27,10 @@ require 'json'
require 'digest/sha1'
require 'base64'
require 'rack/test'
-require 'deltacloud/server'
+
+server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud'
+load File.join($top_srcdir, 'lib', server_dir, 'server.rb')
+
driver
--
1.7.4.1
Re: [PATCH] cimi unit test cases for collection and individual resources
Posted by Tong Li <li...@us.ibm.com>.
Thanks Michael. Did you change public_folder to public before you push this
patch or do you like me to create a patch for that? I really do not like to
see deprecating warnings. It bothers me a lot. Since it is not supported in
earlier Sinatra, we will have to live with that.
Tong Li
Emerging Technologies & Standards
Building 501/B205
litong01@us.ibm.com
From: Michal Fojtik <mf...@redhat.com>
To: deltacloud-dev@incubator.apache.org
Date: 11/01/2011 06:23 AM
Subject: Re: [PATCH] cimi unit test cases for collection and individual
resources
On Oct 31, 2011, at 9:06 PM, email4tong@gmail.com wrote:
Awesome! ACK!
Thanks for doing this Tong. I'll try to improve the tests later
today/tomorrow
and add more XML/JSON checking.
Just one minor nit below :-)
-- Michal
> From: Tong Li <li...@us.ibm.com>
>
> ---
> server/Rakefile | 9 ++
> server/lib/cimi/server.rb | 2 +-
> server/tests/cimi/cimi.rb | 3 +
> server/tests/cimi/common/cloud_entry_point_test.rb | 92 +++++++++++++++
+++++
> .../cimi/common/machine_configuration_test.rb | 60 +++++++++++++
> server/tests/cimi/common/machine_image_test.rb | 60 +++++++++++++
> server/tests/cimi/common/machine_test.rb | 60 +++++++++++++
> server/tests/cimi/common/volume_test.rb | 60 +++++++++++++
> server/tests/common.rb | 6 +-
> 9 files changed, 350 insertions(+), 2 deletions(-)
> create mode 100644 server/tests/cimi/cimi.rb
> create mode 100644 server/tests/cimi/common/cloud_entry_point_test.rb
> create mode 100644 server/tests/cimi/common/machine_configuration_test.rb
> create mode 100644 server/tests/cimi/common/machine_image_test.rb
> create mode 100644 server/tests/cimi/common/machine_test.rb
> create mode 100644 server/tests/cimi/common/volume_test.rb
>
> diff --git a/server/Rakefile b/server/Rakefile
> index 27605d5..f07a6ce 100644
> --- a/server/Rakefile
> +++ b/server/Rakefile
> @@ -62,6 +62,15 @@ namespace :test do
> t.warning = false
> }
> end
> +
> + desc "Run CIMI frontend tests"
> + Rake::TestTask.new "cimi" do |t|
> + t.test_files = ["tests/cimi/cimi.rb", "tests/cimi/common/*_test.rb"]
> + t.options = "-v -v"
> + t.verbose = true
> + t.warning = false
> + end
> +
> end
>
> desc "Call our Test::Unit suite"
> diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb
> index 17285bd..cfb77ea 100644
> --- a/server/lib/cimi/server.rb
> +++ b/server/lib/cimi/server.rb
> @@ -40,7 +40,7 @@ configure do
> set :views, File::join($top_srcdir, 'views', 'cimi')
> # NOTE: Change :public to :public_folder once we update sinatra to 1.3
> # set :public_folder, File::join($top_srcdir, 'public')
> - set :public, File::join($top_srcdir, 'public')
> + set :public_folder, File::join($top_srcdir, 'public')
Tong, could you please preserve the 'public' directive here instead of
'public_folder'?
Thing is that not everyone use the latest Sinatra and this change is not
backward compatible.
However in Sinatra 1.3.x it just throws a deprecation warning, which we can
safely ignore until
we update everything for Sinatra 1.3.
(See the NOTE above ;-)
> # Try to load the driver on startup to fail early if there are issues
> driver
> set :store, STOREROOT
> diff --git a/server/tests/cimi/cimi.rb b/server/tests/cimi/cimi.rb
> new file mode 100644
> index 0000000..8d351ad
> --- /dev/null
> +++ b/server/tests/cimi/cimi.rb
> @@ -0,0 +1,3 @@
> +ENV['API_FRONTEND'] = "cimi"
> +ENV['API_USER'] = 'mockuser'
> +ENV['API_PASSWORD'] = 'mockpassword'
> diff --git a/server/tests/cimi/common/cloud_entry_point_test.rb
b/server/tests/cimi/common/cloud_entry_point_test.rb
> new file mode 100644
> index 0000000..dc7cb36
> --- /dev/null
> +++ b/server/tests/cimi/common/cloud_entry_point_test.rb
> @@ -0,0 +1,92 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class CloudEntryPointTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + def test_it_redirect_client_to_entrypoint
> + get_url '/cimi'
> + last_response.status.should == 301
> + last_response.header['Location'].should ==
'http://example.org/cimi/cloudEntryPoint'
> + end
> +
> + def test_it_return_valid_content_type
> + get_url '/cimi/cloudEntryPoint'
> + last_response.content_type.should ==
'application/CIMI-CloudEntryPoint+xml;charset=utf-8'
> + end
> +
> + def test_it_return_valid_xmlns
> + get_url '/cimi/cloudEntryPoint'
> + (last_xml_response/'CloudEntryPoint').first.namespace.href.should
== CMWG_NAMESPACE
> + end
> +
> + def test_it_return_valid_root_element
> + get_url '/cimi/cloudEntryPoint'
> + last_xml_response.root.name == "CloudEntryPoint"
> + end
> +
> + def test_it_include_all_properties
> + get_url '/cimi/cloudEntryPoint'
> + properties = ['uri', 'name', 'description', 'created', 'volumes',
'machines', 'machineImages', 'machineConfigurations'].sort
> + (last_xml_response/'CloudEntryPoint/*').collect { |p|
p.name }.sort.should == properties
> + end
> +
> + def test_collection_have_href_attributes
> + get_url '/cimi/cloudEntryPoint'
> + collections = [ 'volumes', 'machines', 'machineImages',
'machineConfigurations' ]
> + (last_xml_response/'CloudEntryPoint/*').each do |collection|
> + collection[:href].should_not nil
> + end
> + end
> +
> + def test_collection_href_attributes_are_valid
> + valid_uris = {
> + 'volumes' => 'cimi/volumes',
> + 'machines' => 'cimi/machines',
> + 'machineImages' => 'cimi/machine_images',
> + 'machineConfiguration' => 'cimi/machine_configurations'
> + }
> + get_url '/cimi/cloudEntryPoint'
> + (last_xml_response/'CloudEntryPoint/*').each do |collection|
> + next unless valid_uris.keys.include? collection.name
> + collection[:href].should =~ /#{valid_uris[collection.name]}$/
> + end
> + end
> +
> + def test_it_respond_to_json
> + get_url '/cimi/cloudEntryPoint', {}, :format => :json
> + JSON::parse(last_response.body).class.should == Hash
> + end
> +
> + def test_json_include_all_properties
> + get_url '/cimi/cloudEntryPoint', {}, :format => :json
> + properties = ['uri', 'name', 'description', 'created', 'volumes',
'machines', 'machineImages', 'machineConfigurations'].sort
> + properties.each do |property|
> + JSON::parse(last_response.body).keys.include?(property).should
== true
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/machine_configuration_test.rb
b/server/tests/cimi/common/machine_configuration_test.rb
> new file mode 100644
> index 0000000..c28312f
> --- /dev/null
> +++ b/server/tests/cimi/common/machine_configuration_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class MachineConfigurationTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the
test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + configurations =
last_xml_response/'CloudEntryPoint/machineConfigurations'
> + if configurations
> + get_auth_url configurations.attr('href')
> + elements =
last_xml_response/'MachineConfigurationCollection/machineConfiguration'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_machine_configuration_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_machine_configuration_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/machine_image_test.rb
b/server/tests/cimi/common/machine_image_test.rb
> new file mode 100644
> index 0000000..e271449
> --- /dev/null
> +++ b/server/tests/cimi/common/machine_image_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class MachineImageTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the
test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + images = last_xml_response/'CloudEntryPoint/machineImages'
> + if images
> + get_auth_url images.attr('href')
> + elements =
last_xml_response/'MachineImageCollection/machineImage'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_machine_image_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_machine_image_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/machine_test.rb
b/server/tests/cimi/common/machine_test.rb
> new file mode 100644
> index 0000000..2fda201
> --- /dev/null
> +++ b/server/tests/cimi/common/machine_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class MachineTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the
test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + machines = (last_xml_response/'CloudEntryPoint/machines')
> + if machines
> + get_auth_url machines.attr('href')
> + elements = last_xml_response/'MachineCollection/machine'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_machine_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_machine_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/volume_test.rb
b/server/tests/cimi/common/volume_test.rb
> new file mode 100644
> index 0000000..9788309
> --- /dev/null
> +++ b/server/tests/cimi/common/volume_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class VolumeTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the
test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + volumes = (last_xml_response/'CloudEntryPoint/volumes')
> + if volumes
> + get_auth_url volumes.attr('href')
> + elements = last_xml_response/'VolumeCollection/volume'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_volume_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_volume_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/common.rb b/server/tests/common.rb
> index e86f818..a0272ae 100644
> --- a/server/tests/common.rb
> +++ b/server/tests/common.rb
> @@ -13,6 +13,7 @@
> # License for the specific language governing permissions and limitations
> # under the License.
> #
> +ENV.delete 'API_VERBOSE'
>
> $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
> $top_srcdir = File::dirname(File::dirname(__FILE__))
> @@ -26,7 +27,10 @@ require 'json'
> require 'digest/sha1'
> require 'base64'
> require 'rack/test'
> -require 'deltacloud/server'
> +
> +server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud'
> +load File.join($top_srcdir, 'lib', server_dir, 'server.rb')
> +
>
> driver
>
> --
> 1.7.4.1
>
------------------------------------------------------
Michal Fojtik, mfojtik@redhat.com
Deltacloud API: http://deltacloud.org
Re: [PATCH] cimi unit test cases for collection and individual resources
Posted by Michal Fojtik <mf...@redhat.com>.
On Oct 31, 2011, at 9:06 PM, email4tong@gmail.com wrote:
Awesome! ACK!
Thanks for doing this Tong. I'll try to improve the tests later today/tomorrow
and add more XML/JSON checking.
Just one minor nit below :-)
-- Michal
> From: Tong Li <li...@us.ibm.com>
>
> ---
> server/Rakefile | 9 ++
> server/lib/cimi/server.rb | 2 +-
> server/tests/cimi/cimi.rb | 3 +
> server/tests/cimi/common/cloud_entry_point_test.rb | 92 ++++++++++++++++++++
> .../cimi/common/machine_configuration_test.rb | 60 +++++++++++++
> server/tests/cimi/common/machine_image_test.rb | 60 +++++++++++++
> server/tests/cimi/common/machine_test.rb | 60 +++++++++++++
> server/tests/cimi/common/volume_test.rb | 60 +++++++++++++
> server/tests/common.rb | 6 +-
> 9 files changed, 350 insertions(+), 2 deletions(-)
> create mode 100644 server/tests/cimi/cimi.rb
> create mode 100644 server/tests/cimi/common/cloud_entry_point_test.rb
> create mode 100644 server/tests/cimi/common/machine_configuration_test.rb
> create mode 100644 server/tests/cimi/common/machine_image_test.rb
> create mode 100644 server/tests/cimi/common/machine_test.rb
> create mode 100644 server/tests/cimi/common/volume_test.rb
>
> diff --git a/server/Rakefile b/server/Rakefile
> index 27605d5..f07a6ce 100644
> --- a/server/Rakefile
> +++ b/server/Rakefile
> @@ -62,6 +62,15 @@ namespace :test do
> t.warning = false
> }
> end
> +
> + desc "Run CIMI frontend tests"
> + Rake::TestTask.new "cimi" do |t|
> + t.test_files = ["tests/cimi/cimi.rb", "tests/cimi/common/*_test.rb"]
> + t.options = "-v -v"
> + t.verbose = true
> + t.warning = false
> + end
> +
> end
>
> desc "Call our Test::Unit suite"
> diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb
> index 17285bd..cfb77ea 100644
> --- a/server/lib/cimi/server.rb
> +++ b/server/lib/cimi/server.rb
> @@ -40,7 +40,7 @@ configure do
> set :views, File::join($top_srcdir, 'views', 'cimi')
> # NOTE: Change :public to :public_folder once we update sinatra to 1.3
> # set :public_folder, File::join($top_srcdir, 'public')
> - set :public, File::join($top_srcdir, 'public')
> + set :public_folder, File::join($top_srcdir, 'public')
Tong, could you please preserve the 'public' directive here instead of 'public_folder'?
Thing is that not everyone use the latest Sinatra and this change is not backward compatible.
However in Sinatra 1.3.x it just throws a deprecation warning, which we can safely ignore until
we update everything for Sinatra 1.3.
(See the NOTE above ;-)
> # Try to load the driver on startup to fail early if there are issues
> driver
> set :store, STOREROOT
> diff --git a/server/tests/cimi/cimi.rb b/server/tests/cimi/cimi.rb
> new file mode 100644
> index 0000000..8d351ad
> --- /dev/null
> +++ b/server/tests/cimi/cimi.rb
> @@ -0,0 +1,3 @@
> +ENV['API_FRONTEND'] = "cimi"
> +ENV['API_USER'] = 'mockuser'
> +ENV['API_PASSWORD'] = 'mockpassword'
> diff --git a/server/tests/cimi/common/cloud_entry_point_test.rb b/server/tests/cimi/common/cloud_entry_point_test.rb
> new file mode 100644
> index 0000000..dc7cb36
> --- /dev/null
> +++ b/server/tests/cimi/common/cloud_entry_point_test.rb
> @@ -0,0 +1,92 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class CloudEntryPointTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + def test_it_redirect_client_to_entrypoint
> + get_url '/cimi'
> + last_response.status.should == 301
> + last_response.header['Location'].should == 'http://example.org/cimi/cloudEntryPoint'
> + end
> +
> + def test_it_return_valid_content_type
> + get_url '/cimi/cloudEntryPoint'
> + last_response.content_type.should == 'application/CIMI-CloudEntryPoint+xml;charset=utf-8'
> + end
> +
> + def test_it_return_valid_xmlns
> + get_url '/cimi/cloudEntryPoint'
> + (last_xml_response/'CloudEntryPoint').first.namespace.href.should == CMWG_NAMESPACE
> + end
> +
> + def test_it_return_valid_root_element
> + get_url '/cimi/cloudEntryPoint'
> + last_xml_response.root.name == "CloudEntryPoint"
> + end
> +
> + def test_it_include_all_properties
> + get_url '/cimi/cloudEntryPoint'
> + properties = ['uri', 'name', 'description', 'created', 'volumes', 'machines', 'machineImages', 'machineConfigurations'].sort
> + (last_xml_response/'CloudEntryPoint/*').collect { |p| p.name }.sort.should == properties
> + end
> +
> + def test_collection_have_href_attributes
> + get_url '/cimi/cloudEntryPoint'
> + collections = [ 'volumes', 'machines', 'machineImages', 'machineConfigurations' ]
> + (last_xml_response/'CloudEntryPoint/*').each do |collection|
> + collection[:href].should_not nil
> + end
> + end
> +
> + def test_collection_href_attributes_are_valid
> + valid_uris = {
> + 'volumes' => 'cimi/volumes',
> + 'machines' => 'cimi/machines',
> + 'machineImages' => 'cimi/machine_images',
> + 'machineConfiguration' => 'cimi/machine_configurations'
> + }
> + get_url '/cimi/cloudEntryPoint'
> + (last_xml_response/'CloudEntryPoint/*').each do |collection|
> + next unless valid_uris.keys.include? collection.name
> + collection[:href].should =~ /#{valid_uris[collection.name]}$/
> + end
> + end
> +
> + def test_it_respond_to_json
> + get_url '/cimi/cloudEntryPoint', {}, :format => :json
> + JSON::parse(last_response.body).class.should == Hash
> + end
> +
> + def test_json_include_all_properties
> + get_url '/cimi/cloudEntryPoint', {}, :format => :json
> + properties = ['uri', 'name', 'description', 'created', 'volumes', 'machines', 'machineImages', 'machineConfigurations'].sort
> + properties.each do |property|
> + JSON::parse(last_response.body).keys.include?(property).should == true
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/machine_configuration_test.rb b/server/tests/cimi/common/machine_configuration_test.rb
> new file mode 100644
> index 0000000..c28312f
> --- /dev/null
> +++ b/server/tests/cimi/common/machine_configuration_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class MachineConfigurationTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + configurations = last_xml_response/'CloudEntryPoint/machineConfigurations'
> + if configurations
> + get_auth_url configurations.attr('href')
> + elements = last_xml_response/'MachineConfigurationCollection/machineConfiguration'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_machine_configuration_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_machine_configuration_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/machine_image_test.rb b/server/tests/cimi/common/machine_image_test.rb
> new file mode 100644
> index 0000000..e271449
> --- /dev/null
> +++ b/server/tests/cimi/common/machine_image_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class MachineImageTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + images = last_xml_response/'CloudEntryPoint/machineImages'
> + if images
> + get_auth_url images.attr('href')
> + elements = last_xml_response/'MachineImageCollection/machineImage'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_machine_image_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_machine_image_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/machine_test.rb b/server/tests/cimi/common/machine_test.rb
> new file mode 100644
> index 0000000..2fda201
> --- /dev/null
> +++ b/server/tests/cimi/common/machine_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class MachineTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + machines = (last_xml_response/'CloudEntryPoint/machines')
> + if machines
> + get_auth_url machines.attr('href')
> + elements = last_xml_response/'MachineCollection/machine'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_machine_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_machine_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/cimi/common/volume_test.rb b/server/tests/cimi/common/volume_test.rb
> new file mode 100644
> index 0000000..9788309
> --- /dev/null
> +++ b/server/tests/cimi/common/volume_test.rb
> @@ -0,0 +1,60 @@
> +# 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.
> +#
> +
> +$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
> +require 'tests/common'
> +require 'nokogiri'
> +
> +module CimiUnitTest
> + class VolumeTest < Test::Unit::TestCase
> + include Rack::Test::Methods
> +
> + def app
> + Sinatra::Application
> + end
> +
> + #setup the url to access a machine. this will be used by all the test cases in this class
> + def setup
> + if @checked.nil?
> + get_url '/cimi/cloudEntryPoint'
> + volumes = (last_xml_response/'CloudEntryPoint/volumes')
> + if volumes
> + get_auth_url volumes.attr('href')
> + elements = last_xml_response/'VolumeCollection/volume'
> + if elements.size > 0
> + @access_url = elements[0].attr('href')
> + end
> + end
> + @checked = true
> + end
> + end
> +
> + def test_volume_read_to_xml
> + if @access_url
> + get_auth_url @access_url, {}, :format => :xml
> + last_response.status.should == 200
> + end
> + end
> +
> + def test_volume_read_to_json
> + if @access_url
> + get_auth_url @access_url, {}, :format => :json
> + last_response.status.should == 200
> + end
> + end
> +
> + end
> +end
> diff --git a/server/tests/common.rb b/server/tests/common.rb
> index e86f818..a0272ae 100644
> --- a/server/tests/common.rb
> +++ b/server/tests/common.rb
> @@ -13,6 +13,7 @@
> # License for the specific language governing permissions and limitations
> # under the License.
> #
> +ENV.delete 'API_VERBOSE'
>
> $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
> $top_srcdir = File::dirname(File::dirname(__FILE__))
> @@ -26,7 +27,10 @@ require 'json'
> require 'digest/sha1'
> require 'base64'
> require 'rack/test'
> -require 'deltacloud/server'
> +
> +server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud'
> +load File.join($top_srcdir, 'lib', server_dir, 'server.rb')
> +
>
> driver
>
> --
> 1.7.4.1
>
------------------------------------------------------
Michal Fojtik, mfojtik@redhat.com
Deltacloud API: http://deltacloud.org