patrick-lockdown 2.0.4.1
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/README.md +42 -0
- data/Rakefile +54 -0
- data/lib/lockdown.rb +42 -0
- data/lib/lockdown/access.rb +108 -0
- data/lib/lockdown/configuration.rb +209 -0
- data/lib/lockdown/database.rb +122 -0
- data/lib/lockdown/delivery.rb +28 -0
- data/lib/lockdown/errors.rb +7 -0
- data/lib/lockdown/frameworks/rails.rb +77 -0
- data/lib/lockdown/frameworks/rails/controller.rb +145 -0
- data/lib/lockdown/frameworks/rails/view.rb +51 -0
- data/lib/lockdown/helper.rb +40 -0
- data/lib/lockdown/orms/active_record.rb +66 -0
- data/lib/lockdown/permission.rb +56 -0
- data/lib/lockdown/resource.rb +54 -0
- data/lib/lockdown/session.rb +50 -0
- data/lib/lockdown/user_group.rb +16 -0
- data/patrick-lockdown.gemspec +62 -0
- data/tags +142 -0
- data/test/helper.rb +10 -0
- data/test/lockdown/test_access.rb +80 -0
- data/test/lockdown/test_configuration.rb +195 -0
- data/test/lockdown/test_delivery.rb +224 -0
- data/test/lockdown/test_helper.rb +33 -0
- data/test/lockdown/test_permission.rb +73 -0
- data/test/lockdown/test_resource.rb +47 -0
- data/test/lockdown/test_session.rb +31 -0
- data/test/lockdown/test_user_group.rb +17 -0
- metadata +96 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class H
|
4
|
+
include Lockdown::Helper
|
5
|
+
end
|
6
|
+
|
7
|
+
class TestLockdownHelper < MiniTest::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@h = H.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_administrator_group_name
|
14
|
+
assert_equal 'Administrators', @h.administrator_group_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_user_groups_hbtm_reference
|
18
|
+
assert_equal :user_groups, @h.user_groups_hbtm_reference
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_user_group_id_reference
|
22
|
+
assert_equal 'user_group_id', @h.user_group_id_reference
|
23
|
+
end
|
24
|
+
|
25
|
+
def user_hbtm_reference
|
26
|
+
assert_equal :users, @h.users_hbtm_reference
|
27
|
+
end
|
28
|
+
|
29
|
+
def user_id_reference
|
30
|
+
assert_equal 'user_id', @h.user_id_reference
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestLockdownPermission < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@permission = Lockdown::Permission.new(:my_account)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_initializer_sets_correct_state
|
10
|
+
assert_equal 'my_account', @permission.name
|
11
|
+
assert_equal [], @permission.resources
|
12
|
+
assert_equal false, @permission.public?
|
13
|
+
assert_equal false, @permission.protected?
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_setting_public
|
17
|
+
@permission.is_public
|
18
|
+
assert_equal true, @permission.public?
|
19
|
+
assert_equal false, @permission.protected?
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_setting_protected
|
23
|
+
@permission.is_protected
|
24
|
+
assert_equal true, @permission.protected?
|
25
|
+
assert_equal false, @permission.public?
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_resource
|
29
|
+
@permission.resource(:users)
|
30
|
+
|
31
|
+
resource = @permission.resources.first
|
32
|
+
assert_equal resource.name, 'users'
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_alias_controller
|
36
|
+
@permission.controller(:users)
|
37
|
+
|
38
|
+
controller = @permission.controllers.first
|
39
|
+
assert_equal controller.name, 'users'
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_resource_with_block
|
43
|
+
@permission.resource(:users) do
|
44
|
+
except :destroy
|
45
|
+
end
|
46
|
+
|
47
|
+
resource = @permission.resources.first
|
48
|
+
assert_equal resource.exceptions, ['destroy']
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_alias_controller_with_block
|
52
|
+
@permission.controller(:users) do
|
53
|
+
except :destroy
|
54
|
+
end
|
55
|
+
|
56
|
+
controller = @permission.controllers.first
|
57
|
+
assert_equal controller.exceptions, ['destroy']
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_regex_pattern
|
61
|
+
@permission.resource(:users)
|
62
|
+
|
63
|
+
assert_equal @permission.regex_pattern, "(\/users(\/.*)?)"
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_regex_pattern_with_multiple_resources
|
67
|
+
@permission.resource(:users)
|
68
|
+
@permission.resource(:posts)
|
69
|
+
|
70
|
+
assert_equal @permission.regex_pattern, "(\/users(\/.*)?)|(\/posts(\/.*)?)"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestLockdownResource < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@resource = Lockdown::Resource.new(:users)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_initializer_sets_correct_state
|
10
|
+
assert_equal @resource.name, 'users'
|
11
|
+
assert_equal @resource.regex_pattern, "\/users(\/.*)?"
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_except_sets_correct_regex_pattern
|
15
|
+
@resource.except(:destroy)
|
16
|
+
assert_equal @resource.regex_pattern, "\/users(?!\/(destroy))(\/.*)?"
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_except_with_multiple_params_sets_correct_regex_pattern
|
20
|
+
@resource.except(:index, :destroy)
|
21
|
+
assert_equal @resource.regex_pattern, "\/users(?!\/(index|destroy))(\/.*)?"
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_except_with_no_params_preserves_regex_pattern
|
25
|
+
resource = Lockdown::Resource.new(:users)
|
26
|
+
resource.except()
|
27
|
+
assert_equal resource.regex_pattern, "\/users(\/.*)?"
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_only_sets_correct_regex_pattern
|
31
|
+
@resource.only(:index)
|
32
|
+
assert_equal @resource.regex_pattern, "\/users\/(index)(\/)?"
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_only_with_multiple_params_sets_correct_regex_pattern
|
36
|
+
@resource.only(:show, :edit)
|
37
|
+
assert_equal @resource.regex_pattern, "\/users\/(show|edit)(\/)?"
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_only_with_no_params_preserves_regex_pattern
|
41
|
+
resource = Lockdown::Resource.new(:users)
|
42
|
+
resource.only()
|
43
|
+
assert_equal resource.regex_pattern, "\/users(\/.*)?"
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class Authorization
|
4
|
+
extend Lockdown::Access
|
5
|
+
end
|
6
|
+
|
7
|
+
class S
|
8
|
+
include Lockdown::Session
|
9
|
+
|
10
|
+
attr_accessor :session_access_rights
|
11
|
+
end
|
12
|
+
|
13
|
+
class TestLockdownSession < MiniTest::Unit::TestCase
|
14
|
+
|
15
|
+
def setup
|
16
|
+
Lockdown::Configuration.reset
|
17
|
+
@s = S.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_access_in_perm
|
21
|
+
Authorization.permission :posts
|
22
|
+
Authorization.permission :users
|
23
|
+
Authorization.public_access :posts
|
24
|
+
|
25
|
+
@s.session_access_rights = Lockdown::Configuration.public_access
|
26
|
+
|
27
|
+
assert_equal true , @s.send(:access_in_perm?, 'posts')
|
28
|
+
assert_equal false , @s.send(:access_in_perm?, 'users')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestLockdownUserGroup < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@user_group = Lockdown::UserGroup.new(:managers)
|
7
|
+
@user_group.permissions << Lockdown::Permission.new(:users)
|
8
|
+
@user_group.permissions << Lockdown::Permission.new(:accounts)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initializer_sets_correct_state
|
12
|
+
assert_equal 'managers', @user_group.name
|
13
|
+
assert_equal 'accounts', @user_group.permissions.pop.name
|
14
|
+
assert_equal 'users', @user_group.permissions.pop.name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: patrick-lockdown
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 125
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- 4
|
10
|
+
- 1
|
11
|
+
version: 2.0.4.1
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- Andrew Stone
|
15
|
+
- Patrick Baselier
|
16
|
+
autorequire:
|
17
|
+
bindir: bin
|
18
|
+
cert_chain: []
|
19
|
+
|
20
|
+
date: 2012-05-10 00:00:00 +02:00
|
21
|
+
default_executable:
|
22
|
+
dependencies: []
|
23
|
+
|
24
|
+
description: "Restrict access to your controller actions. "
|
25
|
+
email: patrick.baselier@gmail.com
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- README.md
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- Rakefile
|
35
|
+
- lib/lockdown.rb
|
36
|
+
- lib/lockdown/access.rb
|
37
|
+
- lib/lockdown/configuration.rb
|
38
|
+
- lib/lockdown/database.rb
|
39
|
+
- lib/lockdown/delivery.rb
|
40
|
+
- lib/lockdown/errors.rb
|
41
|
+
- lib/lockdown/frameworks/rails.rb
|
42
|
+
- lib/lockdown/frameworks/rails/controller.rb
|
43
|
+
- lib/lockdown/frameworks/rails/view.rb
|
44
|
+
- lib/lockdown/helper.rb
|
45
|
+
- lib/lockdown/orms/active_record.rb
|
46
|
+
- lib/lockdown/permission.rb
|
47
|
+
- lib/lockdown/resource.rb
|
48
|
+
- lib/lockdown/session.rb
|
49
|
+
- lib/lockdown/user_group.rb
|
50
|
+
- patrick-lockdown.gemspec
|
51
|
+
- tags
|
52
|
+
- test/helper.rb
|
53
|
+
- test/lockdown/test_access.rb
|
54
|
+
- test/lockdown/test_configuration.rb
|
55
|
+
- test/lockdown/test_delivery.rb
|
56
|
+
- test/lockdown/test_helper.rb
|
57
|
+
- test/lockdown/test_permission.rb
|
58
|
+
- test/lockdown/test_resource.rb
|
59
|
+
- test/lockdown/test_session.rb
|
60
|
+
- test/lockdown/test_user_group.rb
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: https://github.com/ludo/patrick-lockdown
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
requirements: []
|
89
|
+
|
90
|
+
rubyforge_project:
|
91
|
+
rubygems_version: 1.5.2
|
92
|
+
signing_key:
|
93
|
+
specification_version: 3
|
94
|
+
summary: Authorization system for Rails
|
95
|
+
test_files: []
|
96
|
+
|