inspec 2.2.10 → 2.2.16

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b0c93790675bb30311ba841be7137bc39a9fd09228f85f99e232d482a247c1b
4
- data.tar.gz: 0a9b3548722c04c8b4c2cf6c221f9d5bac1dc809d9af688d16c3f3165af2a63e
3
+ metadata.gz: d449eb17f22c3c36f906fc5ed5be7541e281aef888d6c1bd4e2db3058282afc2
4
+ data.tar.gz: f9a50c6499b0682106a4d3b05ab8776032671b0f04e01323e20f0812d9ae8857
5
5
  SHA512:
6
- metadata.gz: 9113cbd43e650ae29568349e62a9683a91054e2e7896cd05edaa74e585e05e0b02993489c8804f59659515f2b96b0934da13fdc928d883d6a1677769f83a9dbd
7
- data.tar.gz: 51bc27288389c1c577f849e46fb49a1fef1321ad9e25581357f6161039e5404ebc9f0d7d0ab73854ad125562866bc3f25bb42be18f9d002c4f4f34a5564ec079
6
+ metadata.gz: 13e3b372d12dcbce84246f2bcdebaaf9fd2938093b1c75d1913e095031b1243b37cc869c82d71a826a47b8aa154b9ac9a1da96bf7f3d394a58943361ad8b6419
7
+ data.tar.gz: a3ddf1079f27dc2ba750893d6472d8c2aba7d77c48a7dde980968cd0634dd78b0c55df4f728ab704f916beb9a3bac3f289a8dec10fe5b0733663664859bbffb9
data/CHANGELOG.md CHANGED
@@ -1,43 +1,55 @@
1
1
  # Change Log
2
2
  <!-- usage documentation: http://expeditor-docs.es.chef.io/configuration/changelog/ -->
3
- <!-- latest_release 2.2.8 -->
4
- ## [v2.2.8](https://github.com/inspec/inspec/tree/v2.2.8) (2018-06-07)
3
+ <!-- latest_release 2.2.16 -->
4
+ ## [v2.2.16](https://github.com/inspec/inspec/tree/v2.2.16) (2018-06-15)
5
5
 
6
- #### New Resources
7
- - Add aws_elb and aws_elbs resources [#3079](https://github.com/inspec/inspec/pull/3079) ([clintoncwolfe](https://github.com/clintoncwolfe))
6
+ #### Merged Pull Requests
7
+ - deprecate azure_generic_resource [#3132](https://github.com/inspec/inspec/pull/3132) ([chris-rock](https://github.com/chris-rock))
8
8
  <!-- latest_release -->
9
9
 
10
- <!-- release_rollup since=2.1.84 -->
11
- ### Changes since 2.1.84 release
12
-
13
- #### New Resources
14
- - Add aws_elb and aws_elbs resources [#3079](https://github.com/inspec/inspec/pull/3079) ([clintoncwolfe](https://github.com/clintoncwolfe)) <!-- 2.2.8 -->
15
- - Adds a aws_flow_log resource with unit and integration testing. [#2906](https://github.com/inspec/inspec/pull/2906) ([miah](https://github.com/miah)) <!-- 2.2.7 -->
16
-
17
- #### Bug Fixes
18
- - Update documentation for shadow resource. [#3042](https://github.com/inspec/inspec/pull/3042) ([miah](https://github.com/miah)) <!-- 2.2.6 -->
19
- - Two fixes to FilterTable `where` criteria handling [#3045](https://github.com/inspec/inspec/pull/3045) ([clintoncwolfe](https://github.com/clintoncwolfe)) <!-- 2.2.0 -->
10
+ <!-- release_rollup since=2.2.10 -->
11
+ ### Changes since 2.2.10 release
20
12
 
21
13
  #### Enhancements
22
- - Allow custom resources to access all other resources [#3108](https://github.com/inspec/inspec/pull/3108) ([jquick](https://github.com/jquick)) <!-- 2.2.3 -->
23
- - Add common methods to FilterTable [#3104](https://github.com/inspec/inspec/pull/3104) ([clintoncwolfe](https://github.com/clintoncwolfe)) <!-- 2.2.2 -->
24
- - Detect windows packages with trailing/leading spaces [#3106](https://github.com/inspec/inspec/pull/3106) ([jquick](https://github.com/jquick)) <!-- 2.1.86 -->
14
+ - Fix unit tests for ruby 2.5 [#3125](https://github.com/inspec/inspec/pull/3125) ([jquick](https://github.com/jquick)) <!-- 2.2.12 -->
25
15
 
26
16
  #### Merged Pull Requests
27
- - Clean up issues in documentation [#3058](https://github.com/inspec/inspec/pull/3058) ([miah](https://github.com/miah)) <!-- 2.2.5 -->
28
- - Update Junit.rb to add failures attribute [#3086](https://github.com/inspec/inspec/pull/3086) ([scboucher](https://github.com/scboucher)) <!-- 2.2.4 -->
29
- - Add lazy-loading to FilterTable [#3093](https://github.com/inspec/inspec/pull/3093) ([clintoncwolfe](https://github.com/clintoncwolfe)) <!-- 2.2.1 -->
30
- - Refactor: Perform internal rename and add comments to FilterTable [#3047](https://github.com/inspec/inspec/pull/3047) ([clintoncwolfe](https://github.com/clintoncwolfe)) <!-- 2.1.88 -->
31
- - Spellcheck FilterTable Developer Documentation [#3111](https://github.com/inspec/inspec/pull/3111) ([jerryaldrichiii](https://github.com/jerryaldrichiii)) <!-- 2.1.87 -->
32
- - support local npm package searches [#3105](https://github.com/inspec/inspec/pull/3105) ([arlimus](https://github.com/arlimus)) <!-- 2.1.85 -->
17
+ - deprecate azure_generic_resource [#3132](https://github.com/inspec/inspec/pull/3132) ([chris-rock](https://github.com/chris-rock)) <!-- 2.2.16 -->
18
+ - Bump train version for inspec [#3147](https://github.com/inspec/inspec/pull/3147) ([jquick](https://github.com/jquick)) <!-- 2.2.15 -->
19
+ - Add insecure option to the automate report json [#3124](https://github.com/inspec/inspec/pull/3124) ([jquick](https://github.com/jquick)) <!-- 2.2.14 -->
20
+ - Add list properties back to shadow [#3140](https://github.com/inspec/inspec/pull/3140) ([clintoncwolfe](https://github.com/clintoncwolfe)) <!-- 2.2.13 -->
21
+ - Translate `auditd -s` RHEL output to match CentOS [#3114](https://github.com/inspec/inspec/pull/3114) ([jerryaldrichiii](https://github.com/jerryaldrichiii)) <!-- 2.2.11 -->
33
22
  <!-- release_rollup -->
34
23
 
35
24
  <!-- latest_stable_release -->
25
+ ## [v2.2.10](https://github.com/inspec/inspec/tree/v2.2.10) (2018-06-08)
26
+
27
+ #### New Resources
28
+ - Adds a aws_flow_log resource with unit and integration testing. [#2906](https://github.com/inspec/inspec/pull/2906) ([miah](https://github.com/miah))
29
+ - Add aws_elb and aws_elbs resources [#3079](https://github.com/inspec/inspec/pull/3079) ([clintoncwolfe](https://github.com/clintoncwolfe))
30
+
31
+ #### Enhancements
32
+ - Detect windows packages with trailing/leading spaces [#3106](https://github.com/inspec/inspec/pull/3106) ([jquick](https://github.com/jquick))
33
+ - Add common methods to FilterTable [#3104](https://github.com/inspec/inspec/pull/3104) ([clintoncwolfe](https://github.com/clintoncwolfe))
34
+ - Allow custom resources to access all other resources [#3108](https://github.com/inspec/inspec/pull/3108) ([jquick](https://github.com/jquick))
35
+
36
+ #### Bug Fixes
37
+ - Two fixes to FilterTable `where` criteria handling [#3045](https://github.com/inspec/inspec/pull/3045) ([clintoncwolfe](https://github.com/clintoncwolfe))
38
+ - Update documentation for shadow resource. [#3042](https://github.com/inspec/inspec/pull/3042) ([miah](https://github.com/miah))
39
+
40
+ #### Merged Pull Requests
41
+ - support local npm package searches [#3105](https://github.com/inspec/inspec/pull/3105) ([arlimus](https://github.com/arlimus))
42
+ - Spellcheck FilterTable Developer Documentation [#3111](https://github.com/inspec/inspec/pull/3111) ([jerryaldrichiii](https://github.com/jerryaldrichiii))
43
+ - Refactor: Perform internal rename and add comments to FilterTable [#3047](https://github.com/inspec/inspec/pull/3047) ([clintoncwolfe](https://github.com/clintoncwolfe))
44
+ - Add lazy-loading to FilterTable [#3093](https://github.com/inspec/inspec/pull/3093) ([clintoncwolfe](https://github.com/clintoncwolfe))
45
+ - Update Junit.rb to add failures attribute [#3086](https://github.com/inspec/inspec/pull/3086) ([scboucher](https://github.com/scboucher))
46
+ - Clean up issues in documentation [#3058](https://github.com/inspec/inspec/pull/3058) ([miah](https://github.com/miah))
47
+ <!-- latest_stable_release -->
48
+
36
49
  ## [v2.1.84](https://github.com/inspec/inspec/tree/v2.1.84) (2018-05-31)
37
50
 
38
51
  #### Merged Pull Requests
39
52
  - Generate new org builds [#3087](https://github.com/inspec/inspec/pull/3087) ([jquick](https://github.com/jquick))
40
- <!-- latest_stable_release -->
41
53
 
42
54
  ## [v2.1.83](https://github.com/chef/inspec/tree/v2.1.83) (2018-05-18)
43
55
 
data/docs/reporters.md CHANGED
@@ -115,3 +115,47 @@ This reporter includes all information from the rspec runner. Unlike the json re
115
115
  ### html
116
116
 
117
117
  This renders html code to view your tests in a browser. It includes all the test and summary information.
118
+
119
+
120
+ ## Automate Reporter
121
+
122
+ The automate reporter type is a special reporter used with the Automate 2 suite. To use this reporter you must pass in the correct configuration via a json config `--json-config`.
123
+
124
+ Example config:
125
+ ```json
126
+ "reporter": {
127
+ "automate" : {
128
+ "stdout" : false,
129
+ "url" : "https://YOUR_A2_URL/data-collector/v0/",
130
+ "token" : "YOUR_A2_ADMIN_TOKEN",
131
+ "insecure" : true,
132
+ "node_name" : "inspec_test_node",
133
+ "environment" : "prod"
134
+ }
135
+ }
136
+ ```
137
+
138
+ ### Mandatory fields:
139
+ #### stdout
140
+ This will either suppress or show the automate report in the CLI screen on completion
141
+
142
+ #### url
143
+ This is your Automate 2 url. Append `data-collector/v0/` at the end.
144
+
145
+ #### token
146
+ This is your Automate 2 token. You can generate this token by navigating to the admin tab of A2 and then api keys.
147
+
148
+ ### Optional fields
149
+ #### insecure
150
+ This will disable or enable the ssl check when accessing the Automate 2 instance.
151
+
152
+ PLEASE NOTE: These fields are ONLY needed if you do not have chef-client attached to a chef server running on your node. The fields below will be automaticlly pulled from the chef server.
153
+
154
+ #### node_name
155
+ This will be the node name which shows up in Automate 2.
156
+
157
+ #### node_uuid
158
+ This overrides the node uuid sent up to Automate 2. On non-chef nodes we will try to generate a static node uuid for you from your hardware. This will almost never be needed unless your working with a unique virtual setup.
159
+
160
+ #### environment
161
+ This will set the enviroment metadata for Automate 2.
@@ -4,6 +4,8 @@ title: About the azure_generic_resource Resource
4
4
 
5
5
  # azure\_generic\_resource
6
6
 
7
+ <p class="warning">This resource is deprecated and should not be used. It will be removed in InSpec 3.0.</p>
8
+
7
9
  Use the `azure_generic_resource` InSpec audit resource to test any valid Azure Resource. This is very useful if you need to test something that we do not yet have a specific Inspec resource for.
8
10
 
9
11
  ## Syntax
@@ -135,7 +135,7 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
135
135
 
136
136
  `open_timeout` may be specified for a timeout for opening connections (default to 60).
137
137
 
138
- describe('http://localhost:8080/ping',
138
+ describe http('http://localhost:8080/ping',
139
139
  open_timeout: '90') do
140
140
  ...
141
141
  end
@@ -144,7 +144,7 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
144
144
 
145
145
  `read_timeout` may be specified for a timeout for reading connections (default to 60).
146
146
 
147
- describe('http://localhost:8080/ping',
147
+ describe http('http://localhost:8080/ping',
148
148
  read_timeout: '90') do
149
149
  ...
150
150
  end
@@ -153,7 +153,7 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
153
153
 
154
154
  `ssl_verify` may be specified to enable or disable verification of SSL certificates (default to `true`).
155
155
 
156
- describe('http://localhost:8080/ping',
156
+ describe http('http://localhost:8080/ping',
157
157
  ssl_verify: true) do
158
158
  ...
159
159
  end
@@ -27,7 +27,7 @@ These entries are defined as a colon-delimited row in the file, one row per user
27
27
  A `shadow` resource block declares user properties to be tested:
28
28
 
29
29
  describe shadow do
30
- its('user') { should_not include 'forbidden_user' }
30
+ its('users') { should_not include 'forbidden_user' }
31
31
  end
32
32
 
33
33
  Properties can be used as a single query:
@@ -39,7 +39,7 @@ Properties can be used as a single query:
39
39
  Use the `.where` method to find properties that match a value:
40
40
 
41
41
  describe shadow.where { min_days == '0' } do
42
- its ('user') { should include 'nfs' }
42
+ its ('users') { should include 'nfs' }
43
43
  end
44
44
 
45
45
  describe shadow.where { password =~ /[x|!|*]/ } do
@@ -48,14 +48,14 @@ Use the `.where` method to find properties that match a value:
48
48
 
49
49
  The following properties are available:
50
50
 
51
- * `user`
52
- * `password`
53
- * `last_change`
51
+ * `users`
52
+ * `passwords`
53
+ * `last_changes`
54
54
  * `min_days`
55
55
  * `max_days`
56
56
  * `warn_days`
57
57
  * `inactive_days`
58
- * `expiry_date`
58
+ * `expiry_dates`
59
59
  * `reserved`
60
60
 
61
61
  <br>
@@ -67,13 +67,13 @@ The following examples show how to use this InSpec audit resource.
67
67
  ### Test for a forbidden user
68
68
 
69
69
  describe shadow do
70
- its('user') { should_not include 'forbidden_user' }
70
+ its('users') { should_not include 'forbidden_user' }
71
71
  end
72
72
 
73
73
  ### Test that a user appears one time
74
74
 
75
- describe shadow.user('bin') do
76
- its('password') { should cmp 'x' }
75
+ describe shadow.users('bin') do
76
+ its('passwords') { should cmp 'x' }
77
77
  its('count') { should eq 1 }
78
78
  end
79
79
 
@@ -81,55 +81,55 @@ The following examples show how to use this InSpec audit resource.
81
81
 
82
82
  ## Properties
83
83
 
84
- ### user
84
+ ### users
85
85
 
86
- The `user` property tests if the username exists `/etc/shadow`:
86
+ The `users` property tests if the username exists `/etc/shadow`:
87
87
 
88
- its('user') { should eq 'root' }
88
+ its('users') { should include 'root' }
89
89
 
90
- ### password
90
+ ### passwords
91
91
 
92
- The `password` property returns the encrypted password string from the shadow file. The returned string may not be an encrypted password, but rather a `*` or similar which indicates that direct logins are not allowed.
92
+ The `passwords` property returns the encrypted password string from the shadow file. The returned string may not be an encrypted password, but rather a `*` or similar which indicates that direct logins are not allowed.
93
93
 
94
94
  For example:
95
95
 
96
- its('password') { should cmp '*' }
96
+ its('passwords') { should cmp '*' }
97
97
 
98
- ### last_change
98
+ ### last\_changes
99
99
 
100
- The `last_change` property tests the last time a password was changed:
100
+ The `last_changes` property tests the last time a password was changed:
101
101
 
102
- its('last_change') { should be_empty }
102
+ its('last_changes') { should be_empty }
103
103
 
104
- ### min_days
104
+ ### min\_days
105
105
 
106
106
  The `min_days` property tests the minimum number of days a password must exist, before it may be changed:
107
107
 
108
108
  its('min_days') { should eq 0 }
109
109
 
110
- ### max_days
110
+ ### max\_days
111
111
 
112
112
  The `max_days` property tests the maximum number of days after which a password must be changed:
113
113
 
114
114
  its('max_days') { should eq 90 }
115
115
 
116
- ### warn_days
116
+ ### warn\_days
117
117
 
118
118
  The `warn_days` property tests the number of days a user is warned about an expiring password:
119
119
 
120
120
  its('warn_days') { should eq 7 }
121
121
 
122
- ### inactive_days
122
+ ### inactive\_days
123
123
 
124
124
  The `inactive_days` property tests the number of days a user must be inactive before the user account is disabled:
125
125
 
126
126
  its('inactive_days') { should be_empty }
127
127
 
128
- ### expiry_date
128
+ ### expiry\_dates
129
129
 
130
- The `expiry_date` property tests the number of days a user account has been disabled:
130
+ The `expiry_dates` property tests the number of days a user account has been disabled:
131
131
 
132
- its('expiry_date') { should be_empty }
132
+ its('expiry_dates') { should be_empty }
133
133
 
134
134
  ### count
135
135
 
@@ -33,38 +33,30 @@ The following examples show how to use this InSpec resource.
33
33
 
34
34
  ### Tests that a task is enabled
35
35
 
36
- ```ruby
37
36
  describe windows_task('\Microsoft\Windows\Time Synchronization\SynchronizeTime') do
38
37
  it { should be_enabled }
39
38
  end
40
- ```
41
39
 
42
40
  ### Tests that a task is disabled
43
41
 
44
- ```ruby
45
42
  describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
46
43
  it { should be_disabled }
47
44
  end
48
- ```
49
45
 
50
46
  ### Tests the configuration parameters of a task
51
47
 
52
- ```ruby
53
48
  describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
54
49
  its('logon_mode') { should eq 'Interactive/Background' }
55
50
  its('last_result') { should eq '1' }
56
51
  its('task_to_run') { should cmp '%Windir%\system32\appidpolicyconverter.exe' }
57
52
  its('run_as_user') { should eq 'LOCAL SERVICE' }
58
53
  end
59
- ```
60
54
 
61
55
  ### Tests that a task is defined
62
56
 
63
- ```ruby
64
57
  describe windows_task('\Microsoft\Windows\Defrag\ScheduledDefrag') do
65
58
  it { should exist }
66
59
  end
67
- ```
68
60
 
69
61
  ## Gathering Tasknames
70
62
 
@@ -76,7 +68,6 @@ rather than use the `list` output you can use `CSV` if it is easier.
76
68
 
77
69
  Please make sure you use the full TaskName (include the prefix `\`) within your control
78
70
 
79
- ```ruby
80
71
  C:\>schtasks /query /FO list
81
72
  ...
82
73
  Folder: \Microsoft\Windows\Diagnosis
@@ -86,7 +77,6 @@ Please make sure you use the full TaskName (include the prefix `\`) within your
86
77
  Status: Ready
87
78
  Logon Mode: Interactive/Background
88
79
  ...
89
- ```
90
80
 
91
81
  <br>
92
82
 
data/inspec.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.required_ruby_version = '>= 2.3'
28
28
 
29
- spec.add_dependency 'train', '~> 1.4.11'
29
+ spec.add_dependency 'train', '~> 1.4', '>= 1.4.15'
30
30
  spec.add_dependency 'thor', '~> 0.20'
31
31
  spec.add_dependency 'json', '>= 1.8', '< 3.0'
32
32
  spec.add_dependency 'method_source', '~> 0.8'
@@ -37,7 +37,7 @@ Commands:
37
37
  inspec compliance version # displays the version of the Chef Compliance server
38
38
  ```
39
39
 
40
- ### Login with Chef Automate2
40
+ ### Login with Chef Automate 2
41
41
 
42
42
  You will need an API token for authentication. You can retrieve one via the admin section of your A2 web gui.
43
43
 
@@ -45,6 +45,20 @@ You will need an API token for authentication. You can retrieve one via the admi
45
45
  $ inspec compliance login https://automate2.compliance.test --insecure --user 'admin' --token 'zuop..._KzE'
46
46
  ```
47
47
 
48
+ #### Login with Chef Automate 2 via json-config
49
+
50
+ With automate 2 you can automatically login by passing a json config via `--json-config`
51
+
52
+ Example:
53
+ ```json
54
+ "compliance": {
55
+ "server" : "https://YOUR_A2_URL",
56
+ "token" : "YOUR_A2_ADMIN_TOKEN",
57
+ "user" : "YOUR_A2_USER",
58
+ "insecure" : true
59
+ }
60
+ ```
61
+
48
62
  ### Login with Chef Automate
49
63
 
50
64
  You will need an access token for authentication. You can retrieve one via [UI](https://docs.chef.io/api_delivery.html) or [CLI](https://docs.chef.io/ctl_delivery.html#delivery-token).
@@ -8,6 +8,9 @@ module Inspec::Reporters
8
8
  def initialize(config)
9
9
  super(config)
10
10
 
11
+ # allow the insecure flag
12
+ @config['verify_ssl'] = !@config['insecure'] if @config.key?('insecure')
13
+
11
14
  # default to not verifying ssl for sending reports
12
15
  @config['verify_ssl'] = @config['verify_ssl'] || false
13
16
  end
@@ -4,5 +4,5 @@
4
4
  # author: Christoph Hartmann
5
5
 
6
6
  module Inspec
7
- VERSION = '2.2.10'
7
+ VERSION = '2.2.16'
8
8
  end
@@ -58,6 +58,14 @@ module Inspec::Resources
58
58
 
59
59
  def status(name = nil)
60
60
  @status_content ||= inspec.command('/sbin/auditctl -s').stdout.chomp
61
+
62
+ # See: https://github.com/inspec/inspec/issues/3113
63
+ if @status_content =~ /^AUDIT_STATUS/
64
+ @status_content = @status_content.gsub('AUDIT_STATUS: ', '')
65
+ .tr(' ', "\n")
66
+ .tr('=', ' ')
67
+ end
68
+
61
69
  @status_params ||= Hash[@status_content.scan(/^([^ ]+) (.*)$/)]
62
70
 
63
71
  return @status_params[name] if name
@@ -16,6 +16,8 @@ module Inspec::Resources
16
16
  attr_accessor :filter, :total, :counts, :name, :type, :location, :probes
17
17
 
18
18
  def initialize(opts = {})
19
+ warn "[DEPRECATED] use a specific azure resources instead of 'azure_generic_resource'. See https://github.com/inspec/inspec/issues/3131"
20
+
19
21
  # Call the parent class constructor
20
22
  super(opts)
21
23
 
@@ -44,29 +44,29 @@ module Inspec::Resources
44
44
 
45
45
  filtertable = FilterTable.create
46
46
  filtertable
47
- .add_accessor(:where)
48
- .add_accessor(:entries)
49
- .add(:user, field: 'user')
50
- .add(:password, field: 'password')
51
- .add(:last_change, field: 'last_change')
52
- .add(:min_days, field: 'min_days')
53
- .add(:max_days, field: 'max_days')
54
- .add(:warn_days, field: 'warn_days')
55
- .add(:inactive_days, field: 'inactive_days')
56
- .add(:expiry_date, field: 'expiry_date')
57
- .add(:reserved, field: 'reserved')
58
-
59
- filtertable.add(:content) { |t, _|
47
+ .register_column(:users, field: 'user')
48
+ .register_column(:passwords, field: 'password')
49
+ .register_column(:last_changes, field: 'last_change')
50
+ .register_column(:min_days, field: 'min_days')
51
+ .register_column(:max_days, field: 'max_days')
52
+ .register_column(:warn_days, field: 'warn_days')
53
+ .register_column(:inactive_days, field: 'inactive_days')
54
+ .register_column(:expiry_dates, field: 'expiry_date')
55
+ .register_column(:reserved, field: 'reserved')
56
+ # These are deprecated, but we need to "alias" them
57
+ filtertable
58
+ .register_custom_property(:user) { |table, value| table.resource.user(value) }
59
+ .register_custom_property(:password) { |table, value| table.resource.password(value) }
60
+ .register_custom_property(:last_change) { |table, value| table.resource.last_change(value) }
61
+ .register_custom_property(:expiry_date) { |table, value| table.resource.expiry_date(value) }
62
+
63
+ filtertable.register_custom_property(:content) { |t, _|
60
64
  t.entries.map do |e|
61
65
  [e.user, e.password, e.last_change, e.min_days, e.max_days, e.warn_days, e.inactive_days, e.expiry_date].compact.join(':')
62
66
  end.join("\n")
63
67
  }
64
68
 
65
- filtertable.add(:count) { |i, _|
66
- i.entries.length
67
- }
68
-
69
- filtertable.connect(self, :set_params)
69
+ filtertable.install_filter_methods_on_resource(self, :set_params)
70
70
 
71
71
  def filter(query = {})
72
72
  return self if query.nil? || query.empty?
@@ -88,28 +88,30 @@ module Inspec::Resources
88
88
  Shadow.new(@path, content: content, filters: @filters + filters)
89
89
  end
90
90
 
91
- def users(query = nil)
92
- warn '[DEPRECATION] The shadow `users` property is deprecated and will be removed' \
93
- ' in InSpec 3.0. Please use `user` instead.'
94
- query.nil? ? user : user(query)
91
+ # Next 4 are deprecated methods. We define them here so we can emit a deprecation message.
92
+ # They are also defined on the Table, above.
93
+ def user(query = nil)
94
+ warn '[DEPRECATION] The shadow `user` property is deprecated and will be removed' \
95
+ ' in InSpec 3.0. Please use `users` instead.'
96
+ query.nil? ? where.users : where('user' => query)
95
97
  end
96
98
 
97
- def passwords(query = nil)
98
- warn '[DEPRECATION] The shadow `passwords` property is deprecated and will be removed' \
99
- ' in InSpec 3.0. Please use `password` instead.'
100
- query.nil? ? password : password(query)
99
+ def password(query = nil)
100
+ warn '[DEPRECATION] The shadow `password` property is deprecated and will be removed' \
101
+ ' in InSpec 3.0. Please use `passwords` instead.'
102
+ query.nil? ? where.passwords : where('password' => query)
101
103
  end
102
104
 
103
- def last_changes(query = nil)
104
- warn '[DEPRECATION] The shadow `last_changes` property is deprecated and will be removed' \
105
- ' in InSpec 3.0. Please use `last_change` instead.'
106
- query.nil? ? last_change : last_change(query)
105
+ def last_change(query = nil)
106
+ warn '[DEPRECATION] The shadow `last_change` property is deprecated and will be removed' \
107
+ ' in InSpec 3.0. Please use `last_changes` instead.'
108
+ query.nil? ? where.last_changes : where('last_change' => query)
107
109
  end
108
110
 
109
- def expiry_dates(query = nil)
110
- warn '[DEPRECATION] The shadow `expiry_dates` property is deprecated and will be removed' \
111
- ' in InSpec 3.0. Please use `expiry_date` instead.'
112
- query.nil? ? expiry_date : expiry_date(query)
111
+ def expiry_date(query = nil)
112
+ warn '[DEPRECATION] The shadow `expiry_date` property is deprecated and will be removed' \
113
+ ' in InSpec 3.0. Please use `expiry_dates` instead.'
114
+ query.nil? ? where.expiry_dates : where('expiry_date' => query)
113
115
  end
114
116
 
115
117
  def lines
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.10
4
+ version: 2.2.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-08 00:00:00.000000000 Z
11
+ date: 2018-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: train
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.4.11
19
+ version: '1.4'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.4.15
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 1.4.11
29
+ version: '1.4'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.4.15
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: thor
29
35
  requirement: !ruby/object:Gem::Requirement