alberich 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +18 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +37 -0
- data/Rakefile +34 -0
- data/alberich.gemspec +34 -0
- data/app/assets/javascripts/alberich/application.js +15 -0
- data/app/assets/javascripts/alberich/permissions.js +2 -0
- data/app/assets/javascripts/alberich/privileges.js +2 -0
- data/app/assets/javascripts/alberich/roles.js +2 -0
- data/app/assets/stylesheets/alberich/application.css +13 -0
- data/app/assets/stylesheets/alberich/permissions.css +4 -0
- data/app/assets/stylesheets/alberich/privileges.css +4 -0
- data/app/assets/stylesheets/alberich/roles.css +4 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/controllers/alberich/application_controller.rb +4 -0
- data/app/controllers/alberich/application_controller_helper.rb +118 -0
- data/app/controllers/alberich/permissions_controller.rb +211 -0
- data/app/controllers/alberich/privileges_controller.rb +105 -0
- data/app/controllers/alberich/roles_controller.rb +97 -0
- data/app/helpers/alberich/application_helper.rb +4 -0
- data/app/helpers/alberich/permissions_helper.rb +4 -0
- data/app/helpers/alberich/privileges_helper.rb +4 -0
- data/app/helpers/alberich/roles_helper.rb +4 -0
- data/app/models/alberich/base_permission_object.rb +42 -0
- data/app/models/alberich/derived_permission.rb +25 -0
- data/app/models/alberich/entity.rb +27 -0
- data/app/models/alberich/entity_target_observer.rb +16 -0
- data/app/models/alberich/permission.rb +59 -0
- data/app/models/alberich/permission_session.rb +33 -0
- data/app/models/alberich/permissioned_object.rb +139 -0
- data/app/models/alberich/privilege.rb +29 -0
- data/app/models/alberich/role.rb +37 -0
- data/app/models/alberich/session_entity.rb +15 -0
- data/app/views/alberich/permissions/_form.html.haml +27 -0
- data/app/views/alberich/permissions/_list.html.haml +1 -0
- data/app/views/alberich/permissions/_objects.html.haml +38 -0
- data/app/views/alberich/permissions/_permissions.html.haml +45 -0
- data/app/views/alberich/permissions/index.html.haml +2 -0
- data/app/views/alberich/permissions/new.html.haml +5 -0
- data/app/views/alberich/permissions/show.html.haml +12 -0
- data/app/views/alberich/privileges/_form.html.haml +19 -0
- data/app/views/alberich/privileges/_list.html.haml +17 -0
- data/app/views/alberich/privileges/create.html.haml +2 -0
- data/app/views/alberich/privileges/destroy.html.haml +2 -0
- data/app/views/alberich/privileges/edit.html.haml +5 -0
- data/app/views/alberich/privileges/index.html.haml +5 -0
- data/app/views/alberich/privileges/new.html.haml +5 -0
- data/app/views/alberich/privileges/show.html.haml +12 -0
- data/app/views/alberich/privileges/update.html.haml +2 -0
- data/app/views/alberich/roles/_form.html.haml +24 -0
- data/app/views/alberich/roles/edit.html.haml +7 -0
- data/app/views/alberich/roles/index.html.haml +23 -0
- data/app/views/alberich/roles/new.html.haml +5 -0
- data/app/views/alberich/roles/show.html.haml +16 -0
- data/app/views/layouts/alberich/application.html.erb +14 -0
- data/config/initializers/haml.rb +1 -0
- data/config/routes.rb +17 -0
- data/db/migrate/20120925162242_create_alberich_roles.rb +12 -0
- data/db/migrate/20121022223626_create_alberich_privileges.rb +12 -0
- data/db/migrate/20121023051301_create_alberich_base_permission_objects.rb +9 -0
- data/db/migrate/20121023233648_create_alberich_permission_sessions.rb +11 -0
- data/db/migrate/20121027023136_create_alberich_entities.rb +34 -0
- data/db/migrate/20121204205213_create_alberich_session_entities.rb +12 -0
- data/db/migrate/20121205180518_create_alberich_permissions.rb +13 -0
- data/db/migrate/20130107043252_create_alberich_derived_permissions.rb +18 -0
- data/lib/alberich.rb +10 -0
- data/lib/alberich/#version.rb# +3 -0
- data/lib/alberich/engine.rb +10 -0
- data/lib/alberich/version.rb +3 -0
- data/lib/generators/alberich/install_generator.rb +15 -0
- data/lib/generators/alberich/templates/README +6 -0
- data/lib/generators/alberich/templates/alberich.rb +11 -0
- data/lib/tasks/alberich_tasks.rake +4 -0
- data/spec/controllers/alberich/permissions_controller_spec.rb +112 -0
- data/spec/controllers/alberich/privileges_controller_spec.rb +131 -0
- data/spec/controllers/alberich/roles_controller_spec.rb +130 -0
- data/spec/factories/alberich/permission.rb +51 -0
- data/spec/factories/alberich/permission_session.rb +7 -0
- data/spec/factories/alberich/privilege.rb +6 -0
- data/spec/factories/alberich/role.rb +103 -0
- data/spec/factories/child_resource.rb +14 -0
- data/spec/factories/child_resource.rb~ +7 -0
- data/spec/factories/global_resource.rb +11 -0
- data/spec/factories/global_resource.rb~ +25 -0
- data/spec/factories/parent_resource.rb +12 -0
- data/spec/factories/parent_resource.rb~ +7 -0
- data/spec/factories/standalone_resource.rb +7 -0
- data/spec/factories/standalone_resource.rb~ +11 -0
- data/spec/factories/user.rb +30 -0
- data/spec/factories/user_group.rb +8 -0
- data/spec/models/alberich/derived_permission_spec.rb +34 -0
- data/spec/models/alberich/entity_spec.rb +15 -0
- data/spec/models/alberich/permission_spec.rb +133 -0
- data/spec/models/alberich/privilege_spec.rb +39 -0
- data/spec/models/alberich/role_spec.rb +33 -0
- data/spec/models/alberich/session_entity_spec.rb +24 -0
- data/spec/spec_helper.rb +81 -0
- data/spec/support/routes.rb +41 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/javascripts/child_resources.js +2 -0
- data/test/dummy/app/assets/javascripts/global_resources.js +2 -0
- data/test/dummy/app/assets/javascripts/parent_resources.js +2 -0
- data/test/dummy/app/assets/javascripts/standalone_resources.js +2 -0
- data/test/dummy/app/assets/javascripts/user_groups.js +2 -0
- data/test/dummy/app/assets/javascripts/users.js +2 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/child_resources.css +4 -0
- data/test/dummy/app/assets/stylesheets/global_resources.css +4 -0
- data/test/dummy/app/assets/stylesheets/parent_resources.css +4 -0
- data/test/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/test/dummy/app/assets/stylesheets/standalone_resources.css +4 -0
- data/test/dummy/app/assets/stylesheets/user_groups.css +4 -0
- data/test/dummy/app/assets/stylesheets/users.css +4 -0
- data/test/dummy/app/controllers/application_controller.rb +73 -0
- data/test/dummy/app/controllers/child_resources_controller.rb +99 -0
- data/test/dummy/app/controllers/child_resources_controller.rb~ +83 -0
- data/test/dummy/app/controllers/global_resources_controller.rb +95 -0
- data/test/dummy/app/controllers/global_resources_controller.rb~ +83 -0
- data/test/dummy/app/controllers/parent_resources_controller.rb +101 -0
- data/test/dummy/app/controllers/parent_resources_controller.rb~ +83 -0
- data/test/dummy/app/controllers/standalone_resources_controller.rb +101 -0
- data/test/dummy/app/controllers/standalone_resources_controller.rb~ +83 -0
- data/test/dummy/app/controllers/user_groups_controller.rb +131 -0
- data/test/dummy/app/controllers/user_sessions_controller.rb +38 -0
- data/test/dummy/app/controllers/users_controller.rb +87 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/child_resources_helper.rb +2 -0
- data/test/dummy/app/helpers/global_resources_helper.rb +2 -0
- data/test/dummy/app/helpers/parent_resources_helper.rb +2 -0
- data/test/dummy/app/helpers/standalone_resources_helper.rb +2 -0
- data/test/dummy/app/helpers/user_groups_helper.rb +2 -0
- data/test/dummy/app/helpers/users_helper.rb +2 -0
- data/test/dummy/app/models/child_resource.rb +25 -0
- data/test/dummy/app/models/child_resource.rb~ +4 -0
- data/test/dummy/app/models/global_resource.rb +3 -0
- data/test/dummy/app/models/parent_resource.rb +32 -0
- data/test/dummy/app/models/parent_resource.rb~ +3 -0
- data/test/dummy/app/models/standalone_resource.rb +22 -0
- data/test/dummy/app/models/standalone_resource.rb~ +3 -0
- data/test/dummy/app/models/user.rb +80 -0
- data/test/dummy/app/models/user_group.rb +12 -0
- data/test/dummy/app/views/child_resources/_form.html.erb +30 -0
- data/test/dummy/app/views/child_resources/_form.html.erb~ +29 -0
- data/test/dummy/app/views/child_resources/edit.html.erb +6 -0
- data/test/dummy/app/views/child_resources/index.html.erb +25 -0
- data/test/dummy/app/views/child_resources/index.html.erb~ +27 -0
- data/test/dummy/app/views/child_resources/new.html.erb +5 -0
- data/test/dummy/app/views/child_resources/show.html.erb +20 -0
- data/test/dummy/app/views/child_resources/show.html.erb~ +20 -0
- data/test/dummy/app/views/global_resources/_form.html.erb +25 -0
- data/test/dummy/app/views/global_resources/edit.html.erb +6 -0
- data/test/dummy/app/views/global_resources/index.html.erb +25 -0
- data/test/dummy/app/views/global_resources/new.html.erb +5 -0
- data/test/dummy/app/views/global_resources/show.html.erb +15 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/parent_resources/_form.html.erb +25 -0
- data/test/dummy/app/views/parent_resources/edit.html.erb +6 -0
- data/test/dummy/app/views/parent_resources/index.html.erb +25 -0
- data/test/dummy/app/views/parent_resources/index.html.erb~ +25 -0
- data/test/dummy/app/views/parent_resources/new.html.erb +5 -0
- data/test/dummy/app/views/parent_resources/show.html.erb +44 -0
- data/test/dummy/app/views/parent_resources/show.html.erb~ +15 -0
- data/test/dummy/app/views/standalone_resources/_form.html.erb +25 -0
- data/test/dummy/app/views/standalone_resources/edit.html.erb +6 -0
- data/test/dummy/app/views/standalone_resources/index.html.erb +25 -0
- data/test/dummy/app/views/standalone_resources/new.html.erb +5 -0
- data/test/dummy/app/views/standalone_resources/show.html.erb +15 -0
- data/test/dummy/app/views/user_groups/_form.html.haml +9 -0
- data/test/dummy/app/views/user_groups/add_members.html.haml +18 -0
- data/test/dummy/app/views/user_groups/edit.html.haml +13 -0
- data/test/dummy/app/views/user_groups/index.html.haml +20 -0
- data/test/dummy/app/views/user_groups/new.html.haml +11 -0
- data/test/dummy/app/views/user_groups/show.html.haml +42 -0
- data/test/dummy/app/views/user_sessions/new.html.haml +26 -0
- data/test/dummy/app/views/users/_form.html.haml +25 -0
- data/test/dummy/app/views/users/edit.html.haml +14 -0
- data/test/dummy/app/views/users/index.html.haml +26 -0
- data/test/dummy/app/views/users/new.html.haml +11 -0
- data/test/dummy/app/views/users/show.html.haml +56 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/alberich.rb +13 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/warden.rb +79 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +33 -0
- data/test/dummy/db/migrate/20120801010101_create_users.rb +20 -0
- data/test/dummy/db/migrate/20121121054319_create_user_groups.rb +16 -0
- data/test/dummy/db/migrate/20130220160811_create_global_resources.rb +10 -0
- data/test/dummy/db/migrate/20130220175258_create_standalone_resources.rb +10 -0
- data/test/dummy/db/migrate/20130226145412_create_parent_resources.rb +10 -0
- data/test/dummy/db/migrate/20130226151256_create_child_resources.rb +12 -0
- data/test/dummy/db/migrate/20130226151256_create_child_resources.rb~ +12 -0
- data/test/dummy/db/schema.rb +151 -0
- data/test/dummy/db/seeds.rb +65 -0
- data/test/dummy/lib/password.rb +58 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/child_resources.yml +11 -0
- data/test/dummy/test/fixtures/global_resources.yml +9 -0
- data/test/dummy/test/fixtures/parent_resources.yml +9 -0
- data/test/dummy/test/fixtures/standalone_resources.yml +9 -0
- data/test/dummy/test/fixtures/user_groups.yml +9 -0
- data/test/dummy/test/fixtures/users.yml +37 -0
- data/test/dummy/test/functional/child_resources_controller_test.rb +49 -0
- data/test/dummy/test/functional/global_resources_controller_test.rb +49 -0
- data/test/dummy/test/functional/parent_resources_controller_test.rb +49 -0
- data/test/dummy/test/functional/standalone_resources_controller_test.rb +49 -0
- data/test/dummy/test/functional/user_groups_controller_test.rb +49 -0
- data/test/dummy/test/functional/users_controller_test.rb +39 -0
- data/test/dummy/test/unit/child_resource_test.rb +7 -0
- data/test/dummy/test/unit/global_resource_test.rb +7 -0
- data/test/dummy/test/unit/helpers/child_resources_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/global_resources_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/parent_resources_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/standalone_resources_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/user_groups_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/users_helper_test.rb +4 -0
- data/test/dummy/test/unit/parent_resource_test.rb +7 -0
- data/test/dummy/test/unit/standalone_resource_test.rb +7 -0
- data/test/dummy/test/unit/user_group_test.rb +7 -0
- data/test/dummy/test/unit/user_test.rb +7 -0
- data/test/integration/alberich/permission_test.rb +7 -0
- data/test/integration/alberich/privilege_test.rb +7 -0
- data/test/integration/alberich/role_test.rb +7 -0
- metadata +639 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class CreateAlberichPrivileges < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :alberich_privileges do |t|
|
|
4
|
+
t.integer :role_id, :null => false
|
|
5
|
+
t.string :target_type, :null => false
|
|
6
|
+
t.string :action, :null => false
|
|
7
|
+
|
|
8
|
+
t.integer :lock_version, :default => 0
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class CreateAlberichPermissionSessions < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :alberich_permission_sessions do |t|
|
|
4
|
+
t.integer :user_id, :null => false
|
|
5
|
+
t.string :session_id, :null => false
|
|
6
|
+
t.integer :lock_version, :default => 0
|
|
7
|
+
|
|
8
|
+
t.timestamps
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class CreateAlberichEntities < ActiveRecord::Migration
|
|
2
|
+
class Alberich::Entity < ActiveRecord::Base; end
|
|
3
|
+
|
|
4
|
+
def up
|
|
5
|
+
create_table :alberich_entities do |t|
|
|
6
|
+
t.string :name
|
|
7
|
+
t.references :entity_target, :polymorphic => true, :null => false
|
|
8
|
+
|
|
9
|
+
t.integer :lock_version, :default => 0
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
if Alberich.user_class.constantize.table_exists?
|
|
13
|
+
Alberich.user_class.constantize.all.each do |u|
|
|
14
|
+
unless u.entity
|
|
15
|
+
entity = Entity.new(:entity_target => u)
|
|
16
|
+
entity.name = u.to_s
|
|
17
|
+
entity.save!
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
if Alberich.user_group_class.constantize.table_exists?
|
|
22
|
+
Alberich.user_group_class.constantize.all.each do |ug|
|
|
23
|
+
unless ug.entity
|
|
24
|
+
entity = Entity.new(:entity_target => ug)
|
|
25
|
+
entity.name = ug.to_s
|
|
26
|
+
entity.save!
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
def down
|
|
32
|
+
drop_table :alberich_entities
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class CreateAlberichSessionEntities < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :alberich_session_entities do |t|
|
|
4
|
+
t.integer :user_id, :null => false
|
|
5
|
+
t.integer :entity_id, :null => false
|
|
6
|
+
t.integer :permission_session_id, :null => false
|
|
7
|
+
t.integer :lock_version, :default => 0
|
|
8
|
+
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CreateAlberichPermissions < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :alberich_permissions do |t|
|
|
4
|
+
t.integer :role_id, :null => false
|
|
5
|
+
t.integer :entity_id, :null => false
|
|
6
|
+
t.integer :permission_object_id
|
|
7
|
+
t.string :permission_object_type
|
|
8
|
+
t.integer :lock_version, :default => 0
|
|
9
|
+
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class CreateAlberichDerivedPermissions < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :alberich_derived_permissions do |t|
|
|
4
|
+
t.integer :permission_id, :null => false
|
|
5
|
+
t.integer :role_id, :null => false
|
|
6
|
+
t.integer :entity_id, :null => false
|
|
7
|
+
t.integer :permission_object_id
|
|
8
|
+
t.string :permission_object_type
|
|
9
|
+
t.integer :lock_version, :default => 0
|
|
10
|
+
|
|
11
|
+
t.timestamps
|
|
12
|
+
end
|
|
13
|
+
add_index :alberich_derived_permissions, :permission_id
|
|
14
|
+
add_index :alberich_derived_permissions,
|
|
15
|
+
[:permission_object_id, :permission_object_type],
|
|
16
|
+
:name => 'index_alberich_derived_permissions_on_perm_obj'
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/alberich.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require "alberich/engine"
|
|
2
|
+
|
|
3
|
+
module Alberich
|
|
4
|
+
mattr_accessor :user_class
|
|
5
|
+
mattr_accessor :groups_for_user_method
|
|
6
|
+
mattr_accessor :user_group_class
|
|
7
|
+
mattr_accessor :permissioned_object_classes
|
|
8
|
+
mattr_accessor :additional_privilege_scopes
|
|
9
|
+
mattr_accessor :require_user_method
|
|
10
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module Alberich
|
|
2
|
+
class Engine < ::Rails::Engine
|
|
3
|
+
isolate_namespace Alberich
|
|
4
|
+
config.generators do |g|
|
|
5
|
+
g.test_framework :rspec, :view_specs => false
|
|
6
|
+
g.template_engine :haml
|
|
7
|
+
end
|
|
8
|
+
config.active_record.observers = "alberich::Entity_target_observer"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
|
|
3
|
+
module Alberich
|
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
|
5
|
+
desc "Copy Alberich default files"
|
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
7
|
+
|
|
8
|
+
def copy_config
|
|
9
|
+
copy_file "alberich.rb", "config/initializers/alberich.rb"
|
|
10
|
+
end
|
|
11
|
+
def show_readme
|
|
12
|
+
readme 'README' if behavior == :invoke
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Alberich.user_class = "User"
|
|
2
|
+
Alberich.groups_for_user_method = "all_groups"
|
|
3
|
+
Alberich.user_group_class = "UserGroup"
|
|
4
|
+
Alberich.permissioned_object_classes = []
|
|
5
|
+
Alberich.additional_privilege_scopes = []
|
|
6
|
+
|
|
7
|
+
Alberich.require_user_method = "require_user"
|
|
8
|
+
|
|
9
|
+
ActiveSupport.on_load(:action_controller) do
|
|
10
|
+
ActionController::Base.send(:include, Alberich::ApplicationControllerHelper)
|
|
11
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Alberich
|
|
4
|
+
describe PermissionsController do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@admin_permission = FactoryGirl.create(:admin_permission)
|
|
8
|
+
@admin = @admin_permission.user
|
|
9
|
+
mock_warden(@admin)
|
|
10
|
+
|
|
11
|
+
@permission = FactoryGirl.create(:global_permission)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "GET index" do
|
|
15
|
+
it "assigns all permissions as @permissions" do
|
|
16
|
+
get :index, {}
|
|
17
|
+
assigns(:permissions).should include(@permission)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "POST create" do
|
|
22
|
+
describe "with valid params" do
|
|
23
|
+
it "creates a new Permission" do
|
|
24
|
+
expect {
|
|
25
|
+
post :create, {:entity_role_selected =>
|
|
26
|
+
[[Entity.for_target(FactoryGirl.create(:user)).id,
|
|
27
|
+
FactoryGirl.create(:role).id].join(",")]}
|
|
28
|
+
}.to change(Permission, :count).by(1)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "redirects to index for global permission" do
|
|
32
|
+
post :create, {:entity_role_selected =>
|
|
33
|
+
[[Entity.for_target(FactoryGirl.create(:user)).id,
|
|
34
|
+
FactoryGirl.create(:role).id].join(",")]}
|
|
35
|
+
response.should redirect_to(permissions_path(:return_from_permission_change => true))
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe "with invalid params" do
|
|
40
|
+
it "shows proper error message" do
|
|
41
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
42
|
+
Permission.any_instance.stub(:save).and_return(false)
|
|
43
|
+
post :create, {:entity_role_selected => []}
|
|
44
|
+
flash[:error].should eq("No users or groups selected")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "PUT update" do
|
|
50
|
+
describe "with valid params" do
|
|
51
|
+
it "updates the requested permission" do
|
|
52
|
+
# Assuming there are no other permissions in the database, this
|
|
53
|
+
# specifies that the Permission created on the previous line
|
|
54
|
+
# receives the :update_attributes message with whatever params are
|
|
55
|
+
# submitted in the request.
|
|
56
|
+
old_role = @permission.role
|
|
57
|
+
new_role = FactoryGirl.create(:role)
|
|
58
|
+
@permission.role.should eq(old_role)
|
|
59
|
+
put :multi_update, {:permission_role_selected =>
|
|
60
|
+
[[@permission.id,
|
|
61
|
+
new_role.id].join(",")]}
|
|
62
|
+
@permission.reload
|
|
63
|
+
@permission.role.should eq(new_role)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "redirects to the index for global permissions" do
|
|
67
|
+
put :multi_update, {:permission_role_selected =>
|
|
68
|
+
[[@permission.id,
|
|
69
|
+
FactoryGirl.create(:role).id].join(",")]}
|
|
70
|
+
response.should redirect_to(permissions_path(:return_from_permission_change => true))
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "with invalid params" do
|
|
76
|
+
it "assigns the permission as @permission" do
|
|
77
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
78
|
+
permission2 = FactoryGirl.create(:global_permission, :entity => @permission.entity)
|
|
79
|
+
permission2.entity.should eq(@permission.entity)
|
|
80
|
+
permission2.permission_object.should eq(@permission.permission_object)
|
|
81
|
+
Permission.any_instance.stub(:save).and_return(false)
|
|
82
|
+
put :multi_update, {:permission_role_selected =>
|
|
83
|
+
["#{@permission.id},#{permission2.role.id}"]}
|
|
84
|
+
flash[:error].should include("Could not add")
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "returns to index for global permission" do
|
|
88
|
+
permission2 = FactoryGirl.create(:global_permission, :entity => @permission.entity)
|
|
89
|
+
permission2.entity.should eq(@permission.entity)
|
|
90
|
+
permission2.permission_object.should eq(@permission.permission_object)
|
|
91
|
+
Permission.any_instance.stub(:save).and_return(false)
|
|
92
|
+
put :multi_update, {:permission_role_selected =>
|
|
93
|
+
["#{@permission.id},#{permission2.role.id}"]}
|
|
94
|
+
response.should redirect_to(permissions_path(:return_from_permission_change => true))
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "DELETE destroy" do
|
|
100
|
+
it "destroys the requested permission" do
|
|
101
|
+
expect {
|
|
102
|
+
delete :multi_destroy, {:permission_selected => [@permission.to_param]}
|
|
103
|
+
}.to change(Permission, :count).by(-1)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "redirects to the permissions list" do
|
|
107
|
+
delete :multi_destroy, {:permission_selected => [@permission.to_param]}
|
|
108
|
+
response.should redirect_to(permissions_path(:return_from_permission_change => true))
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Alberich
|
|
4
|
+
describe PrivilegesController do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@role = FactoryGirl.create(:role)
|
|
8
|
+
@privilege = FactoryGirl.create(:privilege, :role_id => @role.id)
|
|
9
|
+
@admin_permission = FactoryGirl.create(:admin_permission)
|
|
10
|
+
@admin = @admin_permission.user
|
|
11
|
+
mock_warden(@admin)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "GET index" do
|
|
15
|
+
it "assigns all privileges as @privileges" do
|
|
16
|
+
get :index, {}
|
|
17
|
+
assigns(:privileges).should include(@privilege)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "GET show" do
|
|
22
|
+
it "assigns the requested privilege as @privilege" do
|
|
23
|
+
get :show, {:id => @privilege.to_param}
|
|
24
|
+
assigns(:privilege).should eq(@privilege)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "GET new" do
|
|
29
|
+
it "assigns a new privilege as @privilege" do
|
|
30
|
+
get :new, {}
|
|
31
|
+
assigns(:privilege).should be_a_new(Privilege)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "GET edit" do
|
|
36
|
+
it "assigns the requested privilege as @privilege" do
|
|
37
|
+
get :edit, {:id => @privilege.to_param}
|
|
38
|
+
assigns(:privilege).should eq(@privilege)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "POST create" do
|
|
43
|
+
describe "with valid params" do
|
|
44
|
+
it "creates a new Privilege" do
|
|
45
|
+
expect {
|
|
46
|
+
post :create, {:privilege => FactoryGirl.attributes_for(:privilege, :role_id => @role.id, :action => "modify").symbolize_keys}
|
|
47
|
+
}.to change(Privilege, :count).by(1)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "assigns a newly created privilege as @privilege" do
|
|
51
|
+
post :create, {:privilege => FactoryGirl.attributes_for(:privilege, :role_id => @role.id, :action => "modify").symbolize_keys}
|
|
52
|
+
assigns(:privilege).should be_a(Privilege)
|
|
53
|
+
assigns(:privilege).should be_persisted
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "redirects to the created privilege" do
|
|
57
|
+
post :create, {:privilege => FactoryGirl.attributes_for(:privilege, :role_id => @role.id, :action => "modify").symbolize_keys}
|
|
58
|
+
response.should redirect_to(@role)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe "with invalid params" do
|
|
63
|
+
it "assigns a newly created but unsaved privilege as @privilege" do
|
|
64
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
65
|
+
Privilege.any_instance.stub(:save).and_return(false)
|
|
66
|
+
post :create, {:privilege => {}}
|
|
67
|
+
assigns(:privilege).should be_a_new(Privilege)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "re-renders the 'new' template" do
|
|
71
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
72
|
+
Privilege.any_instance.stub(:save).and_return(false)
|
|
73
|
+
post :create, {:privilege => {}}
|
|
74
|
+
response.should render_template("new")
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe "PUT update" do
|
|
80
|
+
describe "with valid params" do
|
|
81
|
+
it "updates the requested privilege" do
|
|
82
|
+
# Assuming there are no other privileges in the database, this
|
|
83
|
+
# specifies that the Privilege created on the previous line
|
|
84
|
+
# receives the :update_attributes message with whatever params are
|
|
85
|
+
# submitted in the request.
|
|
86
|
+
Privilege.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
|
|
87
|
+
put :update, {:id => @privilege.to_param, :privilege => {'these' => 'params'}}
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "assigns the requested privilege as @privilege" do
|
|
91
|
+
put :update, {:id => @privilege.to_param, :privilege => FactoryGirl.attributes_for(:privilege, :role_id => @role.id, :action => "modify").symbolize_keys}
|
|
92
|
+
assigns(:privilege).should eq(@privilege)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "redirects to the privilege" do
|
|
96
|
+
put :update, {:id => @privilege.to_param, :privilege => FactoryGirl.attributes_for(:privilege, :role_id => @role.id, :action => "modify").symbolize_keys}
|
|
97
|
+
response.should redirect_to(@role)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe "with invalid params" do
|
|
102
|
+
it "assigns the privilege as @privilege" do
|
|
103
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
104
|
+
Privilege.any_instance.stub(:save).and_return(false)
|
|
105
|
+
put :update, {:id => @privilege.to_param, :privilege => {}}
|
|
106
|
+
assigns(:privilege).should eq(@privilege)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "re-renders the 'edit' template" do
|
|
110
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
111
|
+
Privilege.any_instance.stub(:save).and_return(false)
|
|
112
|
+
put :update, {:id => @privilege.to_param, :privilege => {}}
|
|
113
|
+
response.should render_template("edit")
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "DELETE destroy" do
|
|
119
|
+
it "destroys the requested privilege" do
|
|
120
|
+
expect {
|
|
121
|
+
delete :destroy, {:id => @privilege.to_param}
|
|
122
|
+
}.to change(Privilege, :count).by(-1)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "redirects to the privileges list" do
|
|
126
|
+
delete :destroy, {:id => @privilege.to_param}
|
|
127
|
+
response.should redirect_to(@role)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Alberich
|
|
4
|
+
describe RolesController do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@role = FactoryGirl.create(:role)
|
|
8
|
+
@admin_permission = FactoryGirl.create(:admin_permission)
|
|
9
|
+
@admin = @admin_permission.user
|
|
10
|
+
mock_warden(@admin)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "GET index" do
|
|
14
|
+
it "assigns all roles as @roles" do
|
|
15
|
+
get :index, {}
|
|
16
|
+
assigns(:roles).should include(@role)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "GET show" do
|
|
21
|
+
it "assigns the requested role as @role" do
|
|
22
|
+
get :show, {:id => @role.to_param}
|
|
23
|
+
assigns(:role).should eq(@role)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "GET new" do
|
|
28
|
+
it "assigns a new role as @role" do
|
|
29
|
+
get :new, {}
|
|
30
|
+
assigns(:role).should be_a_new(Role)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe "GET edit" do
|
|
35
|
+
it "assigns the requested role as @role" do
|
|
36
|
+
get :edit, {:id => @role.to_param}
|
|
37
|
+
assigns(:role).should eq(@role)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "POST create" do
|
|
42
|
+
describe "with valid params" do
|
|
43
|
+
it "creates a new Role" do
|
|
44
|
+
expect {
|
|
45
|
+
post :create, {:role => FactoryGirl.attributes_for(:role).symbolize_keys}
|
|
46
|
+
}.to change(Role, :count).by(1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "assigns a newly created role as @role" do
|
|
50
|
+
post :create, {:role => FactoryGirl.attributes_for(:role).symbolize_keys}
|
|
51
|
+
assigns(:role).should be_a(Role)
|
|
52
|
+
assigns(:role).should be_persisted
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "redirects to the created role" do
|
|
56
|
+
post :create, {:role => FactoryGirl.attributes_for(:role).symbolize_keys}
|
|
57
|
+
response.should redirect_to(Role.last)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "with invalid params" do
|
|
62
|
+
it "assigns a newly created but unsaved role as @role" do
|
|
63
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
64
|
+
Role.any_instance.stub(:save).and_return(false)
|
|
65
|
+
post :create, {:role => {}}
|
|
66
|
+
assigns(:role).should be_a_new(Role)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "re-renders the 'new' template" do
|
|
70
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
71
|
+
Role.any_instance.stub(:save).and_return(false)
|
|
72
|
+
post :create, {:role => {}}
|
|
73
|
+
response.should render_template("new")
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe "PUT update" do
|
|
79
|
+
describe "with valid params" do
|
|
80
|
+
it "updates the requested role" do
|
|
81
|
+
# Assuming there are no other roles in the database, this
|
|
82
|
+
# specifies that the Role created on the previous line
|
|
83
|
+
# receives the :update_attributes message with whatever params are
|
|
84
|
+
# submitted in the request.
|
|
85
|
+
Role.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
|
|
86
|
+
put :update, {:id => @role.to_param, :role => {'these' => 'params'}}
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "assigns the requested role as @role" do
|
|
90
|
+
put :update, {:id => @role.to_param, :role => FactoryGirl.attributes_for(:role).symbolize_keys}
|
|
91
|
+
assigns(:role).should eq(@role)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "redirects to the role" do
|
|
95
|
+
put :update, {:id => @role.to_param, :role => FactoryGirl.attributes_for(:role).symbolize_keys}
|
|
96
|
+
response.should redirect_to(@role)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
describe "with invalid params" do
|
|
101
|
+
it "assigns the role as @role" do
|
|
102
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
103
|
+
Role.any_instance.stub(:save).and_return(false)
|
|
104
|
+
put :update, {:id => @role.to_param, :role => {}}
|
|
105
|
+
assigns(:role).should eq(@role)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "re-renders the 'edit' template" do
|
|
109
|
+
# Trigger the behavior that occurs when invalid params are submitted
|
|
110
|
+
Role.any_instance.stub(:save).and_return(false)
|
|
111
|
+
put :update, {:id => @role.to_param, :role => {}}
|
|
112
|
+
response.should render_template("edit")
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
describe "DELETE destroy" do
|
|
118
|
+
it "destroys the requested role" do
|
|
119
|
+
expect {
|
|
120
|
+
delete :destroy, {:id => @role.to_param}
|
|
121
|
+
}.to change(Role, :count).by(-1)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "redirects to the roles list" do
|
|
125
|
+
delete :destroy, {:id => @role.to_param}
|
|
126
|
+
response.should redirect_to(roles_path)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|