ixtlan-guard 0.7.0 → 0.7.2
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/features/generators.feature +0 -10
- data/features/step_definitions/simple_steps.rb +1 -82
- data/lib/ixtlan/guard/guard_ng.rb +77 -76
- data/lib/ixtlan/guard/guard_rails.rb +8 -8
- data/lib/ixtlan/guard/railtie.rb +1 -1
- data/spec/guard_cache_spec.rb +1 -1
- data/spec/guard_export_spec.rb +118 -90
- data/spec/guard_spec.rb +1 -16
- data/spec/guard_with_associations_spec.rb +114 -0
- data/spec/guard_with_associations_spec.rb~ +106 -0
- data/spec/guards/allow_all_defaults_guard.yml +1 -1
- data/spec/guards/defaults_guard.yml +1 -1
- data/spec/guards/no_defaults_guard.yml +1 -1
- data/spec/guards/only_defaults_guard.yml +1 -1
- data/spec/guards/regions_guard.yml +8 -0
- data/spec/guards/regions_guard.yml~ +2 -0
- data/spec/guards/users_guard.yml +1 -1
- metadata +8 -24
- data/lib/generators/active_record/templates/flavor_migration.rb +0 -13
- data/lib/generators/active_record/templates/flavor_model.rb +0 -8
- data/lib/generators/active_record/templates/group_model.rb +0 -43
- data/lib/generators/active_record/templates/group_user_migration.rb +0 -13
- data/lib/generators/active_record/templates/user_model.rb +0 -124
- data/lib/generators/active_record/user_management_models_generator.rb +0 -202
- data/lib/generators/erb/user_management_controller_generator.rb +0 -10
- data/lib/generators/ixtlan/maintenance_scaffold/USAGE +0 -8
- data/lib/generators/ixtlan/maintenance_scaffold/maintenance_scaffold_generator.rb +0 -40
- data/lib/generators/ixtlan/permissions_scaffold/USAGE +0 -8
- data/lib/generators/ixtlan/permissions_scaffold/permissions_scaffold_generator.rb +0 -33
- data/lib/generators/ixtlan/user_management_controller/USAGE +0 -8
- data/lib/generators/ixtlan/user_management_controller/user_management_controller_generator.rb +0 -23
- data/lib/generators/ixtlan/user_management_models/USAGE +0 -8
- data/lib/generators/ixtlan/user_management_models/user_management_models_generator.rb +0 -19
- data/lib/generators/ixtlan/user_management_scaffold/user_management_scaffold_generator.rb +0 -13
- data/lib/ixtlan/guard/controllers/maintenance_controller.rb +0 -45
- data/lib/ixtlan/guard/controllers/permissions_controller.rb +0 -41
- data/lib/ixtlan/guard/models/maintenance.rb +0 -55
- data/lib/ixtlan/guard/models/user_update_manager.rb +0 -95
- data/lib/ixtlan/guard/spec/user_management_models_spec.rb +0 -193
data/lib/generators/ixtlan/user_management_controller/user_management_controller_generator.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
|
2
|
-
require 'generators/ixtlan/scaffold/scaffold_generator'
|
3
|
-
|
4
|
-
module Ixtlan
|
5
|
-
class UserManagementControllerGenerator < ScaffoldGenerator
|
6
|
-
|
7
|
-
source_root File.expand_path('../../templates', __FILE__)
|
8
|
-
|
9
|
-
class_option :orm, :banner => "NAME", :type => :string, :required => true,
|
10
|
-
:desc => "ORM to generate the controller for"
|
11
|
-
class_option :gwt, :banner => "PACKAGE_NAME", :type => :string,
|
12
|
-
:desc => "given gwt package name will generate gwt code"
|
13
|
-
|
14
|
-
|
15
|
-
def create_controller_files
|
16
|
-
template 'controller.rb', File.join('app/controllers', class_path, "#{controller_file_name}_controller.rb")
|
17
|
-
end
|
18
|
-
|
19
|
-
hook_for :template_engine
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Ixtlan
|
2
|
-
class UserManagementModelsGenerator < Rails::Generators::NamedBase #metagenerator
|
3
|
-
arguments.clear # clear name argument from NamedBase
|
4
|
-
argument :params, :type => :array, :default => ['user'], :required => false, :banner => "user_model [field:type ..] [group_model [field:type ..] [flavor_model1 [field:type ..] flavor_model2 [field:type ..]]]", :desc => "group default: group with field name:string"
|
5
|
-
|
6
|
-
class_option :gwt, :banner => "PACKAGE_NAME", :type => :string,
|
7
|
-
:desc => "given gwt package name will generate gwt code"
|
8
|
-
|
9
|
-
def name # set alias so NamedBase uses the model as its name
|
10
|
-
@params[0].sub(/\s+.*/, '').singularize
|
11
|
-
end
|
12
|
-
|
13
|
-
attr_reader :params
|
14
|
-
|
15
|
-
hook_for :orm, :required => true
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'generators/ixtlan/user_management_models/user_management_models_generator'
|
2
|
-
|
3
|
-
module Ixtlan
|
4
|
-
class UserManagementScaffoldGenerator < UserManagementModelsGenerator #metagenerator
|
5
|
-
|
6
|
-
source_root File.expand_path('../../templates', __FILE__)
|
7
|
-
|
8
|
-
hook_for :user_management_controller, :default => :user_management_controller
|
9
|
-
hook_for :stylesheets, :in => :rails
|
10
|
-
hook_for :gwt, :type => :boolean, :default => false
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'ixtlan/models/maintenance'
|
2
|
-
module Ixtlan
|
3
|
-
module Guard
|
4
|
-
module Controllers
|
5
|
-
module MaintenanceController
|
6
|
-
|
7
|
-
# GET /maintenance
|
8
|
-
# GET /maintenance.xml
|
9
|
-
# GET /maintenance.json
|
10
|
-
def index
|
11
|
-
@maintenance = ::Ixtlan::Guard::Models::Maintenance.new
|
12
|
-
@maintenance.groups = guard.blocked_groups
|
13
|
-
|
14
|
-
respond_to do |format|
|
15
|
-
format.html # index.html.erb
|
16
|
-
format.xml { render :xml => @maintenance }
|
17
|
-
format.json { render :json => @maintenance }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# PUT /maintenance/block
|
22
|
-
def block
|
23
|
-
guard.block_groups(param[:groups])
|
24
|
-
|
25
|
-
respond_to do |format|
|
26
|
-
format.html { redirect_to(maintenance_url) }
|
27
|
-
format.xml { head :ok }
|
28
|
-
format.json { head :ok }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# PUT /maintenance/resume
|
33
|
-
def resume
|
34
|
-
guard.block_groups([])
|
35
|
-
|
36
|
-
respond_to do |format|
|
37
|
-
format.html { redirect_to(maintenance_url) }
|
38
|
-
format.xml { head :ok }
|
39
|
-
format.json { head :ok }
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Ixtlan
|
2
|
-
module Guard
|
3
|
-
module Controllers
|
4
|
-
module PermissionsController
|
5
|
-
|
6
|
-
# GET /permissions
|
7
|
-
# GET /permissions.xml
|
8
|
-
# GET /permissions.json
|
9
|
-
def index
|
10
|
-
respond_to do |format|
|
11
|
-
format.html
|
12
|
-
format.xml { render :xml => guard.permissions(self).to_xml }
|
13
|
-
format.json { render :json => guard.permissions(self).to_json }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# GET /permissions/1
|
18
|
-
# GET /permissions/1.xml
|
19
|
-
# GET /permissions/1.json
|
20
|
-
def show
|
21
|
-
controller = Object.new
|
22
|
-
def controller.current_user(u = nil)
|
23
|
-
@u = u if u
|
24
|
-
@u
|
25
|
-
end
|
26
|
-
if defined? ::DataMapper
|
27
|
-
controller.current_user(current_user.class.get(params[:id]))
|
28
|
-
else
|
29
|
-
controller.current_user(current_user.class.find(params[:id]))
|
30
|
-
end
|
31
|
-
|
32
|
-
respond_to do |format|
|
33
|
-
format.html
|
34
|
-
format.xml { render :xml => guard.permissions(controller).to_xml }
|
35
|
-
format.json { render :json => guard.permissions(controller).to_json }
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
unless String.respond_to? "plural"
|
2
|
-
class String
|
3
|
-
def plural
|
4
|
-
self + "s"
|
5
|
-
end
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
module Ixtlan
|
10
|
-
module SerializableModel
|
11
|
-
def self.included(model)
|
12
|
-
model.send :include, ActiveModel::Serializers::JSON
|
13
|
-
model.send :include, ActiveModel::Serializers::Xml
|
14
|
-
end
|
15
|
-
|
16
|
-
def attributes=(attributes)
|
17
|
-
attributes.each do |k, v|
|
18
|
-
if k == k.plural
|
19
|
-
v = case v
|
20
|
-
when String
|
21
|
-
[v]
|
22
|
-
when Array
|
23
|
-
v
|
24
|
-
when Hash
|
25
|
-
v.values.flatten
|
26
|
-
end
|
27
|
-
end
|
28
|
-
send("#{k}=", v)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def attributes
|
33
|
-
map = instance_variables.collect do |name|
|
34
|
-
[name[1,1000], send(name[1,1000].to_sym)]
|
35
|
-
end.reject do |x|
|
36
|
-
x[1] == nil
|
37
|
-
end
|
38
|
-
Hash[map]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
module Ixtlan
|
44
|
-
module Guard
|
45
|
-
module Models
|
46
|
-
class Maintenance
|
47
|
-
|
48
|
-
include Ixtlan::SerializableModel
|
49
|
-
|
50
|
-
attr_accessor :groups
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,95 +0,0 @@
|
|
1
|
-
module Ixtlan
|
2
|
-
module Guard
|
3
|
-
module Models
|
4
|
-
class UserUpdateManager
|
5
|
-
|
6
|
-
def initialize(options)
|
7
|
-
@group_model = options[:group_model]
|
8
|
-
@user_id = options[:user_id].to_sym
|
9
|
-
@plural_group_name = options[:plural_group_name].to_sym
|
10
|
-
@group_id = options[:group_id].to_sym
|
11
|
-
@group_ids = "#{options[:group_id]}s"
|
12
|
-
end
|
13
|
-
|
14
|
-
def update_groups(user, params = [])
|
15
|
-
allowed_ids = user.current_user.all_groups.collect { |g| g.id.to_s }
|
16
|
-
|
17
|
-
group_ids = params[@group_ids] || []
|
18
|
-
group_ids = intersect(group_ids, allowed_ids)
|
19
|
-
|
20
|
-
current_ids = user.send(@plural_group_name).collect { |g| g.id.to_s }
|
21
|
-
current_ids = intersect(current_ids, allowed_ids)
|
22
|
-
|
23
|
-
# add
|
24
|
-
(group_ids - current_ids).each do |gid|
|
25
|
-
user.send(@plural_group_name) << @group_model.find(gid)
|
26
|
-
end
|
27
|
-
|
28
|
-
#delete
|
29
|
-
(current_ids - group_ids).each do |gid|
|
30
|
-
user.groups.delete(@group_model.find(gid))
|
31
|
-
end
|
32
|
-
|
33
|
-
user.save
|
34
|
-
end
|
35
|
-
|
36
|
-
def update(user, params = {}, options = {})
|
37
|
-
raise "no user" unless user
|
38
|
-
user.current_user = params.delete("current_user") || params.delete(:current_user) unless user.current_user
|
39
|
-
raise "'current_user' not set" unless user.current_user
|
40
|
-
|
41
|
-
flavor_id = options[:flavor_id].to_sym
|
42
|
-
flavor_ids = "#{options[:flavor_id]}s"
|
43
|
-
association_model = options[:association_model]
|
44
|
-
retrieve_flavors_method = options[:flavors_for_group].to_sym
|
45
|
-
|
46
|
-
allowed_ids = user.current_user.send(retrieve_flavors_method, @group_model.admin_group).collect {|i| i.id }
|
47
|
-
allowed_group_ids = user.current_user.all_groups.collect { |g| g.id.to_s }
|
48
|
-
|
49
|
-
group_ids = params[@group_ids] || []
|
50
|
-
group_ids = intersect(group_ids, allowed_group_ids)
|
51
|
-
group_ids.each do |gid|
|
52
|
-
g = @group_model.find(gid)
|
53
|
-
|
54
|
-
# calculate intersection of current and allowed
|
55
|
-
current_ids = user.send(retrieve_flavors_method, gid.to_i).collect { |d| d.id }
|
56
|
-
current_ids = intersect(current_ids, allowed_ids)
|
57
|
-
|
58
|
-
# calculate intersection of target and allowed
|
59
|
-
target_ids = ((params.delete(g.to_name) || {})[flavor_ids] || []).collect { |i| i.to_i }
|
60
|
-
target_ids = intersect(target_ids, allowed_ids)
|
61
|
-
|
62
|
-
# delete
|
63
|
-
(current_ids - target_ids).each do |id|
|
64
|
-
return false unless association_model.delete_all(["user_id=? and group_id=? and #{flavor_id}=?", user.id, gid, id])
|
65
|
-
end
|
66
|
-
|
67
|
-
# add
|
68
|
-
(target_ids - current_ids).each do |id|
|
69
|
-
return false unless association_model.create(@user_id => user.id, @group_id => gid, flavor_id => id)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
true
|
73
|
-
end
|
74
|
-
|
75
|
-
def managed_flavors_for_group(user, group_or_id, options)
|
76
|
-
retrieve_flavors_method = options[:flavors_for_group].to_sym
|
77
|
-
group = @group_model.get(group_or_id)
|
78
|
-
if group.root?
|
79
|
-
[]
|
80
|
-
else
|
81
|
-
existing = user.send(retrieve_flavors_method, group)
|
82
|
-
managed = user.send(retrieve_flavors_method, @group_model.admin_group)
|
83
|
-
intersect(managed, existing)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
private
|
88
|
-
|
89
|
-
def intersect(set1, set2)
|
90
|
-
set1 - (set1 - set2)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
@@ -1,193 +0,0 @@
|
|
1
|
-
shared_examples_for 'integration-test' do
|
2
|
-
|
3
|
-
describe "UserManagementModels" do
|
4
|
-
|
5
|
-
before :all do
|
6
|
-
@root = Group.find_by_name(Group::ROOT) || Group.create(:name => Group::ROOT)
|
7
|
-
@admin = Group.find_by_name(Group::ADMIN) || Group.create(:name => Group::ADMIN)
|
8
|
-
@translator = Group.find_by_name("translator") || Group.create(:name => "translator")
|
9
|
-
@superuser = User.find_by_id(1)
|
10
|
-
if @superuser.nil? || @superuser.groups == []
|
11
|
-
@superuser = User.create!
|
12
|
-
@superuser.groups << @root
|
13
|
-
@superuser.save!
|
14
|
-
end
|
15
|
-
@main = Domain.find_by_name('main') || Domain.create(:name => 'main')
|
16
|
-
@sub = Domain.find_by_name('sub') || Domain.create(:name => 'sub')
|
17
|
-
DomainsGroupsUser.delete_all
|
18
|
-
@adminuser = User.new('group_ids' => [@admin.id])
|
19
|
-
@adminuser.current_user = @superuser
|
20
|
-
@adminuser.save
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "root user" do
|
24
|
-
it 'should create user' do
|
25
|
-
@adminuser.id.should_not be_nil
|
26
|
-
@adminuser.groups.should == [@admin]
|
27
|
-
@adminuser.domains_for_group(@admin).should == []
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'should add domain to user via update' do
|
31
|
-
@adminuser.domains_for_group(@admin).member?(@main).should be_false
|
32
|
-
@adminuser.current_user = @superuser
|
33
|
-
@adminuser.update_attributes(Group::ADMIN => { 'domain_ids' => [@main.id.to_s] }, 'group_ids' => [@admin.id.to_s])
|
34
|
-
@adminuser.domains_for_group(@admin).member?(@main).should be_true
|
35
|
-
@adminuser.current_user.should be_nil
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'should raise error when adding a domain without current_user set' do
|
39
|
-
@adminuser.current_user = nil
|
40
|
-
lambda { @adminuser.update_attributes(Group::ADMIN => { 'domain_ids' => [@sub.id.to_s] }, 'group_ids' => [@admin.id.to_s]) }.should raise_error
|
41
|
-
@adminuser.current_user.should be_nil
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'should add new group through update' do
|
45
|
-
@adminuser.groups.member?(@translator).should be_false
|
46
|
-
@adminuser.current_user = @superuser
|
47
|
-
@adminuser.update_attributes('group_ids' => [@translator.id.to_s])
|
48
|
-
@adminuser.groups.member?(@translator).should be_true
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'should raise error when adding new group' do
|
52
|
-
@adminuser.groups.member?(@root).should be_false
|
53
|
-
@adminuser.current_user = nil
|
54
|
-
lambda{ @adminuser.update_attributes('group_ids' => [@translator.id.to_s])}.should raise_error
|
55
|
-
@adminuser.current_user.should be_nil
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe "admin user" do
|
60
|
-
|
61
|
-
before :all do
|
62
|
-
@locales = Group.find_by_name("locales") || Group.create(:name => "locales")
|
63
|
-
@adminuser.current_user = @superuser
|
64
|
-
@adminuser.update_attributes('group_ids' => [@admin.id.to_s, @locales.id.to_s], Group::ADMIN => {"domain_ids" => [@main.id.to_s]})
|
65
|
-
@adminuser.save
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should create new users' do
|
69
|
-
user = User.new('group_ids' => [@admin.id.to_s])
|
70
|
-
user.current_user = @adminuser
|
71
|
-
user.save.should be_true
|
72
|
-
user.groups.member?(@admin).should be_true
|
73
|
-
user.groups.size.should == 1
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'should not add group via update_attributes which admin does not belong to' do
|
77
|
-
user = User.create({:current_user => @adminuser, 'group_ids' => [@root.id.to_s]})
|
78
|
-
user.id.should_not be_nil
|
79
|
-
|
80
|
-
user.groups.member?(@root).should be_false
|
81
|
-
user.groups.size.should == 0
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'should not add group via update_attributes which admin does not belong to' do
|
85
|
-
user = User.create(:current_user => @adminuser)
|
86
|
-
user.id.should_not be_nil
|
87
|
-
|
88
|
-
user.current_user = @adminuser
|
89
|
-
user.update_attributes('group_ids' => [@root.id.to_s]).should be_true
|
90
|
-
|
91
|
-
user.groups.member?(@root).should be_false
|
92
|
-
user.groups.size.should == 0
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'should be able to delete only groups belonging to admin, leave others alone' do
|
96
|
-
user = User.create(:current_user => @superuser, 'group_ids' => [@translator.id.to_s])
|
97
|
-
user.groups.member?(@translator).should be_true
|
98
|
-
|
99
|
-
user.current_user = @adminuser
|
100
|
-
user.update_attributes('group_ids' => []).should be_true
|
101
|
-
|
102
|
-
user.groups.member?(@translator).should be_true
|
103
|
-
user.groups.size.should == 1
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'should be able to add and delete groups belonging to admin' do
|
107
|
-
user = User.create(:current_user => @superuser, 'group_ids' => [@translator.id.to_s])
|
108
|
-
user.id.should_not be_nil
|
109
|
-
user.groups.member?(@translator).should be_true
|
110
|
-
|
111
|
-
user.current_user = @adminuser
|
112
|
-
user.update_attributes('group_ids' => [@admin.id.to_s, @locales.id.to_s]).should be_true
|
113
|
-
|
114
|
-
user.groups.member?(@translator).should be_true
|
115
|
-
user.groups.size.should == 3
|
116
|
-
|
117
|
-
user.current_user = @adminuser
|
118
|
-
user.update_attributes('group_ids' => [@locales.id.to_s]).should be_true
|
119
|
-
|
120
|
-
user.groups.member?(@locales).should be_true
|
121
|
-
user.groups.member?(@translator).should be_true
|
122
|
-
user.groups.size.should == 2
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'should create new users with domains' do
|
126
|
-
# first create to have an ID
|
127
|
-
user = User.create(:current_user => @adminuser)
|
128
|
-
user.id.should_not be_nil
|
129
|
-
# then add the domain
|
130
|
-
user.update_attributes(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s], "admin" => {"domain_ids" => [@main.id.to_s] })
|
131
|
-
|
132
|
-
user.groups.member?(@admin).should be_true
|
133
|
-
user.groups.size.should == 1
|
134
|
-
|
135
|
-
user.domains_for_group(@admin).member?(@main).should be_true
|
136
|
-
user.domains_for_group(@admin).size.should == 1
|
137
|
-
end
|
138
|
-
|
139
|
-
it 'should add only domains which belongs to admin' do
|
140
|
-
# first create to have an ID
|
141
|
-
user = User.create(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s])
|
142
|
-
user.id.should_not be_nil
|
143
|
-
# then add the domain
|
144
|
-
user.update_attributes(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s], "admin" => {"domain_ids" => [@main.id.to_s, @sub.id.to_s] })
|
145
|
-
|
146
|
-
user.groups.member?(@admin).should be_true
|
147
|
-
user.groups.size.should == 1
|
148
|
-
|
149
|
-
user.domains_for_group(@admin).member?(@main).should be_true
|
150
|
-
user.domains_for_group(@admin).size.should == 1
|
151
|
-
end
|
152
|
-
|
153
|
-
it 'should add only domains belonging to the admin' do
|
154
|
-
# first create to have an ID
|
155
|
-
user = User.create(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s])
|
156
|
-
user.id.should_not be_nil
|
157
|
-
# then add the domain
|
158
|
-
user.update_attributes(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s], "admin" => {"domain_ids" => [@main.id.to_s, @sub.id.to_s] })
|
159
|
-
|
160
|
-
user.groups.member?(@admin).should be_true
|
161
|
-
user.groups.size.should == 1
|
162
|
-
|
163
|
-
user.domains_for_group(@admin).member?(@main).should be_true
|
164
|
-
user.domains_for_group(@admin).size.should == 1
|
165
|
-
|
166
|
-
user.update_attributes(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s], "admin" => {"domain_ids" => [] })
|
167
|
-
user.domains_for_group(@admin).size.should == 0
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'should delete only domains belonging to the admin' do
|
171
|
-
# first create to have an ID
|
172
|
-
user = User.create(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s])
|
173
|
-
user.id.should_not be_nil
|
174
|
-
# then add the domain
|
175
|
-
user.update_attributes(:current_user => @superuser, 'group_ids' => [@admin.id.to_s], "admin" => {"domain_ids" => [@main.id.to_s, @sub.id.to_s] })
|
176
|
-
|
177
|
-
user.groups.member?(@admin).should be_true
|
178
|
-
user.groups.size.should == 1
|
179
|
-
|
180
|
-
user.domains_for_group(@admin).member?(@main).should be_true
|
181
|
-
user.domains_for_group(@admin).member?(@sub).should be_true
|
182
|
-
user.domains_for_group(@admin).size.should == 2
|
183
|
-
|
184
|
-
user.update_attributes(:current_user => @adminuser, 'group_ids' => [@admin.id.to_s], "admin" => {"domain_ids" => [] })
|
185
|
-
|
186
|
-
user.domains_for_group(@admin).member?(@main).should be_false
|
187
|
-
user.domains_for_group(@admin).member?(@sub).should be_true
|
188
|
-
user.domains_for_group(@admin).size.should == 1
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|