cbac 0.5.4 → 0.6.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.
Files changed (83) hide show
  1. data/Manifest +74 -65
  2. data/README.rdoc +51 -48
  3. data/Rakefile +39 -36
  4. data/cbac.gemspec +31 -31
  5. data/config/cbac/context_roles.rb +21 -0
  6. data/config/cbac/privileges.rb +50 -0
  7. data/context_roles.rb +21 -0
  8. data/init.rb +3 -11
  9. data/lib/cbac.rb +132 -114
  10. data/lib/cbac/cbac_pristine/pristine.rb +134 -134
  11. data/lib/cbac/cbac_pristine/pristine_file.rb +170 -170
  12. data/lib/cbac/cbac_pristine/pristine_permission.rb +193 -193
  13. data/lib/cbac/cbac_pristine/pristine_role.rb +41 -41
  14. data/lib/cbac/config.rb +9 -9
  15. data/lib/cbac/context_role.rb +27 -27
  16. data/lib/cbac/generic_role.rb +5 -5
  17. data/lib/cbac/known_permission.rb +14 -14
  18. data/lib/cbac/membership.rb +3 -3
  19. data/lib/cbac/permission.rb +5 -5
  20. data/lib/cbac/privilege.rb +117 -116
  21. data/lib/cbac/privilege_new_api.rb +56 -56
  22. data/lib/cbac/privilege_set.rb +29 -29
  23. data/lib/cbac/privilege_set_record.rb +6 -6
  24. data/lib/cbac/setup.rb +37 -30
  25. data/{generators → lib/generators}/cbac/USAGE +33 -33
  26. data/lib/generators/cbac/cbac_generator.rb +75 -0
  27. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/config/cbac.pristine +2 -2
  28. data/lib/generators/cbac/copy_files/config/context_roles.rb +17 -0
  29. data/lib/generators/cbac/copy_files/config/privileges.rb +25 -0
  30. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/controllers/generic_roles_controller.rb +30 -30
  31. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/controllers/memberships_controller.rb +22 -22
  32. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/controllers/permissions_controller.rb +61 -61
  33. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/controllers/upgrade_controller.rb +23 -23
  34. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/fixtures/cbac_generic_roles.yml +9 -9
  35. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/fixtures/cbac_memberships.yml +8 -8
  36. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/fixtures/cbac_permissions.yml +8 -8
  37. data/lib/generators/cbac/copy_files/initializers/cbac_config.rb +2 -0
  38. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/migrate/create_cbac_from_scratch.rb +59 -59
  39. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/migrate/create_cbac_upgrade_path.rb +31 -31
  40. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/stylesheets/cbac.css +65 -65
  41. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/tasks/cbac.rake +345 -345
  42. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/generic_roles/index.html.erb +58 -58
  43. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/layouts/cbac.html.erb +18 -18
  44. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/memberships/_update.html.erb +11 -11
  45. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/memberships/index.html.erb +23 -22
  46. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/permissions/_update_context_role.html.erb +11 -11
  47. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/permissions/_update_generic_role.html.erb +11 -11
  48. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/permissions/index.html.erb +39 -39
  49. data/{generators/cbac/templates → lib/generators/cbac/copy_files}/views/upgrade/index.html.erb +31 -31
  50. data/nbproject/private/private.properties +3 -0
  51. data/nbproject/private/private.xml +4 -0
  52. data/nbproject/private/rake-d.txt +0 -0
  53. data/nbproject/project.properties +9 -0
  54. data/nbproject/project.xml +16 -0
  55. data/privileges.rb +50 -0
  56. data/rails/init.rb +1 -0
  57. data/spec/cbac_pristine_file_spec.rb +329 -329
  58. data/spec/cbac_pristine_permission_spec.rb +358 -358
  59. data/spec/cbac_pristine_role_spec.rb +85 -85
  60. data/spec/rcov.opts +1 -1
  61. data/spec/spec.opts +4 -4
  62. data/spec/spec_helper.rb +11 -11
  63. data/tasks/cbac.rake +345 -345
  64. data/test/db/test.sqlite3 +0 -0
  65. data/test/fixtures/cbac_generic_roles.yml +9 -9
  66. data/test/fixtures/cbac_memberships.yml +8 -8
  67. data/test/fixtures/cbac_permissions.yml +14 -14
  68. data/test/fixtures/cbac_privilege_set.yml +18 -18
  69. data/test/test_cbac_actions.rb +71 -70
  70. data/test/test_cbac_authorize_context_roles.rb +39 -40
  71. data/test/test_cbac_authorize_generic_roles.rb +36 -37
  72. data/test/test_cbac_context_role.rb +50 -51
  73. data/test/test_cbac_privilege.rb +151 -152
  74. data/test/test_cbac_privilege_set.rb +50 -51
  75. data/test/test_helper.rb +28 -0
  76. metadata +70 -38
  77. data/generators/cbac/cbac_generator.rb +0 -66
  78. data/generators/cbac/templates/config/context_roles.rb +0 -10
  79. data/generators/cbac/templates/config/privileges.rb +0 -30
  80. data/vendor/plugins/cbac/Manifest +0 -60
  81. data/vendor/plugins/cbac/cbac-0.5.3.gem +0 -0
  82. data/vendor/plugins/cbac/cbac.gemspec +0 -31
  83. data/vendor/plugins/cbac/pkg/cbac-0.5.3.gem +0 -0
@@ -1,153 +1,152 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../../../../test/test_helper'))
2
- require 'test/unit'
3
- require 'rubygems'
4
-
5
- # ### Tests the Cbac::Privilege class
6
- #
7
- class CbacPrivilegeTest < ActiveSupport::TestCase
8
- # Setup defines the PrivilegeSet that is being used by all PrivilegeTest
9
- # methods
10
- def setup
11
- PrivilegeSet.add :cbac_privilege, "" unless PrivilegeSet.sets.include?(:cbac_privilege)
12
- PrivilegeSet.add :base_inheritence_privilege, "" unless PrivilegeSet.sets.include?(:base_inheritence_privilege)
13
- end
14
-
15
- # Test adding get and post resources It is possible to add a resource using
16
- # different names for actions. This method also checks if these aliases are
17
- # all operating well.
18
- def test_add_resources
19
- assert_difference("Privilege.get_resources.length", 4, "GET resource was not added.") do
20
- Privilege.resource :cbac_privilege, "add/resources/get/1", :GET
21
- Privilege.resource :cbac_privilege, "add/resources/get/2", :get
22
- Privilege.resource :cbac_privilege, "add/resources/get/3", :g
23
- Privilege.resource :cbac_privilege, "add/resources/get/4", :idempotent
24
- end
25
- assert_difference("Privilege.post_resources.length", 3, "POST resource was not added.") do
26
- Privilege.resource :cbac_privilege, "add/resources/post/1", :POST
27
- Privilege.resource :cbac_privilege, "add/resources/post/2", :post
28
- Privilege.resource :cbac_privilege, "add/resources/post/3", :p
29
- end
30
- end
31
-
32
- # Test the include method for single inheritence
33
- def test_single_inheritence
34
- Privilege.resource :base_inheritence_privilege, "single/inheritence"
35
- Privilege.resource :base_inheritence_privilege, "single/inheritence/post", :post
36
- PrivilegeSet.add :cbac_single_inheritence, "PrivilegeSet for single inheritence test"
37
- Privilege.include :cbac_single_inheritence, :base_inheritence_privilege
38
- result = Privilege.select("single/inheritence", :get)
39
- assert_equal true, result.any? {|set| set.name == "base_inheritence_privilege"}, "Could not find PrivilegeSet (hint: error probably belongs to other test)"
40
- assert_equal true, result.any? {|set| set.name == "cbac_single_inheritence"}, "Single inheritence failure"
41
- result = Privilege.select("single/inheritence/post", :post)
42
- assert_equal true, result.any? {|set| set.name == "cbac_single_inheritence"}, "Single inheritence failure with POST method"
43
- end
44
-
45
- # Test the include method for multiple inheritence
46
- def test_multiple_inheritence
47
- Privilege.resource :base_inheritence_privilege, "multiple/inheritence"
48
- PrivilegeSet.add :base_multiple_inheritence, "parent/ base PrivilegeSet for multiple inheritence test"
49
- PrivilegeSet.add :cbac_multiple_inheritence, "child PrivilegeSet for multiple inheritence test"
50
- Privilege.resource :base_multiple_inheritence, "multiple/inheritence_again"
51
- Privilege.include :cbac_multiple_inheritence, [:base_inheritence_privilege, :base_multiple_inheritence]
52
- result = Privilege.select("multiple/inheritence", :get)
53
- assert_equal true, result.any? {|set| set.name == "base_inheritence_privilege"}, "Could not find PrivilegeSet (hint: error probably belongs to other test)"
54
- assert_equal true, result.any? {|set| set.name == "cbac_multiple_inheritence"}, "Multiple inheritence failure"
55
- result = Privilege.select("multiple/inheritence_again", :get)
56
- assert_equal true, result.any? {|set| set.name == "cbac_multiple_inheritence"}, "Multiple inheritence failure"
57
- end
58
-
59
- # Inheritence must be applied if a resource is added after an inheritence call
60
- def test_inherit_resource_after_declaration
61
- PrivilegeSet.add :cbac_inheritence_after_declaration, "PrivilegeSet for single inheritence test"
62
- # First, we setup the inheritence relation
63
- Privilege.include :cbac_inheritence_after_declaration, :base_inheritence_privilege
64
- # Then, we setup the resource connection
65
- Privilege.resource :base_inheritence_privilege, "inheritence/after/declaration"
66
- Privilege.resource :base_inheritence_privilege, "inheritence/after/declaration/post", :post
67
- # Test
68
- result = Privilege.select("inheritence/after/declaration", :get)
69
- assert_equal true, result.any?{|set| set.name == "base_inheritence_privilege"}, "Could not find PrivilegeSet (hint: error probably belongs to other test)"
70
- assert_equal true, result.any?{|set| set.name == "cbac_inheritence_after_declaration"}, "Resource declaration after inheritence call failed"
71
- result = Privilege.select("inheritence/after/declaration/post", :post)
72
- assert_equal true, result.any?{|set| set.name == "cbac_inheritence_after_declaration"}, "Resource declaration after inheritence call failed with POST method"
73
- end
74
-
75
- # If the inheritence functionality is used with invalid privilege_sets, an ArgumentException must be thrown
76
- def test_inheritence_with_invalid_privilege_sets
77
- assert_raise(ArgumentError) do
78
- Privilege.include :cbac_privilege, :invalid_privilege_set
79
- end
80
- assert_raise(ArgumentError) do
81
- Privilege.include :invalid_privilege_set, :cbac_privilege
82
- end
83
- end
84
-
85
- # If an invalid action is specified, the method must raise an ArgumentError
86
- # exception.
87
- def test_add_incorrect_action
88
- assert_raise(ArgumentError) do
89
- Privilege.resource :cbac_privilege, "add/incorrect/action", :error
90
- end
91
- end
92
-
93
- # If a privilege is added to a non existing PrivilegeSet, an ArgumentError
94
- # exception must occur.
95
- def test_add_resource_to_invalid_privilege_set
96
- assert_raise(ArgumentError) do
97
- Privilege.resource :cbac_privilege_error, "add/resource/to/invalid/privilege/set", :get
98
- end
99
- end
100
-
101
- # Test the Privilege.select method. This method accepts a controller method
102
- # string and an action type It returns the privilegesets that comply with this
103
- # combination The actions post, put and delete are identical. This test aims
104
- # at testing this assumption.
105
- def test_select_correct
106
- Privilege.resource :cbac_privilege, "select/correct/get", :get
107
- Privilege.resource :cbac_privilege, "select/correct/post", :post
108
- Privilege.resource :cbac_privilege, "select/correct/put", :post
109
- Privilege.resource :cbac_privilege, "select/correct/delete", :post
110
- assert_equal 1, Privilege.select("select/correct/get", :get).length
111
- [:post, :put, :delete].each do |action|
112
- assert_equal 1, Privilege.select("select/correct/post", action).length
113
- assert_equal 1, Privilege.select("select/correct/put", action).length
114
- assert_equal 1, Privilege.select("select/correct/delete", action).length
115
- end
116
- end
117
-
118
- def test_exception()
119
- begin
120
- yield
121
- rescue Exception => e
122
- return e.message
123
- end
124
- raise "No exception was thrown"
125
- end
126
-
127
- # test selecting an incorrect action type
128
- def test_select_incorrect_action_types
129
- controller_method = "select/incorrect/action/types/get"
130
- Privilege.resource :cbac_privilege, controller_method, :get
131
- Privilege.select(controller_method, :get)
132
- assert_match(/Incorrect action_type/, test_exception { Privilege.select(controller_method, :error) })
133
- end
134
-
135
- # If a user asks for the wrong action_type (e.g. a request is made for 'get'
136
- # but there are only 'post' privileges or vica versa) the system will throw an
137
- # exception as expected, but the system will also hint at the possibility of
138
- # messing up get and post.
139
- def test_select_the_other_action_type
140
- controller_method = "select/the/other/action/type/get"
141
- Privilege.resource :cbac_privilege, controller_method, :get
142
- assert_match(/PrivilegeSets only exist for other action/, test_exception { Privilege.select(controller_method, :post) })
143
- end
144
-
145
- # Trying to find privileges for a set that doesn't exist, should result in an
146
- # exception
147
- def test_select_could_not_find_any_privilegeset
148
- controller_method = "select/could/not/find/any/privilegeset/get"
149
- assert_raise(RuntimeError) do
150
- Privilege.select(controller_method, :post)
151
- end
152
- end
1
+ # Copyright 2010 Bert Meerman
2
+ require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper'))
3
+
4
+ # ### Tests the Cbac::Privilege class
5
+ #
6
+ class CbacPrivilegeTest < ActiveSupport::TestCase
7
+ # Setup defines the PrivilegeSet that is being used by all PrivilegeTest
8
+ # methods
9
+ def setup
10
+ PrivilegeSet.add :cbac_privilege, "" unless PrivilegeSet.sets.include?(:cbac_privilege)
11
+ PrivilegeSet.add :base_inheritence_privilege, "" unless PrivilegeSet.sets.include?(:base_inheritence_privilege)
12
+ end
13
+
14
+ # Test adding get and post resources It is possible to add a resource using
15
+ # different names for actions. This method also checks if these aliases are
16
+ # all operating well.
17
+ def test_add_resources
18
+ assert_difference("Privilege.get_resources.length", 4, "GET resource was not added.") do
19
+ Privilege.resource :cbac_privilege, "add/resources/get/1", :GET
20
+ Privilege.resource :cbac_privilege, "add/resources/get/2", :get
21
+ Privilege.resource :cbac_privilege, "add/resources/get/3", :g
22
+ Privilege.resource :cbac_privilege, "add/resources/get/4", :idempotent
23
+ end
24
+ assert_difference("Privilege.post_resources.length", 3, "POST resource was not added.") do
25
+ Privilege.resource :cbac_privilege, "add/resources/post/1", :POST
26
+ Privilege.resource :cbac_privilege, "add/resources/post/2", :post
27
+ Privilege.resource :cbac_privilege, "add/resources/post/3", :p
28
+ end
29
+ end
30
+
31
+ # Test the include method for single inheritence
32
+ def test_single_inheritence
33
+ Privilege.resource :base_inheritence_privilege, "single/inheritence"
34
+ Privilege.resource :base_inheritence_privilege, "single/inheritence/post", :post
35
+ PrivilegeSet.add :cbac_single_inheritence, "PrivilegeSet for single inheritence test"
36
+ Privilege.include :cbac_single_inheritence, :base_inheritence_privilege
37
+ result = Privilege.select("single/inheritence", :get)
38
+ assert_equal true, result.any? {|set| set.name == "base_inheritence_privilege"}, "Could not find PrivilegeSet (hint: error probably belongs to other test)"
39
+ assert_equal true, result.any? {|set| set.name == "cbac_single_inheritence"}, "Single inheritence failure"
40
+ result = Privilege.select("single/inheritence/post", :post)
41
+ assert_equal true, result.any? {|set| set.name == "cbac_single_inheritence"}, "Single inheritence failure with POST method"
42
+ end
43
+
44
+ # Test the include method for multiple inheritence
45
+ def test_multiple_inheritence
46
+ Privilege.resource :base_inheritence_privilege, "multiple/inheritence"
47
+ PrivilegeSet.add :base_multiple_inheritence, "parent/ base PrivilegeSet for multiple inheritence test"
48
+ PrivilegeSet.add :cbac_multiple_inheritence, "child PrivilegeSet for multiple inheritence test"
49
+ Privilege.resource :base_multiple_inheritence, "multiple/inheritence_again"
50
+ Privilege.include :cbac_multiple_inheritence, [:base_inheritence_privilege, :base_multiple_inheritence]
51
+ result = Privilege.select("multiple/inheritence", :get)
52
+ assert_equal true, result.any? {|set| set.name == "base_inheritence_privilege"}, "Could not find PrivilegeSet (hint: error probably belongs to other test)"
53
+ assert_equal true, result.any? {|set| set.name == "cbac_multiple_inheritence"}, "Multiple inheritence failure"
54
+ result = Privilege.select("multiple/inheritence_again", :get)
55
+ assert_equal true, result.any? {|set| set.name == "cbac_multiple_inheritence"}, "Multiple inheritence failure"
56
+ end
57
+
58
+ # Inheritence must be applied if a resource is added after an inheritence call
59
+ def test_inherit_resource_after_declaration
60
+ PrivilegeSet.add :cbac_inheritence_after_declaration, "PrivilegeSet for single inheritence test"
61
+ # First, we setup the inheritence relation
62
+ Privilege.include :cbac_inheritence_after_declaration, :base_inheritence_privilege
63
+ # Then, we setup the resource connection
64
+ Privilege.resource :base_inheritence_privilege, "inheritence/after/declaration"
65
+ Privilege.resource :base_inheritence_privilege, "inheritence/after/declaration/post", :post
66
+ # Test
67
+ result = Privilege.select("inheritence/after/declaration", :get)
68
+ assert_equal true, result.any?{|set| set.name == "base_inheritence_privilege"}, "Could not find PrivilegeSet (hint: error probably belongs to other test)"
69
+ assert_equal true, result.any?{|set| set.name == "cbac_inheritence_after_declaration"}, "Resource declaration after inheritence call failed"
70
+ result = Privilege.select("inheritence/after/declaration/post", :post)
71
+ assert_equal true, result.any?{|set| set.name == "cbac_inheritence_after_declaration"}, "Resource declaration after inheritence call failed with POST method"
72
+ end
73
+
74
+ # If the inheritence functionality is used with invalid privilege_sets, an ArgumentException must be thrown
75
+ def test_inheritence_with_invalid_privilege_sets
76
+ assert_raise(ArgumentError) do
77
+ Privilege.include :cbac_privilege, :invalid_privilege_set
78
+ end
79
+ assert_raise(ArgumentError) do
80
+ Privilege.include :invalid_privilege_set, :cbac_privilege
81
+ end
82
+ end
83
+
84
+ # If an invalid action is specified, the method must raise an ArgumentError
85
+ # exception.
86
+ def test_add_incorrect_action
87
+ assert_raise(ArgumentError) do
88
+ Privilege.resource :cbac_privilege, "add/incorrect/action", :error
89
+ end
90
+ end
91
+
92
+ # If a privilege is added to a non existing PrivilegeSet, an ArgumentError
93
+ # exception must occur.
94
+ def test_add_resource_to_invalid_privilege_set
95
+ assert_raise(ArgumentError) do
96
+ Privilege.resource :cbac_privilege_error, "add/resource/to/invalid/privilege/set", :get
97
+ end
98
+ end
99
+
100
+ # Test the Privilege.select method. This method accepts a controller method
101
+ # string and an action type It returns the privilegesets that comply with this
102
+ # combination The actions post, put and delete are identical. This test aims
103
+ # at testing this assumption.
104
+ def test_select_correct
105
+ Privilege.resource :cbac_privilege, "select/correct/get", :get
106
+ Privilege.resource :cbac_privilege, "select/correct/post", :post
107
+ Privilege.resource :cbac_privilege, "select/correct/put", :post
108
+ Privilege.resource :cbac_privilege, "select/correct/delete", :post
109
+ assert_equal 1, Privilege.select("select/correct/get", :get).length
110
+ [:post, :put, :delete].each do |action|
111
+ assert_equal 1, Privilege.select("select/correct/post", action).length
112
+ assert_equal 1, Privilege.select("select/correct/put", action).length
113
+ assert_equal 1, Privilege.select("select/correct/delete", action).length
114
+ end
115
+ end
116
+
117
+ def test_exception()
118
+ begin
119
+ yield
120
+ rescue Exception => e
121
+ return e.message
122
+ end
123
+ raise "No exception was thrown"
124
+ end
125
+
126
+ # test selecting an incorrect action type
127
+ def test_select_incorrect_action_types
128
+ controller_method = "select/incorrect/action/types/get"
129
+ Privilege.resource :cbac_privilege, controller_method, :get
130
+ Privilege.select(controller_method, :get)
131
+ assert_match(/Incorrect action_type/, test_exception { Privilege.select(controller_method, :error) })
132
+ end
133
+
134
+ # If a user asks for the wrong action_type (e.g. a request is made for 'get'
135
+ # but there are only 'post' privileges or vica versa) the system will throw an
136
+ # exception as expected, but the system will also hint at the possibility of
137
+ # messing up get and post.
138
+ def test_select_the_other_action_type
139
+ controller_method = "select/the/other/action/type/get"
140
+ Privilege.resource :cbac_privilege, controller_method, :get
141
+ assert_match(/PrivilegeSets only exist for other action/, test_exception { Privilege.select(controller_method, :post) })
142
+ end
143
+
144
+ # Trying to find privileges for a set that doesn't exist, should result in an
145
+ # exception
146
+ def test_select_could_not_find_any_privilegeset
147
+ controller_method = "select/could/not/find/any/privilegeset/get"
148
+ assert_raise(RuntimeError) do
149
+ Privilege.select(controller_method, :post)
150
+ end
151
+ end
153
152
  end
@@ -1,52 +1,51 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../../../../test/test_helper'))
2
- require 'test/unit'
3
- require 'rubygems'
4
-
5
- ###
6
- # Tests the Cbac::PrivilegeSet class
7
- #
8
- class CbacPrivilegeSetTest < ActiveSupport::TestCase
9
- self.fixture_path = File.join(File.dirname(__FILE__), "fixtures")
10
- fixtures :all
11
-
12
- # Adds a new privilege to the PrivilegeSet.
13
- # This test should add a new privilege and everything should be working.
14
- def test_adding_new_privilege_set
15
- comment = "test_adding_new_privilege_set"
16
- assert_difference("PrivilegeSet.sets.length", 1, "Adding test PrivilegeSet") do
17
- PrivilegeSet.add :test_adding_new_privilege_set, comment
18
- end
19
- assert_equal(true, PrivilegeSet.sets.include?(:test_adding_new_privilege_set), "PrivilegeSet symbol not found.")
20
- assert_equal(comment, PrivilegeSet.sets[:test_adding_new_privilege_set].comment, "Incorrect comment.")
21
- end
22
-
23
- # When adding an already existing PrivilegeSet, an ArgumentError should be raised.
24
- # PrivilegeSets can only be declared once.
25
- def test_adding_double_privilege_sets
26
- PrivilegeSet.add :test_adding_double_privilege_sets, ""
27
- assert_raise(ArgumentError) do
28
- PrivilegeSet.add :test_adding_double_privilege_sets, ""
29
- end
30
- end
31
-
32
- # This privilegeset is already in the database. The id
33
- # should therefore be identical to the id specified in the fixture.
34
- # Also, the number of records should not change.
35
- def test_initializing_existing_privilege_set
36
- assert_difference("PrivilegeSet.sets.length", 1, "Adding test PrivilegeSet") do
37
- assert_difference("Cbac::PrivilegeSetRecord.find(:all).length", 0, "Record should have been added to table") do
38
- PrivilegeSet.add :existing_privilege_set, "Something"
39
- end
40
- end
41
- end
42
-
43
- # This privilegeset does not yet exist. A new entry should be created
44
- # in the database. Also, the id should not be zero.
45
- def test_initializing_new_privilege_set
46
- assert_difference("PrivilegeSet.sets.length", 1, "Adding test PrivilegeSet") do
47
- assert_difference("Cbac::PrivilegeSetRecord.find(:all).length", 1, "Record should not be added to table - record already exists") do
48
- PrivilegeSet.add :test_initializing_new_privilege_set, "Something"
49
- end
50
- end
51
- end
1
+ # Copyright 2010 Bert Meerman
2
+ require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper'))
3
+
4
+ ###
5
+ # Tests the Cbac::PrivilegeSet class
6
+ #
7
+ class CbacPrivilegeSetTest < ActiveSupport::TestCase
8
+ #self.fixture_path = File.join(File.dirname(__FILE__), "fixtures")
9
+ #fixtures :all
10
+
11
+ # Adds a new privilege to the PrivilegeSet.
12
+ # This test should add a new privilege and everything should be working.
13
+ def test_adding_new_privilege_set
14
+ comment = "test_adding_new_privilege_set"
15
+ assert_difference("PrivilegeSet.sets.length", 1, "Adding test PrivilegeSet") do
16
+ PrivilegeSet.add :test_adding_new_privilege_set, comment
17
+ end
18
+ assert_equal(true, PrivilegeSet.sets.include?(:test_adding_new_privilege_set), "PrivilegeSet symbol not found.")
19
+ assert_equal(comment, PrivilegeSet.sets[:test_adding_new_privilege_set].comment, "Incorrect comment.")
20
+ end
21
+
22
+ # When adding an already existing PrivilegeSet, an ArgumentError should be raised.
23
+ # PrivilegeSets can only be declared once.
24
+ def test_adding_double_privilege_sets
25
+ PrivilegeSet.add :test_adding_double_privilege_sets, ""
26
+ assert_raise(ArgumentError) do
27
+ PrivilegeSet.add :test_adding_double_privilege_sets, ""
28
+ end
29
+ end
30
+
31
+ # This privilegeset is already in the database. The id
32
+ # should therefore be identical to the id specified in the fixture.
33
+ # Also, the number of records should not change.
34
+ def test_initializing_existing_privilege_set
35
+ assert_difference("PrivilegeSet.sets.length", 1, "Adding test PrivilegeSet") do
36
+ assert_difference("Cbac::PrivilegeSetRecord.find(:all).length", 0, "Record should have been added to table") do
37
+ PrivilegeSet.add :existing_privilege_set, "Something"
38
+ end
39
+ end
40
+ end
41
+
42
+ # This privilegeset does not yet exist. A new entry should be created
43
+ # in the database. Also, the id should not be zero.
44
+ def test_initializing_new_privilege_set
45
+ assert_difference("PrivilegeSet.sets.length", 1, "Adding test PrivilegeSet") do
46
+ assert_difference("Cbac::PrivilegeSetRecord.find(:all).length", 1, "Record should not be added to table - record already exists") do
47
+ PrivilegeSet.add :test_initializing_new_privilege_set, "Something"
48
+ end
49
+ end
50
+ end
52
51
  end
@@ -0,0 +1,28 @@
1
+ # Copyright 2010 Bert Meerman
2
+
3
+ # Setup ActiveRecord and ActiveSupport
4
+ ENV["RAILS_ENV"] ||= "test"
5
+ RAILS_ENV ||= "test"
6
+ require "active_record"
7
+ require "active_record/fixtures"
8
+ require "yaml"
9
+ require "erb"
10
+ require "active_support"
11
+ ActiveRecord::Base.establish_connection(
12
+ 'adapter' => 'sqlite3',
13
+ 'database' => 'test/db/test.sqlite3'
14
+ )
15
+ fixture_files = Dir.glob(File.join(File.dirname(__FILE__), "fixtures", "*.yml"))
16
+ fixture_files.each do |filename|
17
+ Fixtures.create_fixtures('test/fixtures', File.basename(filename, ".*"))
18
+ end
19
+ RAILS_ROOT ||= "."
20
+
21
+ # Setup cbac configuration
22
+ require "cbac"
23
+ class ActiveSupport::TestCase
24
+ include Cbac
25
+
26
+ session = Hash.new
27
+ session[:currentuser] = 1
28
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cbac
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 5
9
- - 4
10
- version: 0.5.4
7
+ - 6
8
+ - 0
9
+ version: 0.6.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Bert Meerman
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-11-30 00:00:00 +01:00
17
+ date: 2011-01-20 00:00:00 +01:00
19
18
  default_executable:
20
19
  dependencies: []
21
20
 
@@ -43,35 +42,39 @@ extra_rdoc_files:
43
42
  - lib/cbac/privilege_set.rb
44
43
  - lib/cbac/privilege_set_record.rb
45
44
  - lib/cbac/setup.rb
45
+ - lib/generators/cbac/USAGE
46
+ - lib/generators/cbac/cbac_generator.rb
47
+ - lib/generators/cbac/copy_files/config/cbac.pristine
48
+ - lib/generators/cbac/copy_files/config/context_roles.rb
49
+ - lib/generators/cbac/copy_files/config/privileges.rb
50
+ - lib/generators/cbac/copy_files/controllers/generic_roles_controller.rb
51
+ - lib/generators/cbac/copy_files/controllers/memberships_controller.rb
52
+ - lib/generators/cbac/copy_files/controllers/permissions_controller.rb
53
+ - lib/generators/cbac/copy_files/controllers/upgrade_controller.rb
54
+ - lib/generators/cbac/copy_files/fixtures/cbac_generic_roles.yml
55
+ - lib/generators/cbac/copy_files/fixtures/cbac_memberships.yml
56
+ - lib/generators/cbac/copy_files/fixtures/cbac_permissions.yml
57
+ - lib/generators/cbac/copy_files/initializers/cbac_config.rb
58
+ - lib/generators/cbac/copy_files/migrate/create_cbac_from_scratch.rb
59
+ - lib/generators/cbac/copy_files/migrate/create_cbac_upgrade_path.rb
60
+ - lib/generators/cbac/copy_files/stylesheets/cbac.css
61
+ - lib/generators/cbac/copy_files/tasks/cbac.rake
62
+ - lib/generators/cbac/copy_files/views/generic_roles/index.html.erb
63
+ - lib/generators/cbac/copy_files/views/layouts/cbac.html.erb
64
+ - lib/generators/cbac/copy_files/views/memberships/_update.html.erb
65
+ - lib/generators/cbac/copy_files/views/memberships/index.html.erb
66
+ - lib/generators/cbac/copy_files/views/permissions/_update_context_role.html.erb
67
+ - lib/generators/cbac/copy_files/views/permissions/_update_generic_role.html.erb
68
+ - lib/generators/cbac/copy_files/views/permissions/index.html.erb
69
+ - lib/generators/cbac/copy_files/views/upgrade/index.html.erb
46
70
  - tasks/cbac.rake
47
71
  files:
48
72
  - Manifest
49
73
  - README.rdoc
50
74
  - Rakefile
51
- - generators/cbac/USAGE
52
- - generators/cbac/cbac_generator.rb
53
- - generators/cbac/templates/config/cbac.pristine
54
- - generators/cbac/templates/config/context_roles.rb
55
- - generators/cbac/templates/config/privileges.rb
56
- - generators/cbac/templates/controllers/generic_roles_controller.rb
57
- - generators/cbac/templates/controllers/memberships_controller.rb
58
- - generators/cbac/templates/controllers/permissions_controller.rb
59
- - generators/cbac/templates/controllers/upgrade_controller.rb
60
- - generators/cbac/templates/fixtures/cbac_generic_roles.yml
61
- - generators/cbac/templates/fixtures/cbac_memberships.yml
62
- - generators/cbac/templates/fixtures/cbac_permissions.yml
63
- - generators/cbac/templates/migrate/create_cbac_from_scratch.rb
64
- - generators/cbac/templates/migrate/create_cbac_upgrade_path.rb
65
- - generators/cbac/templates/stylesheets/cbac.css
66
- - generators/cbac/templates/tasks/cbac.rake
67
- - generators/cbac/templates/views/generic_roles/index.html.erb
68
- - generators/cbac/templates/views/layouts/cbac.html.erb
69
- - generators/cbac/templates/views/memberships/_update.html.erb
70
- - generators/cbac/templates/views/memberships/index.html.erb
71
- - generators/cbac/templates/views/permissions/_update_context_role.html.erb
72
- - generators/cbac/templates/views/permissions/_update_generic_role.html.erb
73
- - generators/cbac/templates/views/permissions/index.html.erb
74
- - generators/cbac/templates/views/upgrade/index.html.erb
75
+ - config/cbac/context_roles.rb
76
+ - config/cbac/privileges.rb
77
+ - context_roles.rb
75
78
  - init.rb
76
79
  - lib/cbac.rb
77
80
  - lib/cbac/cbac_pristine/pristine.rb
@@ -89,6 +92,38 @@ files:
89
92
  - lib/cbac/privilege_set.rb
90
93
  - lib/cbac/privilege_set_record.rb
91
94
  - lib/cbac/setup.rb
95
+ - lib/generators/cbac/USAGE
96
+ - lib/generators/cbac/cbac_generator.rb
97
+ - lib/generators/cbac/copy_files/config/cbac.pristine
98
+ - lib/generators/cbac/copy_files/config/context_roles.rb
99
+ - lib/generators/cbac/copy_files/config/privileges.rb
100
+ - lib/generators/cbac/copy_files/controllers/generic_roles_controller.rb
101
+ - lib/generators/cbac/copy_files/controllers/memberships_controller.rb
102
+ - lib/generators/cbac/copy_files/controllers/permissions_controller.rb
103
+ - lib/generators/cbac/copy_files/controllers/upgrade_controller.rb
104
+ - lib/generators/cbac/copy_files/fixtures/cbac_generic_roles.yml
105
+ - lib/generators/cbac/copy_files/fixtures/cbac_memberships.yml
106
+ - lib/generators/cbac/copy_files/fixtures/cbac_permissions.yml
107
+ - lib/generators/cbac/copy_files/initializers/cbac_config.rb
108
+ - lib/generators/cbac/copy_files/migrate/create_cbac_from_scratch.rb
109
+ - lib/generators/cbac/copy_files/migrate/create_cbac_upgrade_path.rb
110
+ - lib/generators/cbac/copy_files/stylesheets/cbac.css
111
+ - lib/generators/cbac/copy_files/tasks/cbac.rake
112
+ - lib/generators/cbac/copy_files/views/generic_roles/index.html.erb
113
+ - lib/generators/cbac/copy_files/views/layouts/cbac.html.erb
114
+ - lib/generators/cbac/copy_files/views/memberships/_update.html.erb
115
+ - lib/generators/cbac/copy_files/views/memberships/index.html.erb
116
+ - lib/generators/cbac/copy_files/views/permissions/_update_context_role.html.erb
117
+ - lib/generators/cbac/copy_files/views/permissions/_update_generic_role.html.erb
118
+ - lib/generators/cbac/copy_files/views/permissions/index.html.erb
119
+ - lib/generators/cbac/copy_files/views/upgrade/index.html.erb
120
+ - nbproject/private/private.properties
121
+ - nbproject/private/private.xml
122
+ - nbproject/private/rake-d.txt
123
+ - nbproject/project.properties
124
+ - nbproject/project.xml
125
+ - privileges.rb
126
+ - rails/init.rb
92
127
  - spec/cbac_pristine_file_spec.rb
93
128
  - spec/cbac_pristine_permission_spec.rb
94
129
  - spec/cbac_pristine_role_spec.rb
@@ -96,6 +131,7 @@ files:
96
131
  - spec/spec.opts
97
132
  - spec/spec_helper.rb
98
133
  - tasks/cbac.rake
134
+ - test/db/test.sqlite3
99
135
  - test/fixtures/cbac_generic_roles.yml
100
136
  - test/fixtures/cbac_memberships.yml
101
137
  - test/fixtures/cbac_permissions.yml
@@ -106,10 +142,7 @@ files:
106
142
  - test/test_cbac_context_role.rb
107
143
  - test/test_cbac_privilege.rb
108
144
  - test/test_cbac_privilege_set.rb
109
- - vendor/plugins/cbac/Manifest
110
- - vendor/plugins/cbac/cbac-0.5.3.gem
111
- - vendor/plugins/cbac/cbac.gemspec
112
- - vendor/plugins/cbac/pkg/cbac-0.5.3.gem
145
+ - test/test_helper.rb
113
146
  - cbac.gemspec
114
147
  has_rdoc: true
115
148
  homepage: http://cbac.rubyforge.org
@@ -130,7 +163,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
163
  requirements:
131
164
  - - ">="
132
165
  - !ruby/object:Gem::Version
133
- hash: 3
134
166
  segments:
135
167
  - 0
136
168
  version: "0"
@@ -139,7 +171,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
171
  requirements:
140
172
  - - ">="
141
173
  - !ruby/object:Gem::Version
142
- hash: 11
143
174
  segments:
144
175
  - 1
145
176
  - 2
@@ -152,9 +183,10 @@ signing_key:
152
183
  specification_version: 3
153
184
  summary: CBAC - Simple authorization system for Rails applications.
154
185
  test_files:
155
- - test/test_cbac_context_role.rb
156
- - test/test_cbac_authorize_context_roles.rb
157
186
  - test/test_cbac_actions.rb
158
- - test/test_cbac_privilege.rb
187
+ - test/test_cbac_authorize_context_roles.rb
159
188
  - test/test_cbac_authorize_generic_roles.rb
189
+ - test/test_cbac_context_role.rb
190
+ - test/test_cbac_privilege.rb
160
191
  - test/test_cbac_privilege_set.rb
192
+ - test/test_helper.rb