challah 0.5.2 → 0.5.3
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/CHANGELOG.md +9 -2
- data/README.md +18 -18
- data/lib/challah/test.rb +22 -5
- data/lib/challah/version.rb +1 -1
- data/test/audit_test.rb +32 -32
- data/test/controller_test.rb +9 -9
- data/test/cookie_store_test.rb +25 -25
- data/test/factories.rb +7 -7
- data/test/helper.rb +14 -12
- data/test/permission_test.rb +14 -14
- data/test/restrictions_controller_test.rb +29 -30
- data/test/role_test.rb +26 -26
- data/test/session_test.rb +65 -65
- data/test/sessions_controller_test.rb +13 -13
- data/test/simple_cookie_store_test.rb +25 -25
- data/test/user_test.rb +79 -79
- data/vendor/bundle/cache/factory_girl-3.0.0.gem +0 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Appraisals +11 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/CONTRIBUTION_GUIDELINES.md +10 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Changelog +168 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/GETTING_STARTED.md +735 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Gemfile +5 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Gemfile.lock +95 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/LICENSE +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/README.md +70 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Rakefile +38 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/cucumber.yml +1 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/factory_girl.gemspec +38 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/factory_girl_steps.feature +237 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/find_definitions.feature +75 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/step_definitions/database_steps.rb +42 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/step_definitions/factory_girl_steps.rb +43 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/support/env.rb +11 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/support/factories.rb +119 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/2.3.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.0.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.0.gemfile.lock +86 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.1.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.1.gemfile.lock +95 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.2.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.2.gemfile.lock +93 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl.rb +69 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/aliases.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute.rb +40 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/association.rb +23 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/dynamic.rb +20 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/sequence.rb +17 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/static.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute_assigner.rb +73 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute_list.rb +54 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/callback.rb +33 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration.rb +22 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/association.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/dynamic.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/implicit.rb +32 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/static.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration_list.rb +48 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/definition.rb +76 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/definition_proxy.rb +159 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/errors.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator.rb +76 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb +34 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/factory.rb +145 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/factory_runner.rb +24 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/find_definitions.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/null_factory.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/null_object.rb +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/registry.rb +46 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/reload.rb +8 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/sequence.rb +24 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/step_definitions.rb +130 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy.rb +32 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/attributes_for.rb +12 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/build.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/create.rb +17 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/stub.rb +61 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy_calculator.rb +29 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax.rb +16 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/blueprint.rb +42 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/default.rb +56 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/generate.rb +70 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/make.rb +45 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/methods.rb +136 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/sham.rb +45 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/vintage.rb +130 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/trait.rb +29 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/version.rb +4 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/aliases_spec.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attribute_aliases_spec.rb +45 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attribute_existing_on_object_spec.rb +68 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_for_spec.rb +89 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb +53 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_ordered_spec.rb +51 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/build_list_spec.rb +41 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/build_spec.rb +89 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/build_stubbed_spec.rb +104 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/callbacks_spec.rb +47 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/create_list_spec.rb +82 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/create_spec.rb +117 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/define_child_before_parent_spec.rb +21 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/definition_spec.rb +26 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/definition_without_block_spec.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/initialize_with_spec.rb +147 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/modify_factories_spec.rb +184 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/modify_inherited_spec.rb +52 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/nested_attributes_spec.rb +32 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/overrides_spec.rb +61 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/parent_spec.rb +90 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/sequence_spec.rb +33 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/stub_spec.rb +62 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/blueprint_spec.rb +34 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/generate_spec.rb +59 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/make_spec.rb +52 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/sham_spec.rb +43 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/vintage_spec.rb +217 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/traits_spec.rb +421 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/transient_attributes_spec.rb +124 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/aliases_spec.rb +31 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/association_spec.rb +28 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/dynamic_spec.rb +52 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/sequence_spec.rb +16 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/static_spec.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute_list_spec.rb +78 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute_spec.rb +16 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/callback_spec.rb +41 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/declaration/implicit_spec.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/declaration_list_spec.rb +71 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/definition_proxy_spec.rb +197 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/definition_spec.rb +104 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/evaluator_class_definer_spec.rb +54 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/factory_spec.rb +279 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/find_definitions_spec.rb +110 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/null_factory_spec.rb +13 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/null_object_spec.rb +8 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/registry_spec.rb +81 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/sequence_spec.rb +47 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/attributes_for_spec.rb +18 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/build_spec.rb +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/create_spec.rb +13 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/stub_spec.rb +40 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy_calculator_spec.rb +33 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy_spec.rb +21 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl_spec.rb +22 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/spec_helper.rb +26 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/macros/define_constant.rb +86 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/callback.rb +9 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/declaration.rb +71 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/delegate.rb +44 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/trait.rb +9 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/shared_examples/strategy.rb +104 -0
- data/vendor/bundle/specifications/factory_girl-3.0.0.gemspec +62 -0
- metadata +147 -12
data/test/factories.rb
CHANGED
|
@@ -14,7 +14,7 @@ FactoryGirl.define do
|
|
|
14
14
|
name { "Manage Users" }
|
|
15
15
|
key { "manage_users" }
|
|
16
16
|
end
|
|
17
|
-
end
|
|
17
|
+
end
|
|
18
18
|
|
|
19
19
|
factory :role do
|
|
20
20
|
name { "Sample Role" }
|
|
@@ -23,13 +23,13 @@ FactoryGirl.define do
|
|
|
23
23
|
|
|
24
24
|
factory :administrator_role do
|
|
25
25
|
name "Administrator"
|
|
26
|
-
|
|
27
|
-
after_create do |role|
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
|
|
27
|
+
after_create do |role|
|
|
28
|
+
FactoryGirl.create(:admin_permission_role, :role => role)
|
|
29
|
+
FactoryGirl.create(:user_permission_role, :role => role)
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
factory :default_role do
|
|
34
34
|
name { "Default" }
|
|
35
35
|
end
|
|
@@ -57,7 +57,7 @@ FactoryGirl.define do
|
|
|
57
57
|
sequence(:username) { |n| "plain#{n}" }
|
|
58
58
|
role_id nil
|
|
59
59
|
end
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
factory :normal_user do
|
|
62
62
|
first_name { "Normal" }
|
|
63
63
|
sequence(:username) { |n| "normal#{n}" }
|
data/test/helper.rb
CHANGED
|
@@ -32,31 +32,33 @@ require 'challah/test'
|
|
|
32
32
|
ActiveRecord::Migration.verbose = false
|
|
33
33
|
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
|
|
34
34
|
|
|
35
|
-
# Use ActiveSupport::TestCase for any tests using factories and database saving,
|
|
35
|
+
# Use ActiveSupport::TestCase for any tests using factories and database saving,
|
|
36
36
|
# so we can have a transactional rollback after each test.
|
|
37
37
|
class ActiveSupport::TestCase
|
|
38
|
+
include FactoryGirl::Syntax::Methods
|
|
39
|
+
|
|
38
40
|
self.use_transactional_fixtures = true
|
|
39
41
|
end
|
|
40
42
|
|
|
41
43
|
class MockController
|
|
42
44
|
include Challah::Controller
|
|
43
|
-
|
|
45
|
+
|
|
44
46
|
attr_accessor :request, :session, :params
|
|
45
|
-
|
|
47
|
+
|
|
46
48
|
def initialize()
|
|
47
49
|
@request = MockRequest.new
|
|
48
50
|
@session ||= {}
|
|
49
51
|
@params ||= {}
|
|
50
52
|
end
|
|
51
|
-
|
|
53
|
+
|
|
52
54
|
def redirect_to(*args)
|
|
53
55
|
# do nothing
|
|
54
56
|
end
|
|
55
|
-
|
|
57
|
+
|
|
56
58
|
def login_path
|
|
57
59
|
"/login"
|
|
58
60
|
end
|
|
59
|
-
|
|
61
|
+
|
|
60
62
|
def logout_path
|
|
61
63
|
"/logout"
|
|
62
64
|
end
|
|
@@ -64,31 +66,31 @@ end
|
|
|
64
66
|
|
|
65
67
|
class MockRequest
|
|
66
68
|
attr_accessor :cookie_jar, :session_options, :url
|
|
67
|
-
|
|
69
|
+
|
|
68
70
|
class MockCookieJar < Hash
|
|
69
71
|
def delete(key, options = {})
|
|
70
72
|
super(key)
|
|
71
73
|
end
|
|
72
74
|
end
|
|
73
|
-
|
|
75
|
+
|
|
74
76
|
def initialize
|
|
75
77
|
@cookie_jar = MockCookieJar.new
|
|
76
78
|
@session_options = { :domain => 'test.dev' }
|
|
77
79
|
@url = "http://example.com/"
|
|
78
80
|
end
|
|
79
|
-
|
|
81
|
+
|
|
80
82
|
def cookies
|
|
81
83
|
@cookie_jar
|
|
82
84
|
end
|
|
83
|
-
|
|
85
|
+
|
|
84
86
|
def cookies=(value)
|
|
85
87
|
@cookie_jar = value
|
|
86
88
|
end
|
|
87
|
-
|
|
89
|
+
|
|
88
90
|
def remote_ip
|
|
89
91
|
"8.8.8.8"
|
|
90
92
|
end
|
|
91
|
-
|
|
93
|
+
|
|
92
94
|
def user_agent
|
|
93
95
|
"Some Cool Browser"
|
|
94
96
|
end
|
data/test/permission_test.rb
CHANGED
|
@@ -3,25 +3,25 @@ require 'helper'
|
|
|
3
3
|
class PermissionTest < ActiveSupport::TestCase
|
|
4
4
|
should validate_presence_of :name
|
|
5
5
|
should validate_presence_of :key
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
should have_many :roles
|
|
8
8
|
should have_many :users
|
|
9
9
|
should have_many :permission_roles
|
|
10
10
|
should have_many :permission_users
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
context "With existing permissions" do
|
|
13
13
|
setup do
|
|
14
|
-
|
|
14
|
+
create(:permission)
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
should validate_uniqueness_of :name
|
|
18
18
|
should validate_uniqueness_of :key
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
context "The Permission class" do
|
|
22
22
|
should "load with the brackets shortcut" do
|
|
23
|
-
one =
|
|
24
|
-
two =
|
|
23
|
+
one = create(:permission, :name => 'Permission One', :key => 'permission_one')
|
|
24
|
+
two = create(:permission, :name => 'Permission Two', :key => 'permission_two')
|
|
25
25
|
|
|
26
26
|
assert_equal one, Permission[:permission_one]
|
|
27
27
|
assert_equal one, Permission[:Permission_One]
|
|
@@ -30,19 +30,19 @@ class PermissionTest < ActiveSupport::TestCase
|
|
|
30
30
|
assert_equal nil, Permission[:no_permission_exists]
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
|
-
|
|
34
|
-
context "A Permission instance" do
|
|
33
|
+
|
|
34
|
+
context "A Permission instance" do
|
|
35
35
|
should "get added to the admin role on create" do
|
|
36
|
-
admin_role =
|
|
36
|
+
admin_role = create(:role, :name => 'Administrator')
|
|
37
37
|
assert_equal nil, admin_role.permission_keys.index('new_permission')
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
#Role.stubs(:admin).returns(admin_role)
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
permission = Permission.new(:name => 'New Permission', :key => 'new_permission', :description => 'This is just a test.')
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
assert_difference [ 'Permission.count', 'PermissionRole.count' ], 1 do
|
|
44
44
|
assert permission.save
|
|
45
|
-
end
|
|
45
|
+
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -2,101 +2,100 @@ require 'helper'
|
|
|
2
2
|
|
|
3
3
|
class RestrictionsControllerTest < ActionController::TestCase
|
|
4
4
|
tests Challah::Test::RestrictionsController
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
context "The restrictions controller" do
|
|
7
7
|
context "With no user" do
|
|
8
8
|
setup do
|
|
9
|
-
|
|
9
|
+
logout
|
|
10
10
|
end
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
should "be able to get to the index page" do
|
|
13
13
|
get :index
|
|
14
14
|
assert_response :success
|
|
15
15
|
assert_equal nil, assigns(:current_user)
|
|
16
|
-
end
|
|
17
|
-
|
|
16
|
+
end
|
|
17
|
+
|
|
18
18
|
should "not be able to get to the edit page" do
|
|
19
19
|
get :edit
|
|
20
20
|
assert_redirected_to '/login'
|
|
21
21
|
end
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
should "not get to the new page" do
|
|
24
24
|
get :new
|
|
25
25
|
assert_redirected_to '/login'
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
context "with a regular user" do
|
|
30
30
|
setup do
|
|
31
|
-
@user =
|
|
32
|
-
|
|
33
|
-
Challah::Session.create!(@user)
|
|
31
|
+
@user = create(:user)
|
|
32
|
+
login_as(@user)
|
|
34
33
|
end
|
|
35
|
-
|
|
34
|
+
|
|
36
35
|
should "get to the index page" do
|
|
37
36
|
get :index
|
|
38
37
|
assert_response :success
|
|
39
38
|
assert_equal @user, assigns(:current_user)
|
|
40
39
|
end
|
|
41
|
-
|
|
40
|
+
|
|
42
41
|
should "get to the edit page" do
|
|
43
42
|
get :edit
|
|
44
43
|
assert_response :success
|
|
45
44
|
end
|
|
46
|
-
|
|
45
|
+
|
|
47
46
|
should "get to the show page" do
|
|
48
47
|
get :show
|
|
49
48
|
assert_response :success
|
|
50
49
|
end
|
|
51
|
-
|
|
50
|
+
|
|
52
51
|
should "not get to the new page" do
|
|
53
52
|
get :new
|
|
54
|
-
|
|
53
|
+
|
|
55
54
|
assert_template 'sessions/access_denied'
|
|
56
55
|
assert_response :unauthorized
|
|
57
56
|
end
|
|
58
57
|
end
|
|
59
|
-
|
|
58
|
+
|
|
60
59
|
context "with an admin user" do
|
|
61
60
|
setup do
|
|
62
|
-
@user =
|
|
63
|
-
@permission =
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
@user = create(:admin_user)
|
|
62
|
+
@permission = create(:permission, :key => 'special')
|
|
63
|
+
|
|
64
|
+
login_as(@user)
|
|
66
65
|
end
|
|
67
|
-
|
|
66
|
+
|
|
68
67
|
should "get to the index page" do
|
|
69
68
|
get :index
|
|
70
69
|
assert_response :success
|
|
71
70
|
assert_equal @user, assigns(:current_user)
|
|
72
71
|
end
|
|
73
|
-
|
|
72
|
+
|
|
74
73
|
should "get to the edit page" do
|
|
75
74
|
get :edit
|
|
76
75
|
assert_response :success
|
|
77
76
|
end
|
|
78
|
-
|
|
77
|
+
|
|
79
78
|
should "get to the show page" do
|
|
80
79
|
get :show
|
|
81
80
|
assert_response :success
|
|
82
81
|
end
|
|
83
|
-
|
|
82
|
+
|
|
84
83
|
should "get to the new page" do
|
|
85
84
|
get :new
|
|
86
85
|
assert_response :success
|
|
87
86
|
end
|
|
88
87
|
end
|
|
89
|
-
|
|
88
|
+
|
|
90
89
|
context "With an api key" do
|
|
91
90
|
setup do
|
|
92
|
-
@user =
|
|
91
|
+
@user = create(:user)
|
|
93
92
|
end
|
|
94
|
-
|
|
93
|
+
|
|
95
94
|
context "and api_key functionality enabled" do
|
|
96
95
|
setup do
|
|
97
96
|
Challah.options[:api_key_enabled] = true
|
|
98
97
|
end
|
|
99
|
-
|
|
98
|
+
|
|
100
99
|
should "get to the index page" do
|
|
101
100
|
get :index, :key => @user.api_key
|
|
102
101
|
assert_response :success
|
|
@@ -120,12 +119,12 @@ class RestrictionsControllerTest < ActionController::TestCase
|
|
|
120
119
|
assert_response :unauthorized
|
|
121
120
|
end
|
|
122
121
|
end
|
|
123
|
-
|
|
122
|
+
|
|
124
123
|
context "and api_key functionality disabled" do
|
|
125
124
|
setup do
|
|
126
125
|
Challah.options[:api_key_enabled] = false
|
|
127
126
|
end
|
|
128
|
-
|
|
127
|
+
|
|
129
128
|
should "get to the index page" do
|
|
130
129
|
get :index, :key => @user.api_key
|
|
131
130
|
assert_response :success
|
data/test/role_test.rb
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
require 'helper'
|
|
2
2
|
|
|
3
3
|
class RoleTest < ActiveSupport::TestCase
|
|
4
|
-
should validate_presence_of :name
|
|
4
|
+
should validate_presence_of :name
|
|
5
5
|
should have_many :users
|
|
6
6
|
|
|
7
7
|
should have_many :permission_roles
|
|
8
8
|
should have_many :permissions
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
context "With existing roles" do
|
|
11
11
|
setup do
|
|
12
|
-
|
|
12
|
+
create(:role)
|
|
13
13
|
end
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
should validate_uniqueness_of :name
|
|
16
16
|
end
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
context "The Role model" do
|
|
19
19
|
should "load with the brackets shortcut" do
|
|
20
|
-
test =
|
|
21
|
-
default =
|
|
20
|
+
test = create(:role, :name => 'Test Role')
|
|
21
|
+
default = create(:default_role)
|
|
22
22
|
|
|
23
23
|
assert_equal test, Role[:test_role]
|
|
24
24
|
assert_equal default, Role[:default]
|
|
@@ -26,54 +26,54 @@ class RoleTest < ActiveSupport::TestCase
|
|
|
26
26
|
assert_equal default, Role[' defAult ']
|
|
27
27
|
assert_equal nil, Role[:bad_role]
|
|
28
28
|
end
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
should "be able to quickly load the admin role" do
|
|
31
|
-
admin_role =
|
|
32
|
-
|
|
31
|
+
admin_role = create(:role, :name => 'Administrator')
|
|
32
|
+
|
|
33
33
|
assert_equal admin_role, Role[:administrator]
|
|
34
34
|
assert_equal admin_role, Role.admin
|
|
35
|
-
end
|
|
35
|
+
end
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
context "A Role instance" do
|
|
39
39
|
should "have a permission keys array" do
|
|
40
|
-
admin_permission =
|
|
41
|
-
users_permission =
|
|
42
|
-
|
|
43
|
-
role =
|
|
44
|
-
|
|
40
|
+
admin_permission = create(:admin_permission)
|
|
41
|
+
users_permission = create(:users_permission)
|
|
42
|
+
|
|
43
|
+
role = build(:role)
|
|
44
|
+
|
|
45
45
|
assert_equal 0, role.permission_keys.length
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
assert_difference 'Role.count', 1 do
|
|
48
48
|
role.save
|
|
49
49
|
end
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
assert_difference 'PermissionRole.count', 2 do
|
|
52
52
|
role.permission_keys = %w( admin manage_users )
|
|
53
53
|
role.save
|
|
54
54
|
end
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
assert_equal %w( admin manage_users ), role.permission_keys.sort
|
|
57
57
|
end
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
should "be able to check for a permission" do
|
|
60
60
|
role = Role.new
|
|
61
61
|
role.stubs(:permission_keys).returns(%w( admin permission1 permission 2 ))
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
assert_equal true, role.permission?(:admin)
|
|
64
64
|
assert_equal true, role.has(:admin)
|
|
65
65
|
assert_equal true, role.admin?
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
assert_equal true, role.permission?(:permission1)
|
|
68
68
|
assert_equal true, role.has(:permission1)
|
|
69
69
|
assert_equal true, role.permission1?
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
assert_equal false, role.permission?(:bad)
|
|
72
72
|
assert_equal false, role.has(:bad)
|
|
73
73
|
assert_equal false, role.bad?
|
|
74
|
-
|
|
74
|
+
|
|
75
75
|
# no question mark, use regular method_missing
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
assert_raises NoMethodError do
|
|
78
78
|
role.bad_call_without_question_mark
|
|
79
79
|
end
|
data/test/session_test.rb
CHANGED
|
@@ -2,173 +2,173 @@ require 'helper'
|
|
|
2
2
|
|
|
3
3
|
class SessionTest < ActiveSupport::TestCase
|
|
4
4
|
include Challah
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
context "An Challah::Session class" do
|
|
7
7
|
should "use the test storage method" do
|
|
8
8
|
assert_equal TestSessionStore, Challah.options[:storage_class]
|
|
9
9
|
end
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
should "create a new session instance from a user or id" do
|
|
12
|
-
user =
|
|
13
|
-
|
|
14
|
-
assert_equal true, user.active?
|
|
15
|
-
|
|
16
|
-
session = Session.create(user)
|
|
12
|
+
user = create(:user)
|
|
13
|
+
|
|
14
|
+
assert_equal true, user.active?
|
|
15
|
+
|
|
16
|
+
session = Session.create(user)
|
|
17
17
|
assert_equal true, session.valid?
|
|
18
18
|
assert_equal user.id, session.user_id
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
should "create a blank but invalid session for a non-existant or inactive user" do
|
|
22
22
|
session = Session.create(999)
|
|
23
23
|
assert_equal false, session.valid?
|
|
24
24
|
assert_equal nil, session.user_id
|
|
25
25
|
end
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
should "persist a session" do
|
|
28
|
-
user =
|
|
29
|
-
|
|
28
|
+
user = create(:user)
|
|
29
|
+
|
|
30
30
|
session = Session.create(user)
|
|
31
31
|
assert_equal true, session.valid?
|
|
32
32
|
assert_equal user, session.user
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
session.save
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
session_two = Session.find
|
|
37
37
|
assert_equal true, session_two.valid?
|
|
38
38
|
assert_equal user, session_two.user
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
Session.destroy
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
session_three = Session.find
|
|
43
43
|
assert_equal false, session_three.valid?
|
|
44
44
|
assert_equal nil, session_three.user
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
|
-
|
|
48
|
-
context "A Challah::Session instance" do
|
|
47
|
+
|
|
48
|
+
context "A Challah::Session instance" do
|
|
49
49
|
should "receive a request and params object" do
|
|
50
50
|
session = Session.new(MockRequest.new, { :username => 'test-user', :password => 'test123' })
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
assert_not_nil session.request
|
|
53
53
|
assert_not_nil session.params
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
assert_equal true, session.username?
|
|
56
56
|
end
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
should "be able to set a username" do
|
|
59
59
|
session = Session.new
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
assert_equal false, session.username?
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
session.username = 'test-user'
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
assert_equal true, session.username?
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
assert_equal 'test-user', session.username
|
|
68
68
|
end
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
should "be able to set attributes" do
|
|
71
71
|
session = Session.new
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
assert_equal Hash.new, session.params
|
|
74
|
-
|
|
74
|
+
|
|
75
75
|
session.username = 'test-user'
|
|
76
76
|
expected = { :username => 'test-user' }
|
|
77
77
|
assert_equal expected, session.params
|
|
78
78
|
assert_equal true, session.username?
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
session.password = 'abc123'
|
|
81
81
|
expected = { :username => 'test-user', :password => 'abc123' }
|
|
82
82
|
assert_equal expected, session.params
|
|
83
83
|
assert_equal true, session.password?
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
session.api_key = '122345873847'
|
|
86
86
|
expected = { :username => 'test-user', :password => 'abc123', :api_key => '122345873847' }
|
|
87
87
|
assert_equal expected, session.params
|
|
88
88
|
assert_equal true, session.api_key?
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
session.other = true
|
|
91
91
|
expected = { :username => 'test-user', :password => 'abc123', :api_key => '122345873847', :other => true }
|
|
92
92
|
assert_equal expected, session.params
|
|
93
93
|
assert_equal true, session.other?
|
|
94
|
-
|
|
94
|
+
|
|
95
95
|
assert_raises NoMethodError do
|
|
96
96
|
session.no_key
|
|
97
97
|
end
|
|
98
|
-
end
|
|
99
|
-
|
|
98
|
+
end
|
|
99
|
+
|
|
100
100
|
should "validate with a password" do
|
|
101
|
-
user =
|
|
102
|
-
|
|
101
|
+
user = create(:user, :username => 'test-user')
|
|
102
|
+
|
|
103
103
|
User.stubs(:find_for_session).returns(user)
|
|
104
|
-
|
|
104
|
+
|
|
105
105
|
session = Session.new
|
|
106
106
|
session.ip = '127.0.0.1'
|
|
107
107
|
session.username = 'test-user'
|
|
108
108
|
session.password = 'abc123'
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
user.expects(:successful_authentication!).with('127.0.0.1').once
|
|
111
|
-
|
|
111
|
+
|
|
112
112
|
assert_equal true, session.valid?
|
|
113
113
|
assert_equal user, session.user
|
|
114
114
|
assert_equal user.id, session.user_id
|
|
115
115
|
assert_equal true, session.persist?
|
|
116
116
|
assert_equal true, session.save
|
|
117
|
-
|
|
117
|
+
|
|
118
118
|
User.unstub(:find_for_session)
|
|
119
119
|
end
|
|
120
|
-
|
|
120
|
+
|
|
121
121
|
should "validate with an api key" do
|
|
122
122
|
Challah.options[:api_key_enabled] = true
|
|
123
|
-
|
|
124
|
-
user =
|
|
125
|
-
|
|
123
|
+
|
|
124
|
+
user = create(:user, :api_key => '123456abcdefg')
|
|
125
|
+
|
|
126
126
|
User.stubs(:find_for_session).returns(user)
|
|
127
|
-
|
|
127
|
+
|
|
128
128
|
session = Session.new
|
|
129
129
|
session.ip = '127.0.0.1'
|
|
130
130
|
session.key = '123456abcdefg'
|
|
131
|
-
|
|
131
|
+
|
|
132
132
|
assert_equal true, session.valid?
|
|
133
133
|
assert_equal user, session.user
|
|
134
|
-
assert_equal user.id, session.user_id
|
|
134
|
+
assert_equal user.id, session.user_id
|
|
135
135
|
assert_equal false, session.persist?
|
|
136
136
|
assert_equal false, session.save
|
|
137
|
-
|
|
137
|
+
|
|
138
138
|
user.expects(:successful_authentication!).with('127.0.0.1').once
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
User.unstub(:find_for_session)
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
Challah.options[:api_key_enabled] = false
|
|
143
|
-
end
|
|
144
|
-
|
|
143
|
+
end
|
|
144
|
+
|
|
145
145
|
should "reject if password is incorrect" do
|
|
146
|
-
user =
|
|
147
|
-
|
|
146
|
+
user = create(:user, :username => 'test-user')
|
|
147
|
+
|
|
148
148
|
User.stubs(:find_for_session).returns(user)
|
|
149
|
-
|
|
149
|
+
|
|
150
150
|
session = Session.new
|
|
151
151
|
session.username = 'test-user'
|
|
152
152
|
session.password = 'bad-pass'
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
user.expects(:failed_authentication!).once
|
|
155
|
-
|
|
156
|
-
assert_equal false, session.valid?
|
|
155
|
+
|
|
156
|
+
assert_equal false, session.valid?
|
|
157
157
|
assert_equal nil, session.user
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
User.unstub(:find_for_session)
|
|
160
160
|
end
|
|
161
|
-
|
|
161
|
+
|
|
162
162
|
should "have a default_path attribute" do
|
|
163
|
-
user =
|
|
164
|
-
|
|
163
|
+
user = create(:user, :username => 'test-user')
|
|
164
|
+
|
|
165
165
|
user.stubs(:default_path).returns("/user-path")
|
|
166
|
-
|
|
167
|
-
session = Session.new
|
|
166
|
+
|
|
167
|
+
session = Session.new
|
|
168
168
|
assert_equal '/', session.default_path
|
|
169
|
-
|
|
169
|
+
|
|
170
170
|
session = Session.create(user)
|
|
171
171
|
assert_equal '/user-path', session.default_path
|
|
172
|
-
end
|
|
172
|
+
end
|
|
173
173
|
end
|
|
174
174
|
end
|