From: Jan Provaznik <[email protected]> --- src/features/step_definitions/template_steps.rb | 46 ++++++++ src/features/support/custom.rb | 10 ++ src/features/support/paths.rb | 9 ++ src/features/template.feature | 37 ++++++ src/spec/controllers/templates_controller_spec.rb | 46 ++++---- src/spec/factories/image.rb | 10 +- src/spec/factories/instance.rb | 2 +- src/spec/factories/template.rb | 21 ++++ src/spec/fixtures/packagegroups.json | 54 +++++++++ src/spec/fixtures/packages.json | 128 +++++++++++++++++++++ src/spec/fixtures/repositories.json | 19 +++ src/spec/models/image_spec.rb | 52 ++------- src/spec/models/instance_spec.rb | 6 +- src/spec/models/template_spec.rb | 19 +++ src/spec/utils/repository_manager.rb | 45 +++++++ 15 files changed, 426 insertions(+), 78 deletions(-) create mode 100644 src/features/step_definitions/template_steps.rb create mode 100644 src/features/template.feature create mode 100644 src/spec/factories/template.rb create mode 100644 src/spec/fixtures/packagegroups.json create mode 100644 src/spec/fixtures/packages.json create mode 100644 src/spec/fixtures/repositories.json create mode 100644 src/spec/models/template_spec.rb create mode 100644 src/spec/utils/repository_manager.rb
diff --git a/src/features/step_definitions/template_steps.rb b/src/features/step_definitions/template_steps.rb new file mode 100644 index 0000000..5bb30b8 --- /dev/null +++ b/src/features/step_definitions/template_steps.rb @@ -0,0 +1,46 @@ +Given /^There is a mock pulp repository$/ do + dir = File.join(Rails.root, 'spec', 'fixtures') + hydra = Typhoeus::Hydra.hydra + hydra.stub(:get, "http://pulptest/repositories/").and_return( + Typhoeus::Response.new(:code => 200, + :body => File.read(File.join(dir, 'repositories.json')))) + hydra.stub(:get, "http://pulptest/repositories/jboss/packagegroups/").and_return( + Typhoeus::Response.new(:code => 200, + :body => File.read(File.join(dir, 'packagegroups.json')))) + hydra.stub(:get, "http://pulptest/repositories/jboss/packages/").and_return( + Typhoeus::Response.new(:code => 200, + :body => File.read(File.join(dir, 'packages.json')))) + +end + +Given /^There is a "([^"]*)" template$/ do |name| + @template = Template.new + @template.xml.name = name + @template.save_xml! +end + +Given /^there is a package group$/ do + RepositoryManager.new.all_groups.should have_at_least(1).item +end + +Given /^no package is selected$/ do + @template.xml.packages = [] +end + +Given /^there is one selected package$/ do + pkg = RepositoryManager.new.all_packages.first + @template.xml.packages = [] + @template.xml.add_package(pkg['name'], nil) + @template.save_xml! +end + +# "I jump" is used instead of "I am" because "I am" is already defined in +# web_steps.rb and in this case I have to use @template as parameter which "I +# am" doesn't support +Given /^I jump on the "([^"]*)" template software page$/ do |name| + visit url_for :action => 'software', :controller => 'templates', :id => @template +end + +Then /^I should have a template named "([^"]*)"$/ do |name| + Template.first(:order => 'created_at DESC').xml.name.should eql(name) +end diff --git a/src/features/support/custom.rb b/src/features/support/custom.rb index 73a6300..3adbea3 100644 --- a/src/features/support/custom.rb +++ b/src/features/support/custom.rb @@ -44,3 +44,13 @@ CloudAccount.class_eval do @key end end + +RepositoryManager.class_eval do + def config + [{ + 'baseurl' => 'http://pulptest', + 'yumurl' => 'http://pulptest', + 'type' => 'pulp', + }] + end +end diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb index 537dd31..6b45674 100644 --- a/src/features/support/paths.rb +++ b/src/features/support/paths.rb @@ -65,6 +65,15 @@ module NavigationHelpers when /the new permission page/ url_for :action => 'new', :controller => 'permissions', :only_path => true + when /the new template page/ + url_for :action => 'new', :controller => 'templates', :only_path => true + + when /the template services page/ + url_for :action => 'services', :controller => 'templates', :only_path => true + + when /the template software page/ + url_for :action => 'software', :controller => 'templates', :only_path => true + # Add more mappings here. # Here is an example that pulls values out of the Regexp: # diff --git a/src/features/template.feature b/src/features/template.feature new file mode 100644 index 0000000..c913423 --- /dev/null +++ b/src/features/template.feature @@ -0,0 +1,37 @@ +Feature: Manage Templates + In order to manage my cloud infrastructure + As a user + I want to manage templates + + Background: + Given I am an authorised user + And I am logged in + And There is a mock pulp repository + + Scenario: Add basic info to a new Template + Given I am on the homepage + When I follow "Create a Template" + Then I should be on the new template page + And I should see "Create a New Template" + When I fill in the following: + | xml_name | mocktemplate | + | xml_platform | rhel | + | xml_description | mockdesc | + And I press "Next" + Then I should be on the template services page + And I should have a template named "mocktemplate" + + Scenario: Add a package to the template + Given There is a "mocktemplate" template + And I am on the template software page + And there is a package group + And no package is selected + When I follow "Select" within ".selection_list" + Then I should see "Remove" within "#selected_packages" + + Scenario: Remove a package from the template + Given There is a "mocktemplate" template + And there is one selected package + And I jump on the "mocktemplate" template software page + When I follow "Remove" within "#selected_packages" + Then I should not see "Remove" within "#selected_packages" diff --git a/src/spec/controllers/templates_controller_spec.rb b/src/spec/controllers/templates_controller_spec.rb index af4fb2c..ba27ecc 100644 --- a/src/spec/controllers/templates_controller_spec.rb +++ b/src/spec/controllers/templates_controller_spec.rb @@ -10,23 +10,23 @@ describe TemplatesController do activate_authlogic end - it "should allow a user with image_modify permission to create new image_descriptor" do + it "should allow a user with image_modify permission to create new template" do UserSession.create(@admin) lambda do post :new, :xml => { :name => 'fooimg', :platform => 'fedora' }, :next => true - end.should change(ImageDescriptor, :count).by(1) - id = ImageDescriptor.find(:first, :order => 'created_at DESC').id + end.should change(Template, :count).by(1) + id = Template.find(:first, :order => 'created_at DESC').id response.should redirect_to("http://test.host/templates/services/#{id}") end it "should allow a user with image_modify permission to add service" do UserSession.create(@admin) - img = ImageDescriptor.new(:xml => '') + tpl = Template.new(:xml => '') lambda do - img.save! - end.should change(ImageDescriptor, :count).by(1) - post :services, :xml => { :xml => {:services => ['jboss']} }, :next => true, :id => img.id - response.should redirect_to("http://test.host/templates/software/#{img.id}") + tpl.save! + end.should change(Template, :count).by(1) + post :services, :xml => { :xml => {:services => ['jboss']} }, :next => true, :id => tpl.id + response.should redirect_to("http://test.host/templates/software/#{tpl.id}") end # FIXME: these two tests depends on jboss repository which defines 'JBoss Core @@ -35,32 +35,32 @@ describe TemplatesController do # #it "should allow a user with image_modify permission to add and remove a group" do # UserSession.create(@admin) - # img = ImageDescriptor.new(:xml => '') + # tpl = Template.new(:xml => '') # lambda do - # img.save! - # end.should change(ImageDescriptor, :count).by(1) - # post :select_group, :id => img.id, :group => 'JBoss Core Packages' - # response.should redirect_to("http://test.host/templates/software/#{img.id}") - # post :remove_group, :id => img.id, :group => 'JBoss Core Packages' - # response.should redirect_to("http://test.host/templates/software/#{img.id}") + # tpl.save! + # end.should change(Template, :count).by(1) + # post :select_group, :id => tpl.id, :group => 'JBoss Core Packages' + # response.should redirect_to("http://test.host/templates/software/#{tpl.id}") + # post :remove_group, :id => tpl.id, :group => 'JBoss Core Packages' + # response.should redirect_to("http://test.host/templates/software/#{tpl.id}") #end #it "should allow a user with image_modify permission to add a package" do # UserSession.create(@admin) - # img = ImageDescriptor.new(:xml => '') + # tpl = Template.new(:xml => '') # lambda do - # img.save! - # post :select_package, :id => img.id, :package => 'jboss-rails', :group => 'JBoss Core Packages' - # end.should change(ImageDescriptor, :count).by(1) - # response.should redirect_to("http://test.host/templates/software/#{img.id}") + # tpl.save! + # post :select_package, :id => tpl.id, :package => 'jboss-rails', :group => 'JBoss Core Packages' + # end.should change(Template, :count).by(1) + # response.should redirect_to("http://test.host/templates/software/#{tpl.id}") #end it "should allow a user with image_modify permission to build image descriptor" do UserSession.create(@admin) - img = ImageDescriptor.new + tpl = Factory :template lambda do - post :summary, :id => img.id, :targets => ['rhevm'], :build => true - end.should change(ImageDescriptorTarget, :count).by(1) + post :summary, :id => tpl.id, :targets => ['ec2'], :build => true + end.should change(Image, :count).by(1) end it "should deny access to new template ui without image modify permission" do diff --git a/src/spec/factories/image.rb b/src/spec/factories/image.rb index cc0bc17..293ac22 100644 --- a/src/spec/factories/image.rb +++ b/src/spec/factories/image.rb @@ -3,11 +3,7 @@ Factory.define :image do |i| i.sequence(:name) { |n| "image#{n}" } - i.sequence(:external_key) { |n| "key#{n}" } - i.architecture 'i686' - i.provider { |p| Provider.new } -end - -Factory.define :front_end_image, :parent => :image do |i| - i.provider nil + i.status 'queued' + i.target 'ec2' + i.association(:template) end diff --git a/src/spec/factories/instance.rb b/src/spec/factories/instance.rb index e68ac0a..6bb83b2 100644 --- a/src/spec/factories/instance.rb +++ b/src/spec/factories/instance.rb @@ -3,7 +3,7 @@ Factory.define :instance do |i| i.sequence(:external_key) { |n| "key#{n}" } i.association :hardware_profile, :factory => :mock_hwp1 i.association :cloud_account, :factory => :mock_cloud_account - i.association :image, :factory => :image + i.association :template, :factory => :template i.association :pool, :factory => :pool i.association :owner, :factory => :user i.state "running" diff --git a/src/spec/factories/template.rb b/src/spec/factories/template.rb new file mode 100644 index 0000000..4774148 --- /dev/null +++ b/src/spec/factories/template.rb @@ -0,0 +1,21 @@ +Factory.define :template do |i| + i.sequence(:name) { |n| "template#{n}" } + i.xml <<EOF +<image> + <name>tpl</name> + <repos> + <repo>https://localhost/pulp/repos/jboss2</repo> + </repos> + <os>fedora</os> + <description/> + <services/> + <groups> + <group>JBoss Core Packages</group> + </groups> + <packages> + <package><name>jboss-as5</name><group>JBoss Core Packages</group></package> + <package><name>jboss-jgroups</name><group>JBoss Core Packages</group></package> + </packages> +</image> +EOF +end diff --git a/src/spec/fixtures/packagegroups.json b/src/spec/fixtures/packagegroups.json new file mode 100644 index 0000000..9dd6008 --- /dev/null +++ b/src/spec/fixtures/packagegroups.json @@ -0,0 +1,54 @@ +{ "JBoss Social Networking Web Application" : { "_id" : "JBoss Social Networking Web Application", + "conditional_package_names" : { }, + "default" : true, + "default_package_names" : [ ], + "description" : "This group contains a JBoss social networking application", + "display_order" : 1024, + "id" : "JBoss Social Networking Web Application", + "immutable" : true, + "langonly" : null, + "mandatory_package_names" : [ ], + "name" : "JBoss Social Networking Web Application", + "optional_package_names" : [ "JSocNet" ], + "repo_defined" : true, + "translated_description" : { }, + "translated_name" : { }, + "user_visible" : true + }, + "JBoss Drools" : { "_id" : "JBoss Drools", + "conditional_package_names" : { }, + "default" : true, + "default_package_names" : [ ], + "description" : "This group contains the JBoss Drools component", + "display_order" : 1024, + "id" : "JBoss Drools", + "immutable" : true, + "langonly" : null, + "mandatory_package_names" : [ ], + "name" : "JBoss Drools", + "optional_package_names" : [ "drools-guvnor" ], + "repo_defined" : true, + "translated_description" : { }, + "translated_name" : { }, + "user_visible" : true + }, + "JBoss" : { "_id" : "JBoss", + "conditional_package_names" : { }, + "default" : true, + "default_package_names" : [ "jboss-jgroups", + "jboss-as5" + ], + "description" : "This group is a collection of core JBoss packages", + "display_order" : 1024, + "id" : "JBoss", + "immutable" : true, + "langonly" : null, + "mandatory_package_names" : [ ], + "name" : "JBoss Core Packages", + "optional_package_names" : [ "jboss- rails" ], + "repo_defined" : true, + "translated_description" : { }, + "translated_name" : { }, + "user_visible" : true + } +} diff --git a/src/spec/fixtures/packages.json b/src/spec/fixtures/packages.json new file mode 100644 index 0000000..bb98881 --- /dev/null +++ b/src/spec/fixtures/packages.json @@ -0,0 +1,128 @@ +{ "101f17d4-018b-4af4-bfed-46b142c8b721" : { "_id" : "101f17d4-018b-4af4-bfed-46b142c8b721", + "_ns" : "packages", + "arch" : "noarch", + "checksum" : { "sha256" : "ec00a837f6995b4af77b0eaa5edf69570e0149a8" }, + "description" : "The Drools Guvnor Repository for JBoss AS 5", + "download_url" : "http://localhost//pub/jboss/J-SocialNet-1.0.1.GA-1.noarch.rpm", + "epoch" : "0", + "filename" : "J-SocialNet-1.0.1.GA-1.noarch.rpm", + "id" : "101f17d4-018b-4af4-bfed-46b142c8b721", + "name" : "J-SocialNet", + "provides" : [ "J-SocialNet" ], + "release" : "1", + "requires" : [ "/bin/sh", + "jboss- as5" + ], + "vendor" : null, + "version" : "1.0.1. GA" + }, + "124eef28-0d3d-46eb-8b8b-ae1acba104e0" : { "_id" : "124eef28-0d3d-46eb-8b8b-ae1acba104e0", + "_ns" : "packages", + "arch" : "noarch", + "checksum" : { "sha256" : "cf09c311b72b9b0fb0a93ab94fa40aa8c31550de" }, + "description" : "JBoss JGroups", + "download_url" : "http://localhost//pub/jboss/jboss-jgroups-2.6.7.GA-1. noarch.rpm", + "epoch" : "0", + "filename" : "jboss-jgroups-2.6.7.GA-1.noarch.rpm", + "id" : "124eef28-0d3d-46eb-8b8b-ae1acba104e0", + "name" : "jboss-jgroups", + "provides" : [ "jboss-jgroups" ], + "release" : "1", + "requires" : [ "/bin/sh" ], + "vendor" : null, + "version" : "2.6.7.GA" + }, + "1668d633-b86d-4cf0-86d9-745b023c1a16" : { "_id" : "1668d633-b86d-4cf0-86d9-745b023c1a16", + "_ns" : "packages", + "arch" : "noarch", + "checksum" : { "sha256" : "7b3c66d475357a7d1fc1697f81bc8076388d35aa" }, + "description" : "The JBoss Rails deployer for AS5", + "download_url" : "http://localhost//pub/jboss/jboss-rails-1.0.0.Beta3-1.noarch.rpm", + "epoch" : "0", + "filename" : "jboss-rails-1.0.0.Beta3-1.noarch.rpm", + "id" : "1668d633-b86d-4cf0-86d9-745b023c1a16", + "name" : "jboss-rails", + "provides" : [ "perl(jdbc_adapter)", + "jboss-rails" + ], + "release" : "1", + "requires" : [ "/bin/sh" ], + "vendor" : null, + "version" : "1.0.0.Beta3" + }, + "229f8733-0996-4d38-af2d-8e10ceea6661" : { "_id" : "229f8733-0996-4d38-af2d-8e10ceea6661", + "_ns" : "packages", + "arch" : "noarch", + "checksum" : { "sha256" : "5148c747ced6a5e25728e49b55f97b5cb8d2e7a0" }, + "description" : "The Drools Guvnor Repository for JBoss AS 5", + "download_url" : "http://localhost//pub/jboss/drools-guvnor-5.0.1.GA-1.noarch.rpm", + "epoch" : "0", + "filename" : "drools-guvnor-5.0.1.GA-1.noarch.rpm", + "id" : "229f8733-0996-4d38-af2d-8e10ceea6661", + "name" : "drools-guvnor", + "provides" : [ "drools-guvnor" ], + "release" : "1", + "requires" : [ "/bin/sh", + "jboss-as5" + ], + "vendor" : null, + "version" : "5.0.1.GA" + }, + "9fcca05a-af6e-47f0-a4ea-0e31d4a38192" : { "_id" : "9fcca05a-af6e-47f0-a4ea-0e31d4a38192", + "_ns" : "packages", + "arch" : "noarch", + "checksum" : { "sha256" : "d373add70015c6aa4d0ef24175ea4ca74f26e54f" }, + "description" : "A script that produces javadoc-style documentation from\nwell-formed JavaScript sourcefiles. At the moment, this means it\nsupports sourcefiles where all functions are mapped to a class\nusing prototype-based inheritance. Anonymous function\ndefinitions (e.g. Circle.prototype.getRadius = function(){ ...} )\nare supported.", + "download_url" : "http://localhost//pub/jboss/JSDoc-1.10.2-7.fc11.noarch.rpm", + "epoch" : "0", + "filename" : "JSDoc-1.10.2-7.fc11.noarch.rpm", + "id" : "9fcca05a-af6e-47f0-a4ea- 0e31d4a38192", + "name" : "JSDoc", + "provides" : [ "perl(JSDoc::XML)", + "perl(JSDoc)", + "JSDoc", + "perl(JavaScript::Syntax::HTML)", + "perl(JSDoc::XMI)" + ], + "release" : "7.fc11", + "requires" : [ "perl(Data::Dumper)", + "perl(constant)", + "perl(:MODULE_COMPAT_5.10.0)", + "perl(File::Basename)", + "perl(JavaScript::Syntax::HTML)", + "perl(warnings)", + "perl(JSDoc)", + "perl(File::Path)", + "perl(JSDoc::XML)", + "perl(lib)", + "perl(Exporter)", + "perl", + "/usr/bin/perl", + "perl(HTML:: Template)", + "perl(Getopt::Long)", + "perl(vars)", + "perl(File::Copy)", + "perl(File::Find)", + "perl(JSDoc::XMI)", + "perl(strict)" + ], + "vendor" : null, + "version" : "1.10.2" + }, + "a2d1440e-2f22-480f-ace9-04d40361856f" : { "_id" : "a2d1440e-2f22-480f-ace9-04d40361856f", + "_ns" : "packages", + "arch" : "noarch", + "checksum" : { "sha256" : "0c77cb7f6c57a39b00ec6ece7fb372ac6ed08277" }, + "description" : "The JBossAS 5 Java Application Server", + "download_url" : "http://localhost//pub/jboss/jboss-as5-5.0.0.GA-1.noarch.rpm", + "epoch" : "0", + "filename" : "jboss-as5-5.0.0.GA-1.noarch.rpm", + "id" : "a2d1440e-2f22-480f-ace9-04d40361856f", + "name" : "jboss-as5", + "provides" : [ "jboss-as5" ], + "release" : "1", + "requires" : [ "/bin/sh" ], + "vendor" : null, + "version" : "5.0.0.GA" + } +} diff --git a/src/spec/fixtures/repositories.json b/src/spec/fixtures/repositories.json new file mode 100644 index 0000000..f3a2723 --- /dev/null +++ b/src/spec/fixtures/repositories.json @@ -0,0 +1,19 @@ +[ { "_id" : "jboss", + "arch" : "x86_64", + "errata" : "/repositories/jboss/errata/", + "id" : "jboss", + "name" : "jboss", + "packagegroupcategories" : "/repositories/jboss/packagegroupcategories/", + "packagegroups" : "/repositories/jboss/packagegroups/", + "packages" : "/repositories/jboss/packages/", + "source" : { "supported_types" : [ "yum", + "local", + "rhn" + ], + "type" : "yum", + "url" : "http://example/jboss" + }, + "sync_schedule" : null, + "uri_ref" : "/repositories/jboss/", + "use_symlinks" : false + } ] diff --git a/src/spec/models/image_spec.rb b/src/spec/models/image_spec.rb index a0fd8ca..030e792 100644 --- a/src/spec/models/image_spec.rb +++ b/src/spec/models/image_spec.rb @@ -1,23 +1,6 @@ require 'spec_helper' describe Image do - before(:each) do - @provider = Factory.build(:mock_provider) - @client = mock('DeltaCloud', :null_object => true) - @provider.stub!(:connect).and_return(@client) - end - - it "should have a unique external key" do - i1 = Factory.create(:image, :provider => @provider) - i2 = Factory.create(:image, :provider => @provider) - @provider.images = [i1, i2] - i1.should be_valid - i2.should be_valid - - i2.external_key = i1.external_key - i2.should_not be_valid - end - it "should have a name" do i = Factory.build(:image, :name => nil) i.should_not be_valid @@ -38,36 +21,17 @@ describe Image do i.should be_valid end - it "should have an architecture if it has a provider" do - i = Factory.build(:image, :architecture => nil) - i.should_not be_valid - - i.architecture = 'i686' - i.should be_valid - end - - it "should have provider images only if it has a provider" do - i = Factory.create(:image, :provider => nil) - - i.aggregator_images << i - i.should have(1).error_on(:aggregator_images) - i.errors.on(:aggregator_images).should eql( - "Aggregator image only allowed for provider images") - - i.aggregator_images.clear - i.should be_valid + it "should have automatically generated uuid after save" do + i = Factory.build(:image) + i.save + i.uuid.should_not be_nil end - it "should have aggregator images only if it has a pool" do - i = Factory.create(:image) - - i.provider_images << i - i.should have(1).error_on(:provider_images) - i.errors.on(:provider_images).should eql( - "Provider images only allowed for aggregator images") + it "should have template_id" do + i = Factory.build(:image, :template_id => nil) + i.should_not be_valid - i.provider_images.clear + i.template_id = 1 i.should be_valid end - end diff --git a/src/spec/models/instance_spec.rb b/src/spec/models/instance_spec.rb index 16e8eb9..49bf625 100644 --- a/src/spec/models/instance_spec.rb +++ b/src/spec/models/instance_spec.rb @@ -24,11 +24,11 @@ describe Instance do @instance.should be_valid end - it "should require image to be set" do - @instance.image_id = nil + it "should require template to be set" do + @instance.template_id = nil @instance.should_not be_valid - @instance.image_id = 1 + @instance.template_id = 1 @instance.should be_valid end diff --git a/src/spec/models/template_spec.rb b/src/spec/models/template_spec.rb new file mode 100644 index 0000000..ef30fc1 --- /dev/null +++ b/src/spec/models/template_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe Template do + it "should have automatically generated uuid after validation" do + t = Factory.build(:template) + t.uuid = nil + t.save + t.uuid.should_not be_nil + end + + it "should return list of providers who provides images built from this template" do + tpl = Factory.build(:template) + img = Factory.build(:image, :template_id => tpl) + provider = Factory.build(:mock_provider) + rimg = ReplicatedImage.new(:provider_id => provider, :image_id => img) + rimg.save + tpl.providers.size.should eql(1) + end +end diff --git a/src/spec/utils/repository_manager.rb b/src/spec/utils/repository_manager.rb new file mode 100644 index 0000000..cac151c --- /dev/null +++ b/src/spec/utils/repository_manager.rb @@ -0,0 +1,45 @@ +require 'spec_helper' + +describe RepositoryManager do + before(:all) do + @repositories_json = File.read(File.join(File.dirname(__FILE__), + '../fixtures/repositories.json')) + @packagegroups_json = File.read(File.join(File.dirname(__FILE__), + '../fixtures/packagegroups.json')) + @packages_json = File.read(File.join(File.dirname(__FILE__), + '../fixtures/packages.json')) + end + + before(:each) do + hydra = Typhoeus::Hydra.hydra + hydra.stub(:get, "http://pulptest/repositories/").and_return( + Typhoeus::Response.new(:code => 200, :body => @repositories_json)) + hydra.stub(:get, "http://pulptest/repositories/jboss/packagegroups/").and_return( + Typhoeus::Response.new(:code => 200, :body => @packagegroups_json)) + hydra.stub(:get, "http://pulptest/repositories/jboss/packages/").and_return( + Typhoeus::Response.new(:code => 200, :body => @packages_json)) + + @rmanager = RepositoryManager.new(:config => [{ + 'baseurl' => 'http://pulptest', + 'yumurl' => 'http://pulptest', + 'type' => 'pulp', + }]) + end + + it "should return a list of repositories" do + @rmanager.repositories.should have(1).items + @rmanager.repositories.first.id.should eql('jboss') + end + + it "should return a list of packagegroups" do + rep = @rmanager.repositories.first + rep.groups.keys.sort.should == ["JBoss Core Packages", "JBoss Drools", + "JBoss Social Networking Web Application"] + end + + it "should return a list of packages" do + rep = @rmanager.repositories.first + rep.packages.map {|p| p[:name]}.sort.should == ["J-SocialNet", "JSDoc", + "drools-guvnor", "jboss-as5", "jboss-jgroups", "jboss-rails"] + end +end -- 1.7.2.2 _______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
