You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/08/03 11:10:42 UTC

[PATCH core 5/5] CIMI: Added initial support for CIMI collections tests

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/Rakefile                                    |    2 +
 .../cimi/collections/cloud_entry_point_test.rb     |   46 ++++++++++++++++++++
 server/tests/cimi/collections/common.rb            |   26 +++++++++++
 .../tests/cimi/collections/machine_images_test.rb  |   44 +++++++++++++++++++
 server/tests/cimi/collections/machines_test.rb     |   41 +++++++++++++++++
 .../cimi/spec/cimi/model/machine_admin_spec.rb     |    3 ++
 .../spec/cimi/model/machine_configuration_spec.rb  |    3 +-
 .../cimi/spec/cimi/model/machine_image_spec.rb     |    2 +
 server/tests/cimi/spec/cimi/model/machine_spec.rb  |    2 +
 .../cimi/spec/cimi/model/machine_template_spec.rb  |    2 +
 server/tests/cimi/spec/cimi/model/schema_spec.rb   |    2 +
 .../spec/cimi/model/volume_configuration_spec.rb   |    2 +
 .../cimi/spec/cimi/model/volume_image_spec.rb      |    2 +
 server/tests/cimi/spec/cimi/model/volume_spec.rb   |    2 +
 .../cimi/spec/cimi/model/volume_template_spec.rb   |    2 +
 server/tests/cimi/spec/spec_helper.rb              |    1 +
 16 files changed, 181 insertions(+), 1 deletion(-)
 create mode 100644 server/tests/cimi/collections/cloud_entry_point_test.rb
 create mode 100644 server/tests/cimi/collections/common.rb
 create mode 100644 server/tests/cimi/collections/machine_images_test.rb
 create mode 100644 server/tests/cimi/collections/machines_test.rb

diff --git a/server/Rakefile b/server/Rakefile
index ec3984b..184fe6c 100644
--- a/server/Rakefile
+++ b/server/Rakefile
@@ -185,11 +185,13 @@ namespace :test do
   namespace :cimi do
     Rake::TestTask.new(:models) do |t|
       t.ruby_opts << '-r./tests/cimi/spec/spec_helper.rb'    # Load SimpleCov when COVERAGE=1 is set
+      t.ruby_opts << '-r./tests/test_helper.rb'    # Load SimpleCov when COVERAGE=1 is set
       unless RUBY_VERSION < '1.9.0'
         t.loader = :testrb
       end
       t.test_files = FileList[
         'tests/cimi/spec/cimi/model/*spec.rb',        # CIMI frontend serialization API tests
+        'tests/cimi/collections/*test.rb',        # CIMI frontend API tests
       ]
     end
   end
diff --git a/server/tests/cimi/collections/cloud_entry_point_test.rb b/server/tests/cimi/collections/cloud_entry_point_test.rb
new file mode 100644
index 0000000..95b09c1
--- /dev/null
+++ b/server/tests/cimi/collections/cloud_entry_point_test.rb
@@ -0,0 +1,46 @@
+require 'rubygems'
+require 'require_relative'
+
+require 'minitest/autorun'
+require_relative './common.rb'
+
+describe CIMI::Collections::CloudEntryPoint do
+
+  before do
+    def app; CIMI::API; end
+    @collection = CIMI::Collections.collection(:cloudEntryPoint)
+  end
+
+  it 'has index operation' do
+    @collection.operation(:index).must_equal Sinatra::Rabbit::CloudentrypointCollection::IndexOperation
+  end
+
+  it 'set the CIMI-Version header' do
+    get root_url
+    headers['X-CIMI-Specification-Version'].wont_be_nil
+    headers['X-CIMI-Specification-Version'].must_equal '1.0.0'
+  end
+
+  it 'advertise CIMI collections in XML format' do
+    get root_url + '/cloudEntryPoint'
+    xml.root.name.must_equal 'CloudEntryPoint'
+    (xml.root/'description').first.text.wont_be_empty
+    (xml.root/'id').first.text.wont_be_empty
+  end
+
+  it 'advertise CIMI collections in JSON format' do
+    get root_url + '/cloudEntryPoint?format=json'
+    json.wont_be_empty
+    json['description'].wont_be_empty
+    json['id'].wont_be_empty
+  end
+
+  it 'allow to force authentication using force_auth parameter in URI' do
+    get root_url + '/cloudEntryPoint?force_auth=1'
+    status.must_equal 401
+    authorize 'mockuser', 'mockpassword'
+    get root_url + '/cloudEntryPoint?force_auth=1'
+    status.must_equal 200
+  end
+
+end
diff --git a/server/tests/cimi/collections/common.rb b/server/tests/cimi/collections/common.rb
new file mode 100644
index 0000000..0706dc4
--- /dev/null
+++ b/server/tests/cimi/collections/common.rb
@@ -0,0 +1,26 @@
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud_rack.rb')
+
+unless Time.respond_to? :be
+  require_relative '../../test_helper.rb'
+end
+
+# Set the default driver used for server API tests
+#
+ENV['API_DRIVER'] = 'mock'
+
+# Setup Deltacloud::API Sinatra instance
+#
+unless Deltacloud::config[:cimi]
+  Deltacloud::configure(:cimi) do |server|
+    server.root_url '/cimi'
+    server.version '1.0.0'
+    server.klass 'CIMI::API'
+    server.logger Rack::DeltacloudLogger.setup(ENV['API_LOG'], ENV['API_VERBOSE'])
+  end
+
+  Deltacloud.require_frontend!(:cimi)
+end
+
+def root_url(url=''); Deltacloud.config[:cimi].root_url + url; end
+def formats; [ 'application/xml', 'application/json' ]; end
+def json; JSON::parse(response_body); end
diff --git a/server/tests/cimi/collections/machine_images_test.rb b/server/tests/cimi/collections/machine_images_test.rb
new file mode 100644
index 0000000..c5367a3
--- /dev/null
+++ b/server/tests/cimi/collections/machine_images_test.rb
@@ -0,0 +1,44 @@
+require 'rubygems'
+require 'require_relative'
+require 'minitest/autorun'
+require_relative './common.rb'
+
+describe CIMI::Collections::MachineImages do
+
+  before do
+    def app; CIMI::API; end
+    authorize 'mockuser', 'mockpassword'
+    @collection = CIMI::Collections.collection(:machine_images)
+  end
+
+  it 'has index operation' do
+    @collection.operation(:index).must_equal Sinatra::Rabbit::MachineImagesCollection::IndexOperation
+  end
+
+  it 'has show operation' do
+    @collection.operation(:show).must_equal Sinatra::Rabbit::MachineImagesCollection::ShowOperation
+  end
+
+  it 'returns list of images in various formats with index operation' do
+    formats.each do |format|
+      header 'Accept', format
+      get root_url + '/machine_images'
+      status.must_equal 200
+    end
+  end
+
+  it 'should allow to retrieve the single image' do
+    get root_url '/machine_images/img1'
+    status.must_equal 200
+    xml.root.name.must_equal 'MachineImage'
+  end
+
+  it 'should allow to filter using CIMISelect' do
+    get root_url '/machine_images?CIMISelect=description'
+    status.must_equal 200
+    xml.root.name.must_equal 'MachineImageCollection'
+    (xml/'description').wont_be_empty
+    (xml/'id').must_be_empty
+  end
+
+end
diff --git a/server/tests/cimi/collections/machines_test.rb b/server/tests/cimi/collections/machines_test.rb
new file mode 100644
index 0000000..328b712
--- /dev/null
+++ b/server/tests/cimi/collections/machines_test.rb
@@ -0,0 +1,41 @@
+require 'rubygems'
+require 'require_relative'
+require 'minitest/autorun'
+require_relative './common.rb'
+
+describe CIMI::Collections::Machines do
+
+  before do
+    def app; CIMI::API; end
+    authorize 'mockuser', 'mockpassword'
+    @collection = CIMI::Collections.collection(:machines)
+  end
+
+  it 'has index operation' do
+    @collection.operation(:index).must_equal Sinatra::Rabbit::MachinesCollection::IndexOperation
+  end
+
+  it 'has show operation' do
+    @collection.operation(:show).must_equal Sinatra::Rabbit::MachinesCollection::ShowOperation
+  end
+
+  it 'returns list of machines in various formats with index operation' do
+    formats.each do |format|
+      header 'Accept', format
+      get root_url + '/machines'
+      status.must_equal 200
+    end
+  end
+
+  it 'should allow to retrieve the single machine' do
+    get root_url '/machines/inst1'
+    status.must_equal 200
+    xml.root.name.must_equal 'Machine'
+  end
+
+  it 'should not return non-existing machine' do
+    get root_url '/machines/unknown-machine'
+    status.must_equal 404
+  end
+
+end
diff --git a/server/tests/cimi/spec/cimi/model/machine_admin_spec.rb b/server/tests/cimi/spec/cimi/model/machine_admin_spec.rb
index 132272d..3fc272c 100644
--- a/server/tests/cimi/spec/cimi/model/machine_admin_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/machine_admin_spec.rb
@@ -14,6 +14,9 @@
 # under the License.
 #
 
+require 'rubygems'
+require 'require_relative'
+
 if require 'minitest/autorun'
   require_relative '../../spec_helper.rb'
 end
diff --git a/server/tests/cimi/spec/cimi/model/machine_configuration_spec.rb b/server/tests/cimi/spec/cimi/model/machine_configuration_spec.rb
index e59fcc0..f990871 100644
--- a/server/tests/cimi/spec/cimi/model/machine_configuration_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/machine_configuration_spec.rb
@@ -13,7 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
-
+require 'rubygems'
+require 'require_relative'
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
 describe "MachineConfiguration model" do
diff --git a/server/tests/cimi/spec/cimi/model/machine_image_spec.rb b/server/tests/cimi/spec/cimi/model/machine_image_spec.rb
index 7eef29a..dd5ddbe 100644
--- a/server/tests/cimi/spec/cimi/model/machine_image_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/machine_image_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/machine_spec.rb b/server/tests/cimi/spec/cimi/model/machine_spec.rb
index b10ecfe..ad9f11e 100644
--- a/server/tests/cimi/spec/cimi/model/machine_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/machine_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/machine_template_spec.rb b/server/tests/cimi/spec/cimi/model/machine_template_spec.rb
index 7210c92..97bdce9 100644
--- a/server/tests/cimi/spec/cimi/model/machine_template_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/machine_template_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/schema_spec.rb b/server/tests/cimi/spec/cimi/model/schema_spec.rb
index c5619b1..8b6de48 100644
--- a/server/tests/cimi/spec/cimi/model/schema_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/schema_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/volume_configuration_spec.rb b/server/tests/cimi/spec/cimi/model/volume_configuration_spec.rb
index c12ac05..0f26edc 100644
--- a/server/tests/cimi/spec/cimi/model/volume_configuration_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/volume_configuration_spec.rb
@@ -14,6 +14,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/volume_image_spec.rb b/server/tests/cimi/spec/cimi/model/volume_image_spec.rb
index a6c4a20..10509da 100644
--- a/server/tests/cimi/spec/cimi/model/volume_image_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/volume_image_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/volume_spec.rb b/server/tests/cimi/spec/cimi/model/volume_spec.rb
index 1176add..c3bad88 100644
--- a/server/tests/cimi/spec/cimi/model/volume_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/volume_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/cimi/model/volume_template_spec.rb b/server/tests/cimi/spec/cimi/model/volume_template_spec.rb
index 444baa7..4bf969c 100644
--- a/server/tests/cimi/spec/cimi/model/volume_template_spec.rb
+++ b/server/tests/cimi/spec/cimi/model/volume_template_spec.rb
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
+require 'rubygems'
+require 'require_relative'
 
 require_relative '../../spec_helper.rb' if require 'minitest/autorun'
 
diff --git a/server/tests/cimi/spec/spec_helper.rb b/server/tests/cimi/spec/spec_helper.rb
index 3cde6cf..c2ea2d1 100644
--- a/server/tests/cimi/spec/spec_helper.rb
+++ b/server/tests/cimi/spec/spec_helper.rb
@@ -14,6 +14,7 @@
 # under the License.
 #
 
+require 'rubygems'
 require 'minitest/autorun'
 require 'minitest/spec'
 require 'xmlsimple'
-- 
1.7.10.2