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>
+ <%[email protected]_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/#{id}")
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 '[email protected]'
+ u.sequence(:login) { |n| "user#{n}" }
+ u.email { |e| "#{[email protected]" }
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 '[email protected]'
end
Factory.define :admin_user, :parent => :user do |u|
- u.login 'padmin'
- u.email '[email protected]'
end
Factory.define :provider_admin_user, :parent => :user do |u|
- u.login 'provider_admin'
- u.email '[email protected]'
+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'
--
1.6.2.5
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel