audited 4.2.2 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of audited might be problematic. Click here for more details.

Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -9
  3. data/Appraisals +10 -6
  4. data/Gemfile +1 -13
  5. data/README.md +46 -33
  6. data/Rakefile +3 -18
  7. data/gemfiles/rails40.gemfile +1 -5
  8. data/gemfiles/rails41.gemfile +1 -5
  9. data/gemfiles/rails42.gemfile +1 -5
  10. data/gemfiles/rails50.gemfile +8 -0
  11. data/lib/audited-rspec.rb +4 -0
  12. data/lib/audited.rb +15 -2
  13. data/lib/audited/audit.rb +97 -57
  14. data/lib/audited/auditor.rb +73 -45
  15. data/lib/audited/rspec_matchers.rb +6 -2
  16. data/lib/audited/sweeper.rb +12 -23
  17. data/lib/audited/version.rb +1 -1
  18. data/lib/generators/audited/install_generator.rb +20 -0
  19. data/lib/generators/audited/migration.rb +15 -0
  20. data/lib/generators/audited/templates/add_association_to_audits.rb +11 -0
  21. data/lib/generators/audited/templates/add_comment_to_audits.rb +9 -0
  22. data/lib/generators/audited/templates/add_remote_address_to_audits.rb +10 -0
  23. data/lib/generators/audited/templates/add_request_uuid_to_audits.rb +10 -0
  24. data/lib/generators/audited/templates/install.rb +30 -0
  25. data/lib/generators/audited/templates/rename_association_to_associated.rb +23 -0
  26. data/lib/generators/audited/templates/rename_changes_to_audited_changes.rb +9 -0
  27. data/lib/generators/audited/templates/rename_parent_to_association.rb +11 -0
  28. data/lib/generators/audited/upgrade_generator.rb +57 -0
  29. data/spec/audited/audit_spec.rb +199 -0
  30. data/spec/audited/auditor_spec.rb +607 -0
  31. data/spec/audited/sweeper_spec.rb +106 -0
  32. data/spec/audited_spec_helpers.rb +6 -22
  33. data/spec/rails_app/config/environments/test.rb +7 -4
  34. data/spec/rails_app/config/initializers/secret_token.rb +1 -1
  35. data/spec/rails_app/config/routes.rb +1 -4
  36. data/spec/spec_helper.rb +7 -9
  37. data/spec/support/active_record/models.rb +20 -13
  38. data/spec/support/active_record/schema.rb +36 -12
  39. data/test/db/version_1.rb +4 -4
  40. data/test/db/version_2.rb +4 -4
  41. data/test/db/version_3.rb +4 -4
  42. data/test/db/version_4.rb +4 -4
  43. data/test/db/version_5.rb +2 -2
  44. data/test/db/version_6.rb +2 -2
  45. data/test/install_generator_test.rb +1 -1
  46. data/test/upgrade_generator_test.rb +10 -10
  47. metadata +73 -37
  48. data/lib/audited/active_record/version.rb +0 -5
  49. data/lib/audited/mongo_mapper/version.rb +0 -5
  50. data/spec/support/mongo_mapper/connection.rb +0 -4
  51. data/spec/support/mongo_mapper/models.rb +0 -214
@@ -1,5 +1,5 @@
1
1
  ActiveRecord::Schema.define do
2
- create_table :audits, :force => true do |t|
2
+ create_table :audits, force: true do |t|
3
3
  t.column :auditable_id, :integer
4
4
  t.column :auditable_type, :string
5
5
  t.column :user_id, :integer
@@ -7,14 +7,14 @@ ActiveRecord::Schema.define do
7
7
  t.column :username, :string
8
8
  t.column :action, :string
9
9
  t.column :audited_changes, :text
10
- t.column :version, :integer, :default => 0
10
+ t.column :version, :integer, default: 0
11
11
  t.column :comment, :string
12
12
  t.column :created_at, :datetime
13
13
  t.column :remote_address, :string
14
14
  end
15
15
 
16
- add_index :audits, [:auditable_id, :auditable_type], :name => 'auditable_index'
17
- add_index :audits, [:user_id, :user_type], :name => 'user_index'
16
+ add_index :audits, [:auditable_id, :auditable_type], name: 'auditable_index'
17
+ add_index :audits, [:user_id, :user_type], name: 'user_index'
18
18
  add_index :audits, :created_at
19
19
  end
20
20
 
@@ -1,5 +1,5 @@
1
1
  ActiveRecord::Schema.define do
2
- create_table :audits, :force => true do |t|
2
+ create_table :audits, force: true do |t|
3
3
  t.column :auditable_id, :integer
4
4
  t.column :auditable_type, :string
5
5
  t.column :user_id, :integer
@@ -7,7 +7,7 @@ ActiveRecord::Schema.define do
7
7
  t.column :username, :string
8
8
  t.column :action, :string
9
9
  t.column :audited_changes, :text
10
- t.column :version, :integer, :default => 0
10
+ t.column :version, :integer, default: 0
11
11
  t.column :comment, :string
12
12
  t.column :created_at, :datetime
13
13
  t.column :remote_address, :string
@@ -1,5 +1,5 @@
1
1
  ActiveRecord::Schema.define do
2
- create_table :audits, :force => true do |t|
2
+ create_table :audits, force: true do |t|
3
3
  t.column :auditable_id, :integer
4
4
  t.column :auditable_type, :string
5
5
  t.column :user_id, :integer
@@ -7,7 +7,7 @@ ActiveRecord::Schema.define do
7
7
  t.column :username, :string
8
8
  t.column :action, :string
9
9
  t.column :audited_changes, :text
10
- t.column :version, :integer, :default => 0
10
+ t.column :version, :integer, default: 0
11
11
  t.column :comment, :string
12
12
  t.column :created_at, :datetime
13
13
  t.column :remote_address, :string
@@ -11,7 +11,7 @@ class InstallGeneratorTest < Rails::Generators::TestCase
11
11
  run_generator %w(install)
12
12
 
13
13
  assert_migration "db/migrate/install_audited.rb" do |content|
14
- assert_match /class InstallAudited/, content
14
+ assert_match(/class InstallAudited/, content)
15
15
  end
16
16
  end
17
17
  end
@@ -1,12 +1,12 @@
1
1
  require 'test_helper'
2
2
 
3
- require 'audited/adapters/active_record'
4
3
  require 'generators/audited/upgrade_generator'
5
4
 
6
5
  class UpgradeGeneratorTest < Rails::Generators::TestCase
7
6
  destination File.expand_path('../../tmp', __FILE__)
8
7
  setup :prepare_destination
9
8
  tests Audited::Generators::UpgradeGenerator
9
+ self.use_transactional_fixtures = false
10
10
 
11
11
  test "should add 'comment' to audits table" do
12
12
  load_schema 1
@@ -14,7 +14,7 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
14
14
  run_generator %w(upgrade)
15
15
 
16
16
  assert_migration "db/migrate/add_comment_to_audits.rb" do |content|
17
- assert_match /add_column :audits, :comment, :string/, content
17
+ assert_match(/add_column :audits, :comment, :string/, content)
18
18
  end
19
19
 
20
20
  assert_migration "db/migrate/rename_changes_to_audited_changes.rb"
@@ -28,7 +28,7 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
28
28
  assert_no_migration "db/migrate/add_comment_to_audits.rb"
29
29
 
30
30
  assert_migration "db/migrate/rename_changes_to_audited_changes.rb" do |content|
31
- assert_match /rename_column :audits, :changes, :audited_changes/, content
31
+ assert_match(/rename_column :audits, :changes, :audited_changes/, content)
32
32
  end
33
33
  end
34
34
 
@@ -38,7 +38,7 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
38
38
  run_generator %w(upgrade)
39
39
 
40
40
  assert_migration "db/migrate/add_remote_address_to_audits.rb" do |content|
41
- assert_match /add_column :audits, :remote_address, :string/, content
41
+ assert_match(/add_column :audits, :remote_address, :string/, content)
42
42
  end
43
43
  end
44
44
 
@@ -48,8 +48,8 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
48
48
  run_generator %w(upgrade)
49
49
 
50
50
  assert_migration "db/migrate/add_association_to_audits.rb" do |content|
51
- assert_match /add_column :audits, :association_id, :integer/, content
52
- assert_match /add_column :audits, :association_type, :string/, content
51
+ assert_match(/add_column :audits, :association_id, :integer/, content)
52
+ assert_match(/add_column :audits, :association_type, :string/, content)
53
53
  end
54
54
  end
55
55
 
@@ -59,8 +59,8 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
59
59
  run_generator %w(upgrade)
60
60
 
61
61
  assert_migration "db/migrate/rename_association_to_associated.rb" do |content|
62
- assert_match /rename_column :audits, :association_id, :associated_id/, content
63
- assert_match /rename_column :audits, :association_type, :associated_type/, content
62
+ assert_match(/rename_column :audits, :association_id, :associated_id/, content)
63
+ assert_match(/rename_column :audits, :association_type, :associated_type/, content)
64
64
  end
65
65
  end
66
66
 
@@ -70,8 +70,8 @@ class UpgradeGeneratorTest < Rails::Generators::TestCase
70
70
  run_generator %w(upgrade)
71
71
 
72
72
  assert_migration "db/migrate/add_request_uuid_to_audits.rb" do |content|
73
- assert_match /add_column :audits, :request_uuid, :string/, content
74
- assert_match /add_index :audits, :request_uuid/, content
73
+ assert_match(/add_column :audits, :request_uuid, :string/, content)
74
+ assert_match(/add_index :audits, :request_uuid/, content)
75
75
  end
76
76
  end
77
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: audited
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.2
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
@@ -13,8 +13,28 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-08-01 00:00:00.000000000 Z
16
+ date: 2016-09-17 00:00:00.000000000 Z
17
17
  dependencies:
18
+ - !ruby/object:Gem::Dependency
19
+ name: activerecord
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: '4.0'
25
+ - - "<"
26
+ - !ruby/object:Gem::Version
27
+ version: '5.1'
28
+ type: :runtime
29
+ prerelease: false
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '4.0'
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: '5.1'
18
38
  - !ruby/object:Gem::Dependency
19
39
  name: rails-observers
20
40
  requirement: !ruby/object:Gem::Requirement
@@ -30,7 +50,7 @@ dependencies:
30
50
  - !ruby/object:Gem::Version
31
51
  version: 0.1.2
32
52
  - !ruby/object:Gem::Dependency
33
- name: protected_attributes
53
+ name: appraisal
34
54
  requirement: !ruby/object:Gem::Requirement
35
55
  requirements:
36
56
  - - ">="
@@ -44,61 +64,81 @@ dependencies:
44
64
  - !ruby/object:Gem::Version
45
65
  version: '0'
46
66
  - !ruby/object:Gem::Dependency
47
- name: appraisal
67
+ name: rails
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '4.0'
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ - - "<"
84
+ - !ruby/object:Gem::Version
85
+ version: '5.1'
86
+ - !ruby/object:Gem::Dependency
87
+ name: rspec-rails
48
88
  requirement: !ruby/object:Gem::Requirement
49
89
  requirements:
50
90
  - - "~>"
51
91
  - !ruby/object:Gem::Version
52
- version: 1.0.0
92
+ version: '3.5'
53
93
  type: :development
54
94
  prerelease: false
55
95
  version_requirements: !ruby/object:Gem::Requirement
56
96
  requirements:
57
97
  - - "~>"
58
98
  - !ruby/object:Gem::Version
59
- version: 1.0.0
99
+ version: '3.5'
60
100
  - !ruby/object:Gem::Dependency
61
- name: mongo_mapper
101
+ name: sqlite3
62
102
  requirement: !ruby/object:Gem::Requirement
63
103
  requirements:
64
104
  - - "~>"
65
105
  - !ruby/object:Gem::Version
66
- version: 0.13.0.beta2
106
+ version: '1.3'
67
107
  type: :development
68
108
  prerelease: false
69
109
  version_requirements: !ruby/object:Gem::Requirement
70
110
  requirements:
71
111
  - - "~>"
72
112
  - !ruby/object:Gem::Version
73
- version: 0.13.0.beta2
113
+ version: '1.3'
74
114
  - !ruby/object:Gem::Dependency
75
- name: rails
115
+ name: mysql2
76
116
  requirement: !ruby/object:Gem::Requirement
77
117
  requirements:
78
118
  - - "~>"
79
119
  - !ruby/object:Gem::Version
80
- version: 4.2.0
120
+ version: 0.3.20
81
121
  type: :development
82
122
  prerelease: false
83
123
  version_requirements: !ruby/object:Gem::Requirement
84
124
  requirements:
85
125
  - - "~>"
86
126
  - !ruby/object:Gem::Version
87
- version: 4.2.0
127
+ version: 0.3.20
88
128
  - !ruby/object:Gem::Dependency
89
- name: rspec-rails
129
+ name: pg
90
130
  requirement: !ruby/object:Gem::Requirement
91
131
  requirements:
92
132
  - - "~>"
93
133
  - !ruby/object:Gem::Version
94
- version: '3.0'
134
+ version: '0.18'
95
135
  type: :development
96
136
  prerelease: false
97
137
  version_requirements: !ruby/object:Gem::Requirement
98
138
  requirements:
99
139
  - - "~>"
100
140
  - !ruby/object:Gem::Version
101
- version: '3.0'
141
+ version: '0.18'
102
142
  description: Log all changes to your models
103
143
  email: info@collectiveidea.com
104
144
  executables: []
@@ -117,14 +157,28 @@ files:
117
157
  - gemfiles/rails40.gemfile
118
158
  - gemfiles/rails41.gemfile
119
159
  - gemfiles/rails42.gemfile
160
+ - gemfiles/rails50.gemfile
161
+ - lib/audited-rspec.rb
120
162
  - lib/audited.rb
121
- - lib/audited/active_record/version.rb
122
163
  - lib/audited/audit.rb
123
164
  - lib/audited/auditor.rb
124
- - lib/audited/mongo_mapper/version.rb
125
165
  - lib/audited/rspec_matchers.rb
126
166
  - lib/audited/sweeper.rb
127
167
  - lib/audited/version.rb
168
+ - lib/generators/audited/install_generator.rb
169
+ - lib/generators/audited/migration.rb
170
+ - lib/generators/audited/templates/add_association_to_audits.rb
171
+ - lib/generators/audited/templates/add_comment_to_audits.rb
172
+ - lib/generators/audited/templates/add_remote_address_to_audits.rb
173
+ - lib/generators/audited/templates/add_request_uuid_to_audits.rb
174
+ - lib/generators/audited/templates/install.rb
175
+ - lib/generators/audited/templates/rename_association_to_associated.rb
176
+ - lib/generators/audited/templates/rename_changes_to_audited_changes.rb
177
+ - lib/generators/audited/templates/rename_parent_to_association.rb
178
+ - lib/generators/audited/upgrade_generator.rb
179
+ - spec/audited/audit_spec.rb
180
+ - spec/audited/auditor_spec.rb
181
+ - spec/audited/sweeper_spec.rb
128
182
  - spec/audited_spec_helpers.rb
129
183
  - spec/rails_app/config/application.rb
130
184
  - spec/rails_app/config/database.yml
@@ -139,8 +193,6 @@ files:
139
193
  - spec/spec_helper.rb
140
194
  - spec/support/active_record/models.rb
141
195
  - spec/support/active_record/schema.rb
142
- - spec/support/mongo_mapper/connection.rb
143
- - spec/support/mongo_mapper/models.rb
144
196
  - test/db/version_1.rb
145
197
  - test/db/version_2.rb
146
198
  - test/db/version_3.rb
@@ -170,24 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
222
  version: '0'
171
223
  requirements: []
172
224
  rubyforge_project:
173
- rubygems_version: 2.5.1
225
+ rubygems_version: 2.6.6
174
226
  signing_key:
175
227
  specification_version: 4
176
228
  summary: Log all changes to your models
177
- test_files:
178
- - spec/audited_spec_helpers.rb
179
- - spec/rails_app/config/application.rb
180
- - spec/rails_app/config/database.yml
181
- - spec/rails_app/config/environment.rb
182
- - spec/rails_app/config/environments/development.rb
183
- - spec/rails_app/config/environments/production.rb
184
- - spec/rails_app/config/environments/test.rb
185
- - spec/rails_app/config/initializers/backtrace_silencers.rb
186
- - spec/rails_app/config/initializers/inflections.rb
187
- - spec/rails_app/config/initializers/secret_token.rb
188
- - spec/rails_app/config/routes.rb
189
- - spec/spec_helper.rb
190
- - spec/support/active_record/models.rb
191
- - spec/support/active_record/schema.rb
192
- - spec/support/mongo_mapper/connection.rb
193
- - spec/support/mongo_mapper/models.rb
229
+ test_files: []
@@ -1,5 +0,0 @@
1
- module Audited
2
- module ActiveRecord
3
- VERSION = "4.2.2"
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- module Audited
2
- module MongoMapper
3
- VERSION = "4.2.2"
4
- end
5
- end
@@ -1,4 +0,0 @@
1
- require 'mongo_mapper'
2
-
3
- MongoMapper.connection = Mongo::Connection.new
4
- MongoMapper.database = 'audited_test'
@@ -1,214 +0,0 @@
1
- require 'cgi'
2
- require 'mongo_mapper'
3
- require File.expand_path('../connection', __FILE__)
4
-
5
- module Models
6
- module MongoMapper
7
- class User
8
- include ::MongoMapper::Document
9
-
10
- key :name, String
11
- key :username, String
12
- key :password, String
13
- key :activated, Boolean
14
- key :suspended_at, Time
15
- key :logins, Integer, :default => 0
16
- timestamps!
17
-
18
- audited :allow_mass_assignment => true, :except => :password
19
-
20
- attr_protected :logins
21
-
22
- def name=(val)
23
- write_attribute(:name, CGI.escapeHTML(val))
24
- end
25
- end
26
-
27
- class CommentRequiredUser
28
- include ::MongoMapper::Document
29
-
30
- key :name, String
31
- key :username, String
32
- key :password, String
33
- key :activated, Boolean
34
- key :suspended_at, Time
35
- key :logins, Integer, :default => 0
36
- timestamps!
37
-
38
- audited :comment_required => true
39
- end
40
-
41
- class AccessibleAfterDeclarationUser
42
- include ::MongoMapper::Document
43
-
44
- key :name, String
45
- key :username, String
46
- key :password, String
47
- key :activated, Boolean
48
- key :suspended_at, Time
49
- key :logins, Integer, :default => 0
50
- timestamps!
51
-
52
- audited
53
- attr_accessible :name, :username, :password
54
- end
55
-
56
- class AccessibleBeforeDeclarationUser
57
- include ::MongoMapper::Document
58
-
59
- key :name, String
60
- key :username, String
61
- key :password, String
62
- key :activated, Boolean
63
- key :suspended_at, Time
64
- key :logins, Integer, :default => 0
65
- timestamps!
66
-
67
- attr_accessible :name, :username, :password # declare attr_accessible before calling aaa
68
- audited
69
- end
70
-
71
- class NoAttributeProtectionUser
72
- include ::MongoMapper::Document
73
-
74
- key :name, String
75
- key :username, String
76
- key :password, String
77
- key :activated, Boolean
78
- key :suspended_at, Time
79
- key :logins, Integer, :default => 0
80
- timestamps!
81
-
82
- audited :allow_mass_assignment => true
83
- end
84
-
85
- class UserWithAfterAudit
86
- include ::MongoMapper::Document
87
-
88
- key :name, String
89
- key :username, String
90
- key :password, String
91
- key :activated, Boolean
92
- key :suspended_at, Time
93
- key :logins, Integer, :default => 0
94
- timestamps!
95
-
96
- audited
97
- attr_accessor :bogus_attr, :around_attr
98
-
99
- def after_audit
100
- self.bogus_attr = "do something"
101
- end
102
-
103
- def around_audit
104
- self.around_attr = yield
105
- end
106
- end
107
-
108
- class Company
109
- include ::MongoMapper::Document
110
-
111
- key :name, String
112
- key :owner_id, ObjectId
113
-
114
- audited
115
- end
116
-
117
- class Owner
118
- include ::MongoMapper::Document
119
-
120
- key :name, String
121
- key :username, String
122
- key :password, String
123
- key :activated, Boolean
124
- key :suspended_at, Time
125
- key :logins, Integer, :default => 0
126
- timestamps!
127
-
128
- has_associated_audits
129
- end
130
-
131
- class OwnedCompany
132
- include ::MongoMapper::Document
133
-
134
- key :name, String
135
- key :owner_id, ObjectId
136
-
137
- belongs_to :owner, :class_name => "Owner"
138
- attr_accessible :name, :owner # declare attr_accessible before calling aaa
139
- audited :associated_with => :owner
140
- end
141
-
142
- class OnUpdateDestroy
143
- include ::MongoMapper::Document
144
-
145
- key :name, String
146
- key :owner_id, ObjectId
147
-
148
- audited :on => [:update, :destroy]
149
- end
150
-
151
- class OnCreateDestroy
152
- include ::MongoMapper::Document
153
-
154
- key :name, String
155
- key :owner_id, ObjectId
156
-
157
- audited :on => [:create, :destroy]
158
- end
159
-
160
- class OnCreateDestroyExceptName
161
- include ::MongoMapper::Document
162
-
163
- key :name, String
164
- key :owner_id, ObjectId
165
-
166
- audited :except => :name, :on => [:create, :destroy]
167
- end
168
-
169
- class OnCreateUpdate
170
- include ::MongoMapper::Document
171
-
172
- key :name, String
173
- key :owner_id, ObjectId
174
-
175
- audited :on => [:create, :update]
176
- end
177
-
178
- class RichObjectUser
179
- include ::MongoMapper::Document
180
-
181
- class Name
182
- attr_accessor :first_name, :last_name
183
-
184
- def self.from_mongo(value)
185
- case value
186
- when String then new(*value.split)
187
- when self then value
188
- end
189
- end
190
-
191
- def self.to_mongo(value)
192
- case value
193
- when String then value
194
- when self then value.to_s
195
- end
196
- end
197
-
198
- def initialize(first_name, last_name)
199
- self.first_name, self.last_name = first_name, last_name
200
- end
201
-
202
- def to_s
203
- [first_name, last_name].compact.join(' ')
204
- end
205
- end
206
-
207
- key :name, Name
208
-
209
- attr_accessible :name
210
-
211
- audited
212
- end
213
- end
214
- end