canard 0.5.0.pre → 0.6.0.pre
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.
- checksums.yaml +5 -5
- data/.hound.yml +3 -0
- data/.rubocop.yml +27 -0
- data/.rubocop_todo.yml +37 -0
- data/.travis.yml +1 -1
- data/Gemfile +7 -6
- data/README.md +40 -37
- data/Rakefile +5 -2
- data/canard.gemspec +8 -7
- data/lib/ability.rb +14 -13
- data/lib/canard.rb +4 -2
- data/lib/canard/abilities.rb +7 -9
- data/lib/canard/adapters/active_record.rb +32 -29
- data/lib/canard/adapters/mongoid.rb +18 -11
- data/lib/canard/find_abilities.rb +8 -9
- data/lib/canard/railtie.rb +11 -16
- data/lib/canard/user_model.rb +66 -67
- data/lib/canard/version.rb +3 -1
- data/lib/generators/ability_definition.rb +16 -14
- data/lib/generators/canard/ability/ability_generator.rb +16 -12
- data/lib/generators/rspec/ability/ability_generator.rb +9 -9
- data/lib/tasks/canard.rake +6 -6
- data/test/abilities/administrators.rb +2 -2
- data/test/canard/abilities_test.rb +14 -21
- data/test/canard/ability_test.rb +40 -52
- data/test/canard/adapters/active_record_test.rb +71 -135
- data/test/canard/adapters/mongoid_test.rb +61 -132
- data/test/canard/canard_test.rb +8 -10
- data/test/canard/find_abilities_test.rb +9 -11
- data/test/canard/user_model_test.rb +22 -32
- data/test/dummy/Rakefile +3 -1
- data/test/dummy/app/abilities/admins.rb +4 -4
- data/test/dummy/app/abilities/authors.rb +3 -3
- data/test/dummy/app/abilities/editors.rb +2 -2
- data/test/dummy/app/abilities/guests.rb +3 -3
- data/test/dummy/app/abilities/users.rb +4 -4
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/models/activity.rb +3 -1
- data/test/dummy/app/models/member.rb +3 -3
- data/test/dummy/app/models/mongoid_user.rb +5 -3
- data/test/dummy/app/models/plain_ruby_non_user.rb +2 -2
- data/test/dummy/app/models/plain_ruby_user.rb +3 -3
- data/test/dummy/app/models/post.rb +3 -1
- data/test/dummy/app/models/user.rb +3 -2
- data/test/dummy/app/models/user_without_role.rb +4 -4
- data/test/dummy/app/models/user_without_role_mask.rb +3 -3
- data/test/dummy/config.ru +3 -1
- data/test/dummy/config/application.rb +9 -8
- data/test/dummy/config/boot.rb +4 -2
- data/test/dummy/config/environment.rb +3 -1
- data/test/dummy/config/environments/development.rb +2 -0
- data/test/dummy/config/environments/test.rb +4 -2
- data/test/dummy/config/initializers/secret_token.rb +2 -0
- data/test/dummy/config/initializers/session_store.rb +3 -1
- data/test/dummy/config/initializers/wrap_parameters.rb +3 -1
- data/test/dummy/config/mongoid3.yml +5 -1
- data/test/dummy/config/routes.rb +2 -0
- data/test/dummy/db/migrate/20120430083231_initialize_db.rb +7 -7
- data/test/dummy/db/schema.rb +11 -11
- data/test/dummy/script/rails +4 -2
- data/test/support/reloadable.rb +14 -15
- data/test/test_helper.rb +7 -13
- metadata +18 -18
- data/test/dummy/config/mongoid2.yml +0 -9
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Dummy::Application.configure do
|
2
4
|
# Settings specified here will take precedence over those in config/application.rb
|
3
5
|
|
@@ -9,7 +11,7 @@ Dummy::Application.configure do
|
|
9
11
|
|
10
12
|
# Configure static asset server for tests with Cache-Control for performance
|
11
13
|
config.serve_static_assets = true
|
12
|
-
config.static_cache_control =
|
14
|
+
config.static_cache_control = 'public, max-age=3600'
|
13
15
|
|
14
16
|
# Log error messages when you accidentally call methods on nil
|
15
17
|
config.whiny_nils = true
|
@@ -22,7 +24,7 @@ Dummy::Application.configure do
|
|
22
24
|
config.action_dispatch.show_exceptions = false
|
23
25
|
|
24
26
|
# Disable request forgery protection in test environment
|
25
|
-
config.action_controller.allow_forgery_protection
|
27
|
+
config.action_controller.allow_forgery_protection = false
|
26
28
|
|
27
29
|
# Raise exception on mass assignment protection for Active Record models
|
28
30
|
config.active_record.mass_assignment_sanitizer = :strict
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Be sure to restart your server when you modify this file.
|
2
4
|
|
3
|
-
Dummy::Application.config.session_store :cookie_store, :
|
5
|
+
Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
|
4
6
|
|
5
7
|
# Use the database for sessions instead of the cookie-based default,
|
6
8
|
# which shouldn't be used to store highly confidential information
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Be sure to restart your server when you modify this file.
|
2
4
|
#
|
3
5
|
# This file contains settings for ActionController::ParamsWrapper which
|
@@ -5,7 +7,7 @@
|
|
5
7
|
|
6
8
|
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
7
9
|
ActiveSupport.on_load(:action_controller) do
|
8
|
-
wrap_parameters :
|
10
|
+
wrap_parameters format: [:json]
|
9
11
|
end
|
10
12
|
|
11
13
|
# Disable root element in JSON by default.
|
data/test/dummy/config/routes.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class InitializeDb < ActiveRecord::Migration
|
2
|
-
|
3
4
|
def change
|
4
|
-
create_table :users, :
|
5
|
+
create_table :users, force: true do |t|
|
5
6
|
t.integer :roles_mask
|
6
7
|
end
|
7
|
-
create_table :user_without_roles, :
|
8
|
+
create_table :user_without_roles, force: true do |t|
|
8
9
|
t.integer :roles_mask
|
9
10
|
end
|
10
|
-
create_table :user_without_role_masks, :
|
11
|
+
create_table :user_without_role_masks, force: true do |t|
|
11
12
|
t.integer :my_roles_mask
|
12
13
|
end
|
13
|
-
|
14
|
-
create_table :members, :
|
14
|
+
|
15
|
+
create_table :members, force: true do |t|
|
15
16
|
t.references :user
|
16
17
|
end
|
17
18
|
end
|
18
|
-
|
19
19
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# This file is auto-generated from the current state of the database. Instead
|
2
4
|
# of editing this file, please use the migrations feature of Active Record to
|
3
5
|
# incrementally modify your database, and then regenerate this schema definition.
|
@@ -10,22 +12,20 @@
|
|
10
12
|
#
|
11
13
|
# It's strongly recommended to check this file into your version control system.
|
12
14
|
|
13
|
-
ActiveRecord::Schema.define(:
|
14
|
-
|
15
|
-
|
16
|
-
t.integer "user_id"
|
15
|
+
ActiveRecord::Schema.define(version: 20_120_430_083_231) do
|
16
|
+
create_table 'members', force: true do |t|
|
17
|
+
t.integer 'user_id'
|
17
18
|
end
|
18
19
|
|
19
|
-
create_table
|
20
|
-
t.integer
|
20
|
+
create_table 'user_without_role_masks', force: true do |t|
|
21
|
+
t.integer 'my_roles_mask'
|
21
22
|
end
|
22
23
|
|
23
|
-
create_table
|
24
|
-
t.integer
|
24
|
+
create_table 'user_without_roles', force: true do |t|
|
25
|
+
t.integer 'roles_mask'
|
25
26
|
end
|
26
27
|
|
27
|
-
create_table
|
28
|
-
t.integer
|
28
|
+
create_table 'users', force: true do |t|
|
29
|
+
t.integer 'roles_mask'
|
29
30
|
end
|
30
|
-
|
31
31
|
end
|
data/test/dummy/script/rails
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
5
|
|
4
|
-
APP_PATH = File.expand_path('
|
5
|
-
require File.expand_path('
|
6
|
+
APP_PATH = File.expand_path('../config/application', __dir__)
|
7
|
+
require File.expand_path('../config/boot', __dir__)
|
6
8
|
require 'rails/commands'
|
data/test/support/reloadable.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module MiniTest
|
2
4
|
class Unit
|
3
5
|
class TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
GC.start
|
8
|
-
end
|
9
|
-
|
10
|
-
def setup
|
11
|
-
[ 'canard/abilities.rb',
|
12
|
-
'canard/user_model.rb',
|
13
|
-
"canard/find_abilities.rb"
|
14
|
-
].each do |file|
|
15
|
-
file_path = File.join(File.expand_path('../../../lib', __FILE__), file)
|
16
|
-
load file_path
|
6
|
+
def teardown
|
7
|
+
Object.send(:remove_const, 'Canard') if Object.const_defined?('Canard')
|
8
|
+
GC.start
|
17
9
|
end
|
18
|
-
end
|
19
|
-
end
|
20
10
|
|
11
|
+
def setup
|
12
|
+
['canard/abilities.rb',
|
13
|
+
'canard/user_model.rb',
|
14
|
+
'canard/find_abilities.rb'].each do |file|
|
15
|
+
file_path = File.join(File.expand_path('../../lib', __dir__), file)
|
16
|
+
load file_path
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
21
20
|
end
|
22
21
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,33 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
|
-
gem 'minitest'
|
3
4
|
require 'minitest/autorun'
|
4
5
|
require 'active_record'
|
5
6
|
require 'mongoid'
|
6
7
|
|
7
8
|
# Configure Rails Environment
|
8
|
-
environment = ENV[
|
9
|
-
rails_root = File.expand_path('
|
9
|
+
environment = ENV['RAILS_ENV'] = 'test'
|
10
|
+
rails_root = File.expand_path('dummy', __dir__)
|
10
11
|
database_yml = File.expand_path('config/database.yml', rails_root)
|
11
12
|
|
12
13
|
ActiveRecord::Base.configurations = YAML.load_file(database_yml)
|
13
14
|
|
14
15
|
config = ActiveRecord::Base.configurations[environment]
|
15
|
-
db
|
16
|
+
db = File.expand_path(config['database'], rails_root)
|
16
17
|
|
17
18
|
# Drop the test database and migrate up
|
18
19
|
FileUtils.rm(db) if File.exist?(db)
|
19
|
-
ActiveRecord::Base.establish_connection(:
|
20
|
+
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: db)
|
20
21
|
ActiveRecord::Base.connection
|
21
22
|
ActiveRecord::Migration.verbose = false
|
22
23
|
ActiveRecord::Migrator.up File.expand_path('db/migrate', rails_root)
|
23
24
|
|
24
25
|
# Load mongoid config
|
25
|
-
|
26
|
-
ENV["MONGOID_ENV"] = "test"
|
27
|
-
Mongoid.load!(File.expand_path('config/mongoid2.yml', rails_root))
|
28
|
-
else
|
29
|
-
Mongoid.load!(File.expand_path('config/mongoid3.yml', rails_root), :test)
|
30
|
-
end
|
26
|
+
Mongoid.load!(File.expand_path('config/mongoid3.yml', rails_root), :test)
|
31
27
|
Mongoid.logger.level = :info
|
32
28
|
|
33
29
|
# Load dummy rails app
|
@@ -37,5 +33,3 @@ Rails.backtrace_cleaner.remove_silencers!
|
|
37
33
|
|
38
34
|
# Load support files (reloadable reloads canard)
|
39
35
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
40
|
-
|
41
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James McCarthy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -25,39 +25,39 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: mongoid
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 3.2.3
|
33
|
+
version: '3.0'
|
37
34
|
type: :development
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
|
-
version: 3.
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 3.2.3
|
40
|
+
version: '3.0'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
42
|
+
name: rails
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.2'
|
51
48
|
- - "~>"
|
52
49
|
- !ruby/object:Gem::Version
|
53
|
-
version: '3.
|
50
|
+
version: '3.2'
|
54
51
|
type: :development
|
55
52
|
prerelease: false
|
56
53
|
version_requirements: !ruby/object:Gem::Requirement
|
57
54
|
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3.2'
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '3.
|
60
|
+
version: '3.2'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: cancancan
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +95,9 @@ extensions: []
|
|
95
95
|
extra_rdoc_files: []
|
96
96
|
files:
|
97
97
|
- ".gitignore"
|
98
|
+
- ".hound.yml"
|
99
|
+
- ".rubocop.yml"
|
100
|
+
- ".rubocop_todo.yml"
|
98
101
|
- ".travis.yml"
|
99
102
|
- Gemfile
|
100
103
|
- MIT-LICENSE
|
@@ -153,7 +156,6 @@ files:
|
|
153
156
|
- test/dummy/config/initializers/session_store.rb
|
154
157
|
- test/dummy/config/initializers/wrap_parameters.rb
|
155
158
|
- test/dummy/config/locales/en.yml
|
156
|
-
- test/dummy/config/mongoid2.yml
|
157
159
|
- test/dummy/config/mongoid3.yml
|
158
160
|
- test/dummy/config/routes.rb
|
159
161
|
- test/dummy/db/migrate/20120430083231_initialize_db.rb
|
@@ -181,8 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
183
|
version: 1.3.1
|
182
184
|
requirements:
|
183
185
|
- cancan's community supported Rails4+ compatible cancancan fork.
|
184
|
-
|
185
|
-
rubygems_version: 2.6.10
|
186
|
+
rubygems_version: 3.0.2
|
186
187
|
signing_key:
|
187
188
|
specification_version: 4
|
188
189
|
summary: Adds role based authorisation to Rails by combining RoleModel and CanCanCan.
|
@@ -222,7 +223,6 @@ test_files:
|
|
222
223
|
- test/dummy/config/initializers/session_store.rb
|
223
224
|
- test/dummy/config/initializers/wrap_parameters.rb
|
224
225
|
- test/dummy/config/locales/en.yml
|
225
|
-
- test/dummy/config/mongoid2.yml
|
226
226
|
- test/dummy/config/mongoid3.yml
|
227
227
|
- test/dummy/config/routes.rb
|
228
228
|
- test/dummy/db/migrate/20120430083231_initialize_db.rb
|