phi_attrs 0.1.2 → 0.2.2

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.
@@ -1,11 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'phi_attrs'
2
4
  require 'rails'
3
5
 
4
6
  module PhiAttrs
5
7
  class Railtie < Rails::Railtie
6
- initializer 'phi_attrs.initialize' do
8
+ initializer 'phi_attrs.initialize' do |_app|
7
9
  ActiveSupport.on_load(:active_record) do
8
- ActiveRecord::Base.send :extend, PhiAttrs
10
+ ActiveRecord::Base.send :extend, PhiAttrs::Model
11
+ ActionController::Base.send :include, PhiAttrs::Controller
9
12
  end
10
13
  end
11
14
  end
@@ -0,0 +1,43 @@
1
+ require 'rspec/expectations'
2
+
3
+ DO_NOT_SPECIFY = "do not specify `allowed_by` or `with_access_reason` for negated `allow_phi_access`"
4
+
5
+ RSpec::Matchers.define :allow_phi_access do
6
+ match do |result|
7
+ @allowed = result.phi_allowed?
8
+ @user_id_matches = @user_id.nil? || @user_id == result.phi_allowed_by
9
+ @reason_matches = @reason.nil? || @reason == result.phi_access_reason
10
+
11
+ @allowed && @user_id_matches && @reason_matches
12
+ end
13
+
14
+ match_when_negated do |result|
15
+ raise ArgumentError, DO_NOT_SPECIFY unless @user_id.nil? && @reason.nil?
16
+
17
+ !result.phi_allowed?
18
+ end
19
+
20
+ chain :allowed_by do |user_id|
21
+ @user_id = user_id
22
+ end
23
+
24
+ chain :with_access_reason do |reason|
25
+ @reason = reason
26
+ end
27
+
28
+ # :nocov:
29
+ failure_message do |result|
30
+ msgs = []
31
+
32
+ msgs = ['PHI Access was not allowed.'] unless @allowed
33
+ msgs << "PHI Access was allowed by '#{result.phi_allowed_by}' (not '#{@user_id}')." unless @user_id_matches
34
+ msgs << "PHI Access was allowed because '#{result.phi_access_reason}' (not because '#{@reason}')." unless @reason_matches
35
+
36
+ msgs.join "\n"
37
+ end
38
+
39
+ failure_message_when_negated do |result|
40
+ "PHI access was allowed by '#{result.phi_allowed_by}', because '#{result.phi_access_reason}'"
41
+ end
42
+ # :nocov:
43
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PhiAttrs
2
- VERSION = '0.1.2'.freeze
4
+ VERSION = '0.2.2'
3
5
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
@@ -12,6 +13,13 @@ Gem::Specification.new do |spec|
12
13
  spec.summary = 'PHI Access Restriction & Logging for Rails ActiveRecord'
13
14
  spec.homepage = 'http://www.apsis.io'
14
15
  spec.license = 'MIT'
16
+ spec.post_install_message = %q`
17
+ Thank you for installing phi_attrs! By installing this gem,
18
+ you acknowledge and agree to the disclaimer as provided in the
19
+ DISCLAIMER.txt file.
20
+
21
+ For full details, see: https://github.com/apsislabs/phi_attrs/blob/master/DISCLAIMER.txt
22
+ `
15
23
 
16
24
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
25
  f.match(%r{^(test|spec|features)/})
@@ -23,13 +31,17 @@ Gem::Specification.new do |spec|
23
31
  spec.add_runtime_dependency 'rails', '>= 4.2.0'
24
32
  spec.add_runtime_dependency 'request_store', '~> 1.4'
25
33
 
26
- spec.add_development_dependency 'appraisal', '~> 2.1'
27
- spec.add_development_dependency 'bundler', '~> 1.16'
34
+ spec.add_development_dependency 'appraisal'
35
+ spec.add_development_dependency 'bundler', '~> 2.0'
28
36
  spec.add_development_dependency 'byebug'
29
- spec.add_development_dependency 'combustion', '~> 0.9.1'
30
- spec.add_development_dependency 'rake', '~> 10.0'
37
+ spec.add_development_dependency 'chandler'
38
+ spec.add_development_dependency 'combustion'
39
+ spec.add_development_dependency 'factory_bot_rails'
40
+ spec.add_development_dependency 'faker'
41
+ spec.add_development_dependency 'rake'
31
42
  spec.add_development_dependency 'rspec', '~> 3.7'
32
43
  spec.add_development_dependency 'rspec-rails', '~> 3.7'
44
+ spec.add_development_dependency 'rubocop'
33
45
  spec.add_development_dependency 'simplecov', '~> 0.16'
34
- spec.add_development_dependency 'sqlite3', '~> 1.3'
46
+ spec.add_development_dependency 'tzinfo-data'
35
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phi_attrs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wyatt Kirby
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-05 00:00:00.000000000 Z
11
+ date: 2020-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -42,30 +42,30 @@ dependencies:
42
42
  name: appraisal
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '2.1'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '2.1'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.16'
61
+ version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.16'
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,34 +80,76 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: chandler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: combustion
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - "~>"
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: 0.9.1
103
+ version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - "~>"
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: factory_bot_rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: faker
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
95
130
  - !ruby/object:Gem::Version
96
- version: 0.9.1
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: rake
99
141
  requirement: !ruby/object:Gem::Requirement
100
142
  requirements:
101
- - - "~>"
143
+ - - ">="
102
144
  - !ruby/object:Gem::Version
103
- version: '10.0'
145
+ version: '0'
104
146
  type: :development
105
147
  prerelease: false
106
148
  version_requirements: !ruby/object:Gem::Requirement
107
149
  requirements:
108
- - - "~>"
150
+ - - ">="
109
151
  - !ruby/object:Gem::Version
110
- version: '10.0'
152
+ version: '0'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: rspec
113
155
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +178,20 @@ dependencies:
136
178
  - - "~>"
137
179
  - !ruby/object:Gem::Version
138
180
  version: '3.7'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
139
195
  - !ruby/object:Gem::Dependency
140
196
  name: simplecov
141
197
  requirement: !ruby/object:Gem::Requirement
@@ -151,19 +207,19 @@ dependencies:
151
207
  - !ruby/object:Gem::Version
152
208
  version: '0.16'
153
209
  - !ruby/object:Gem::Dependency
154
- name: sqlite3
210
+ name: tzinfo-data
155
211
  requirement: !ruby/object:Gem::Requirement
156
212
  requirements:
157
- - - "~>"
213
+ - - ">="
158
214
  - !ruby/object:Gem::Version
159
- version: '1.3'
215
+ version: '0'
160
216
  type: :development
161
217
  prerelease: false
162
218
  version_requirements: !ruby/object:Gem::Requirement
163
219
  requirements:
164
- - - "~>"
220
+ - - ">="
165
221
  - !ruby/object:Gem::Version
166
- version: '1.3'
222
+ version: '0'
167
223
  description:
168
224
  email:
169
225
  - wyatt@apsis.io
@@ -171,23 +227,32 @@ executables: []
171
227
  extensions: []
172
228
  extra_rdoc_files: []
173
229
  files:
230
+ - ".github/workflows/build.yml"
231
+ - ".github/workflows/publish.yml"
174
232
  - ".gitignore"
175
233
  - ".rspec"
176
- - ".travis.yml"
234
+ - ".rubocop.yml"
177
235
  - Appraisals
236
+ - CHANGELOG.md
237
+ - DISCLAIMER.txt
178
238
  - Dockerfile
179
239
  - Gemfile
180
240
  - LICENSE.txt
181
241
  - README.md
182
242
  - Rakefile
183
243
  - bin/console
244
+ - bin/helpers/docker
245
+ - bin/rubo_fix
246
+ - bin/run_tests
184
247
  - bin/setup
185
248
  - bin/ssh_to_container
186
249
  - config.ru
187
250
  - docker-compose.yml
188
251
  - docker/start.sh
189
252
  - gemfiles/.bundle/config
190
- - gemfiles/rails_5.0.gemfile
253
+ - gemfiles/rails_5.1.gemfile
254
+ - gemfiles/rails_5.2.gemfile
255
+ - gemfiles/rails_6.0.gemfile
191
256
  - lib/phi_attrs.rb
192
257
  - lib/phi_attrs/configure.rb
193
258
  - lib/phi_attrs/exceptions.rb
@@ -195,13 +260,17 @@ files:
195
260
  - lib/phi_attrs/logger.rb
196
261
  - lib/phi_attrs/phi_record.rb
197
262
  - lib/phi_attrs/railtie.rb
263
+ - lib/phi_attrs/rspec.rb
198
264
  - lib/phi_attrs/version.rb
199
265
  - phi_attrs.gemspec
200
266
  homepage: http://www.apsis.io
201
267
  licenses:
202
268
  - MIT
203
269
  metadata: {}
204
- post_install_message:
270
+ post_install_message: "\n Thank you for installing phi_attrs! By installing this
271
+ gem,\n you acknowledge and agree to the disclaimer as provided in the\n DISCLAIMER.txt
272
+ file.\n\n For full details, see: https://github.com/apsislabs/phi_attrs/blob/master/DISCLAIMER.txt\n
273
+ \ "
205
274
  rdoc_options: []
206
275
  require_paths:
207
276
  - lib
@@ -216,8 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
285
  - !ruby/object:Gem::Version
217
286
  version: '0'
218
287
  requirements: []
219
- rubyforge_project:
220
- rubygems_version: 2.6.13
288
+ rubygems_version: 3.0.3
221
289
  signing_key:
222
290
  specification_version: 4
223
291
  summary: PHI Access Restriction & Logging for Rails ActiveRecord
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.2
5
- before_install: gem install bundler -v 1.16.1