new ui / backend / tests --- src/app/controllers/portal_pool_controller.rb | 5 ++++ src/app/models/provider.rb | 1 - src/app/views/portal_pool/accounts.html.erb | 21 +++++++++++++++++ .../controllers/portal_pool_controller_spec.rb | 21 ++++++++++++----- src/spec/controllers/provider_controller_spec.rb | 4 +- .../controllers/user_sessions_controller_spec.rb | 4 +- src/spec/factories/base_portal_object.rb | 3 -- src/spec/factories/permission.rb | 19 ++++++++++----- src/spec/factories/privilege.rb | 14 ----------- src/spec/factories/provider.rb | 2 +- src/spec/factories/role.rb | 24 -------------------- src/spec/factories/user.rb | 13 ++++------ src/spec/fixtures/base_portal_objects.yml | 2 + 13 files changed, 66 insertions(+), 67 deletions(-) create mode 100644 src/app/views/portal_pool/accounts.html.erb delete mode 100644 src/spec/factories/base_portal_object.rb delete mode 100644 src/spec/factories/privilege.rb delete mode 100644 src/spec/factories/role.rb create mode 100644 src/spec/fixtures/base_portal_objects.yml
diff --git a/src/app/controllers/portal_pool_controller.rb b/src/app/controllers/portal_pool_controller.rb index 90df8a5..1cdb96a 100644 --- a/src/app/controllers/portal_pool_controller.rb +++ b/src/app/controllers/portal_pool_controller.rb @@ -38,6 +38,11 @@ class PortalPoolController < ApplicationController @instances = @pool.instances end
+ def accounts + @pool = PortalPool.find(params[:id]) + require_privilege(Privilege::INSTANCE_VIEW,@pool) + end + def new require_privilege(Privilege::POOL_MODIFY) @portal_pool = PortalPool.new diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index 1170488..70051e5 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -79,7 +79,6 @@ class Provider < ActiveRecord::Base def validate if !nil_or_empty(url) errors.add("url", "must be a valid provider url") unless valid_framework? - puts errors.inspect end end
diff --git a/src/app/views/portal_pool/accounts.html.erb b/src/app/views/portal_pool/accounts.html.erb new file mode 100644 index 0000000..b6042d6 --- /dev/null +++ b/src/app/views/portal_pool/accounts.html.erb @@ -0,0 +1,21 @@ +<% if @pool.cloud_accounts.size == 0 %> +<h1>There are no accounts to display</h1> +<% else %> + <table> + <thead> + <tr> + <th scope="col">Provider</th> + <th scope="col">Username</th> + </tr> + </thead> + <tbody> + <%@pool.cloud_accounts.each {|account| %> + <tr> + <td><%= account.provider.name %></td> + <td><%= account.username %></td> + </tr> + <% } %> + </tbody> + </table> +<% end %> +<%= link_to "Add an account", {:controller => "portal_pool", :action => "new_account", :pool => @pool.id}, :class => "actionlink" %> diff --git a/src/spec/controllers/portal_pool_controller_spec.rb b/src/spec/controllers/portal_pool_controller_spec.rb index d409c3a..bd490c5 100644 --- a/src/spec/controllers/portal_pool_controller_spec.rb +++ b/src/spec/controllers/portal_pool_controller_spec.rb @@ -1,10 +1,12 @@ require 'spec_helper'
describe PortalPoolController do - + fixtures :all + before(:each) do - @admin_permission = Factory :admin_permission - @admin = @admin_permission.user + @permission = Factory.build :admin_permission + #permission = Factory.build :pool_creator_permission # FIXME this should work but isn't + @admin = @permission.user activate_authlogic end
@@ -21,14 +23,21 @@ describe PortalPoolController do end
it "should provider means to create new pool" do - @instance_creator = Factory :instance_creator - UserSession.create(@admin) lambda do post :create, :portal_pool => { :name => 'foopool' } end.should change(PortalPool, :count).by(1) - response.should redirect_to('http://test.host/portal_pool/show/1') + id = PortalPool.find(:first, :conditions => ['name = ?', 'foopool']).id + response.should redirect_to("http://test.host/portal_pool/show/#%7Bid%7D") end
+ it "should get cloud accounts" do + @pool = Factory :tpool + UserSession.create(@admin) + get :accounts, :id => @pool.id + response.should be_success + response.should render_template("accounts") + @pool.should_not == nil + end
end diff --git a/src/spec/controllers/provider_controller_spec.rb b/src/spec/controllers/provider_controller_spec.rb index ea67580..2893151 100644 --- a/src/spec/controllers/provider_controller_spec.rb +++ b/src/spec/controllers/provider_controller_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper'
describe ProviderController do + fixtures :all
before(:each) do - Factory :base_portal_object - @admin_permission = Factory :provider_admin_permission + @admin_permission = Factory.build :provider_admin_permission @provider = @admin_permission.permission_object @admin = @admin_permission.user activate_authlogic diff --git a/src/spec/controllers/user_sessions_controller_spec.rb b/src/spec/controllers/user_sessions_controller_spec.rb index f2b80d5..1c0cfcc 100644 --- a/src/spec/controllers/user_sessions_controller_spec.rb +++ b/src/spec/controllers/user_sessions_controller_spec.rb @@ -16,14 +16,14 @@ describe UserSessionsController do end
it "should create user session" do - post :create, :user_session => { :login => "tuser", :password => "secret" } + post :create, :user_session => { :login => @tuser.login, :password => "secret" } UserSession.find.should_not == nil @tuser.should == UserSession.find.user response.should redirect_to(account_path) end
it "should destroy user session" do - post :create, :user_session => { :login => "tuser", :password => "secret" } + post :create, :user_session => { :login => @tuser.login, :password => "secret" } delete :destroy UserSession.find.should == nil response.should redirect_to(login_path) diff --git a/src/spec/factories/base_portal_object.rb b/src/spec/factories/base_portal_object.rb deleted file mode 100644 index af4c8bd..0000000 --- a/src/spec/factories/base_portal_object.rb +++ /dev/null @@ -1,3 +0,0 @@ -Factory.define :base_portal_object do |p| - p.name 'general_permission_scope' -end diff --git a/src/spec/factories/permission.rb b/src/spec/factories/permission.rb index 0e99f97..eadcc4c 100644 --- a/src/spec/factories/permission.rb +++ b/src/spec/factories/permission.rb @@ -1,14 +1,21 @@ Factory.define :permission do |p| + p.after_build { |p| p.user.permissions << p } end
Factory.define :admin_permission, :parent => :permission do |p| - p.role { |r| r.association(:admin_role) } - p.permission_object { |r| r.association(:base_portal_object) } - p.user { |r| r.association(:admin_user) } + p.role { |r| Role.find(:first, :conditions => ['name = ?', 'Site Administrator']) } + p.permission_object { |r| BasePortalObject.general_permission_scope } + p.user { |u| u.association(:admin_user) } end
Factory.define :provider_admin_permission, :parent => :permission do |p| - p.role { |r| r.association(:provider_admin_role) } - p.permission_object { |r| r.association(:mock1) } - p.user { |r| r.association(:provider_admin_user) } + p.role { |r| Role.find(:first, :conditions => ['name = ?', 'Provider Administrator']) } + p.permission_object { |r| r.association(:mock_provider) } + p.user { |u| u.association(:provider_admin_user) } +end + +Factory.define :pool_creator_permission, :parent => :permission do |p| + p.role { |r| Role.find(:first, :conditions => ['name = ?', 'Pool Creator']) } + p.permission_object { |r| r.association(:mock_provider) } + p.user { |u| u.association(:pool_creator) } end diff --git a/src/spec/factories/privilege.rb b/src/spec/factories/privilege.rb deleted file mode 100644 index 46bdeb4..0000000 --- a/src/spec/factories/privilege.rb +++ /dev/null @@ -1,14 +0,0 @@ -Factory.define :privilege do |p| -end - -Factory.define :modify_pool_priv, :parent => :privilege do |p| - p.name 'pool_modify' -end - -Factory.define :modify_provider_priv, :parent => :privilege do |p| - p.name 'provider_modify' -end - -Factory.define :view_provider_priv, :parent => :privilege do |p| - p.name 'provider_view' -end diff --git a/src/spec/factories/provider.rb b/src/spec/factories/provider.rb index ae1abd2..921d54b 100644 --- a/src/spec/factories/provider.rb +++ b/src/spec/factories/provider.rb @@ -1,7 +1,7 @@ Factory.define :provider do |p| end
-Factory.define :mock1, :parent => :provider do |p| +Factory.define :mock_provider, :parent => :provider do |p| p.name 'mock1' p.cloud_type 'mock' p.url 'http://localhost:3001/api' diff --git a/src/spec/factories/role.rb b/src/spec/factories/role.rb deleted file mode 100644 index b126721..0000000 --- a/src/spec/factories/role.rb +++ /dev/null @@ -1,24 +0,0 @@ -# FIXME need to flush out all roles w/ all privileges - -Factory.define :role do |r| -end - -Factory.define :admin_role, :parent => :role do |r| - r.name 'Administrator' - r.scope 'BasePortalObject' - r.privileges { |p| [ p.association(:modify_pool_priv), - p.association(:modify_provider_priv), - p.association(:view_provider_priv) ] } -end - -Factory.define :instance_creator, :parent => :role do |r| - r.name 'Instance Creator and User' - r.scope 'PortalPool' -end - -Factory.define :provider_admin_role, :parent => :role do |r| - r.name 'Provider Administrator' - r.scope 'BasePortalObject' - r.privileges { |p| [ p.association(:modify_provider_priv), - p.association(:view_provider_priv) ] } -end diff --git a/src/spec/factories/user.rb b/src/spec/factories/user.rb index 077083b..9a5564d 100644 --- a/src/spec/factories/user.rb +++ b/src/spec/factories/user.rb @@ -1,6 +1,6 @@ Factory.define :user do |u| - u.login 'myuser' - u.email 'myuser@example.com' + u.sequence(:login) { |n| "user#{n}" } + u.email { |e| "#{e.login}@example.host" } u.password 'secret' u.password_confirmation 'secret' u.first_name 'John' @@ -8,16 +8,13 @@ Factory.define :user do |u| end
Factory.define :tuser, :parent => :user do |u| - u.login 'tuser' - u.email 'tuser@example.com' end
Factory.define :admin_user, :parent => :user do |u| - u.login 'padmin' - u.email 'padmin@foobar.com' end
Factory.define :provider_admin_user, :parent => :user do |u| - u.login 'provider_admin' - u.email 'provider_admin@foobar.com' +end + +Factory.define :pool_creator, :parent => :user do |u| end diff --git a/src/spec/fixtures/base_portal_objects.yml b/src/spec/fixtures/base_portal_objects.yml new file mode 100644 index 0000000..a520969 --- /dev/null +++ b/src/spec/fixtures/base_portal_objects.yml @@ -0,0 +1,2 @@ +general_permission_scope: + name: 'general_permission_scope'
On Tue, Mar 16, 2010 at 4:07 PM, Mohammed Morsi mmorsi@redhat.com wrote:
new ui / backend / tests
src/app/controllers/portal_pool_controller.rb | 5 ++++ src/app/models/provider.rb | 1 - src/app/views/portal_pool/accounts.html.erb | 21 +++++++++++++++++ .../controllers/portal_pool_controller_spec.rb | 21 ++++++++++++----- src/spec/controllers/provider_controller_spec.rb | 4 +- .../controllers/user_sessions_controller_spec.rb | 4 +- src/spec/factories/base_portal_object.rb | 3 -- src/spec/factories/permission.rb | 19 ++++++++++----- src/spec/factories/privilege.rb | 14 ----------- src/spec/factories/provider.rb | 2 +- src/spec/factories/role.rb | 24
src/spec/factories/user.rb | 13 ++++------ src/spec/fixtures/base_portal_objects.yml | 2 + 13 files changed, 66 insertions(+), 67 deletions(-) create mode 100644 src/app/views/portal_pool/accounts.html.erb delete mode 100644 src/spec/factories/base_portal_object.rb delete mode 100644 src/spec/factories/privilege.rb delete mode 100644 src/spec/factories/role.rb create mode 100644 src/spec/fixtures/base_portal_objects.yml
Applying gets one whitespace error:
warning: 1 line adds whitespace errors. ae44ca7f40dd246e1b08e5a36158463f66f2c586 src/spec/controllers/portal_pool_controller_spec.rb:5: trailing whitespace.
Got the following errors running rake spec:
1) 'ProviderController should provide ui to view accounts' FAILED expected "accounts", got "layouts/popup-error" ./spec/controllers/provider_controller_spec.rb:18:
2) 'ProviderController should provide ui to create new account' FAILED expected "new_account", got "layouts/popup-error" ./spec/controllers/provider_controller_spec.rb:25:
In my test.log, I see:
Processing ProviderController#accounts (for 0.0.0.0 at 2010-03-17 10:15:04) [GET] Parameters: {"action"=>"accounts", "controller"=>"provider"} Provider Load (0.4ms) SELECT * FROM "providers" Redirected to http://test.host/login Filter chain halted as [:require_user] rendered_or_redirected. Completed in 6ms (DB: 3) | 302 Found [http://test.host/provider/accounts]
Processing ProviderController#new_account (for 0.0.0.0 at 2010-03-17 10:15:04) [GET] Parameters: {"action"=>"new_account", "controller"=>"provider"} Provider Load (0.5ms) SELECT * FROM "providers" Redirected to http://test.host/login Filter chain halted as [:require_user] rendered_or_redirected. Completed in 5ms (DB: 1) | 302 Found [http://test.host/provider/accounts]
This looks like the user is not being picked up in the session for some reason
deltacloud-devel@lists.fedorahosted.org