policy-assertions 0.1.1 → 0.2.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +3 -0
- data/lib/policy_assertions.rb +8 -3
- data/lib/policy_assertions/version.rb +1 -1
- data/policy-assertions.gemspec +2 -2
- data/test/lib/policy_assertions_test.rb +15 -0
- data/test/test_helper.rb +22 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2e05d231a95ef387b2eacf9fa1cd51c5a920e3425562ec6d2047d8db91469c98
|
4
|
+
data.tar.gz: 21bd13d4d9146cef4e13de41b7c7a5c12114a916751f414e5c820ae1bb07e13e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8abbbb6535264993c6f11e71535e0fa5d4c96ff40e797b6ecfeb1f20e4ff9eaf94495554a6b897c47c6283d721f3215002903d083f1f3a52848f0f9a4e68cdf8
|
7
|
+
data.tar.gz: cd03f84dc8d8d447f69c3e6c15f44851da05caec8cfa7aca428051d39992398a454c2a58b6c214976c1fa2bf28af4182daf2abb3c1c7f1a701ce7b23157f7b6e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## v0.2.0
|
2
|
+
* [Add support for testing policies that are not of type "#{record.class}Policy" #14](https://github.com/ProctorU/policy-assertions/pull/14) - Thanks @marceloeloelo!
|
3
|
+
|
1
4
|
## v0.1.0
|
2
5
|
* [Adds support for arrays as actions in block tests](https://github.com/ProctorU/policy-assertions/pull/10)
|
3
6
|
* [Adds support for `assert_not_permitted`](https://github.com/ProctorU/policy-assertions/pull/12)
|
data/lib/policy_assertions.rb
CHANGED
@@ -17,7 +17,7 @@ module PolicyAssertions
|
|
17
17
|
class Test < ActiveSupport::TestCase
|
18
18
|
def assert_permit(user, record, *permissions)
|
19
19
|
get_permissions(permissions.flatten).each do |permission|
|
20
|
-
policy =
|
20
|
+
policy = find_policy!(user, record)
|
21
21
|
assert policy.public_send(permission),
|
22
22
|
"Expected #{policy.class.name} to grant #{permission} "\
|
23
23
|
"on #{record} for #{user} but it didn't"
|
@@ -26,7 +26,7 @@ module PolicyAssertions
|
|
26
26
|
|
27
27
|
def refute_permit(user, record, *permissions)
|
28
28
|
get_permissions(permissions.flatten).each do |permission|
|
29
|
-
policy =
|
29
|
+
policy = find_policy!(user, record)
|
30
30
|
refute policy.public_send(permission),
|
31
31
|
"Expected #{policy.class.name} not to grant #{permission} "\
|
32
32
|
"on #{record} for #{user} but it did"
|
@@ -35,7 +35,7 @@ module PolicyAssertions
|
|
35
35
|
alias assert_not_permitted refute_permit
|
36
36
|
|
37
37
|
def assert_strong_parameters(user, record, params_hash, allowed_params)
|
38
|
-
policy =
|
38
|
+
policy = find_policy!(user, record)
|
39
39
|
|
40
40
|
param_key = find_param_key(record)
|
41
41
|
|
@@ -83,5 +83,10 @@ module PolicyAssertions
|
|
83
83
|
caller[2][/`.*'/][1..-2]
|
84
84
|
end
|
85
85
|
end
|
86
|
+
|
87
|
+
def find_policy!(user, record)
|
88
|
+
described_policy = self.respond_to?(:described_class) ? described_class : nil
|
89
|
+
described_policy ? described_policy.new(user, record) : Pundit.policy!(user, record)
|
90
|
+
end
|
86
91
|
end
|
87
92
|
end
|
data/policy-assertions.gemspec
CHANGED
@@ -7,10 +7,10 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "policy-assertions"
|
8
8
|
spec.version = PolicyAssertions::VERSION
|
9
9
|
spec.authors = ['ProctorU']
|
10
|
-
spec.email = ['engineering@proctoru.com']
|
10
|
+
spec.email = ['engineering.team@proctoru.com']
|
11
11
|
spec.summary = %q{Minitest assertions for Pundit policies.}
|
12
12
|
spec.description = %q{Minitest assertions for Pundit policies.}
|
13
|
-
spec.homepage = 'https://github.com/
|
13
|
+
spec.homepage = 'https://github.com/proctoru/policy-assertions'
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.required_ruby_version = '>= 1.9.3'
|
@@ -123,6 +123,21 @@ class AssertionsTest < Minitest::Test
|
|
123
123
|
test_runner.run
|
124
124
|
assert test_runner.passed?
|
125
125
|
end
|
126
|
+
|
127
|
+
def test_described_class
|
128
|
+
test_runner = custom_policy_class do
|
129
|
+
def described_class
|
130
|
+
CustomPolicy
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_new
|
134
|
+
assert_permit User.new(100), Article.new(100)
|
135
|
+
end
|
136
|
+
end.new :test_new
|
137
|
+
|
138
|
+
test_runner.run
|
139
|
+
assert test_runner.passed?
|
140
|
+
end
|
126
141
|
end
|
127
142
|
|
128
143
|
class StrongParametersTest < Minitest::Test
|
data/test/test_helper.rb
CHANGED
@@ -15,6 +15,15 @@ def policy_class(&block)
|
|
15
15
|
klass
|
16
16
|
end
|
17
17
|
|
18
|
+
def custom_policy_class(&block)
|
19
|
+
klass = Class.new(PolicyAssertions::Test, &block)
|
20
|
+
def klass.name
|
21
|
+
'CustomPolicyTest'
|
22
|
+
end
|
23
|
+
|
24
|
+
klass
|
25
|
+
end
|
26
|
+
|
18
27
|
class User
|
19
28
|
def self.policy_class
|
20
29
|
PersonPolicy
|
@@ -93,6 +102,19 @@ class PersonPolicy
|
|
93
102
|
end
|
94
103
|
end
|
95
104
|
|
105
|
+
class CustomPolicy
|
106
|
+
attr_reader :user, :record
|
107
|
+
|
108
|
+
def initialize(user, record)
|
109
|
+
@user = user
|
110
|
+
@record = record
|
111
|
+
end
|
112
|
+
|
113
|
+
def new?
|
114
|
+
record.is_a?(Article)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
96
118
|
module Users
|
97
119
|
class Session
|
98
120
|
attr_accessor :id, :user_id
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: policy-assertions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ProctorU
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
version: 3.0.0
|
125
125
|
description: Minitest assertions for Pundit policies.
|
126
126
|
email:
|
127
|
-
- engineering@proctoru.com
|
127
|
+
- engineering.team@proctoru.com
|
128
128
|
executables: []
|
129
129
|
extensions: []
|
130
130
|
extra_rdoc_files: []
|
@@ -147,7 +147,7 @@ files:
|
|
147
147
|
- test/lib/policy-assertions/version_test.rb
|
148
148
|
- test/lib/policy_assertions_test.rb
|
149
149
|
- test/test_helper.rb
|
150
|
-
homepage: https://github.com/
|
150
|
+
homepage: https://github.com/proctoru/policy-assertions
|
151
151
|
licenses:
|
152
152
|
- MIT
|
153
153
|
metadata: {}
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
167
|
version: '0'
|
168
168
|
requirements: []
|
169
169
|
rubyforge_project:
|
170
|
-
rubygems_version: 2.6
|
170
|
+
rubygems_version: 2.7.6
|
171
171
|
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: Minitest assertions for Pundit policies.
|