inspec-core 5.17.4 → 5.18.14

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.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/etc/deprecations.json +4 -0
  4. data/inspec-core.gemspec +1 -1
  5. data/lib/inspec/base_cli.rb +5 -0
  6. data/lib/inspec/cli.rb +62 -9
  7. data/lib/inspec/dependencies/dependency_set.rb +6 -2
  8. data/lib/inspec/dsl.rb +18 -5
  9. data/lib/inspec/errors.rb +2 -0
  10. data/lib/inspec/exceptions.rb +2 -0
  11. data/lib/inspec/fetcher/url.rb +1 -1
  12. data/lib/inspec/file_provider.rb +36 -0
  13. data/lib/inspec/iaf_file.rb +127 -0
  14. data/lib/inspec/profile.rb +17 -7
  15. data/lib/inspec/resources/aide_conf.rb +4 -0
  16. data/lib/inspec/resources/apache.rb +4 -0
  17. data/lib/inspec/resources/apache_conf.rb +4 -0
  18. data/lib/inspec/resources/apt.rb +6 -1
  19. data/lib/inspec/resources/audit_policy.rb +5 -0
  20. data/lib/inspec/resources/auditd_conf.rb +4 -0
  21. data/lib/inspec/resources/bash.rb +4 -0
  22. data/lib/inspec/resources/bond.rb +4 -0
  23. data/lib/inspec/resources/bridge.rb +4 -0
  24. data/lib/inspec/resources/cassandradb_conf.rb +5 -0
  25. data/lib/inspec/resources/cassandradb_session.rb +8 -3
  26. data/lib/inspec/resources/chocolatey_package.rb +4 -0
  27. data/lib/inspec/resources/chrony_conf.rb +4 -0
  28. data/lib/inspec/resources/command.rb +5 -0
  29. data/lib/inspec/resources/cpan.rb +4 -0
  30. data/lib/inspec/resources/cran.rb +4 -0
  31. data/lib/inspec/resources/cron.rb +5 -0
  32. data/lib/inspec/resources/csv.rb +6 -1
  33. data/lib/inspec/resources/dh_params.rb +4 -0
  34. data/lib/inspec/resources/docker_container.rb +4 -0
  35. data/lib/inspec/resources/docker_image.rb +4 -0
  36. data/lib/inspec/resources/docker_plugin.rb +4 -0
  37. data/lib/inspec/resources/docker_service.rb +4 -0
  38. data/lib/inspec/resources/etc_group.rb +4 -0
  39. data/lib/inspec/resources/etc_hosts_allow_deny.rb +5 -0
  40. data/lib/inspec/resources/file.rb +6 -1
  41. data/lib/inspec/resources/filesystem.rb +4 -0
  42. data/lib/inspec/resources/gem.rb +4 -0
  43. data/lib/inspec/resources/groups.rb +4 -0
  44. data/lib/inspec/resources/grub_conf.rb +4 -0
  45. data/lib/inspec/resources/host.rb +4 -0
  46. data/lib/inspec/resources/http.rb +4 -0
  47. data/lib/inspec/resources/ibmdb2_conf.rb +8 -0
  48. data/lib/inspec/resources/ibmdb2_session.rb +12 -3
  49. data/lib/inspec/resources/iis_app.rb +4 -0
  50. data/lib/inspec/resources/iis_app_pool.rb +4 -0
  51. data/lib/inspec/resources/iis_site.rb +4 -0
  52. data/lib/inspec/resources/inetd_conf.rb +4 -0
  53. data/lib/inspec/resources/interface.rb +4 -0
  54. data/lib/inspec/resources/ip6tables.rb +4 -0
  55. data/lib/inspec/resources/ipfilter.rb +4 -0
  56. data/lib/inspec/resources/ipnat.rb +4 -0
  57. data/lib/inspec/resources/iptables.rb +4 -0
  58. data/lib/inspec/resources/json.rb +4 -0
  59. data/lib/inspec/resources/kernel_module.rb +4 -0
  60. data/lib/inspec/resources/kernel_parameter.rb +4 -0
  61. data/lib/inspec/resources/key_rsa.rb +4 -0
  62. data/lib/inspec/resources/ksh.rb +4 -0
  63. data/lib/inspec/resources/limits_conf.rb +4 -0
  64. data/lib/inspec/resources/login_defs.rb +4 -0
  65. data/lib/inspec/resources/mongodb.rb +4 -0
  66. data/lib/inspec/resources/mongodb_conf.rb +5 -0
  67. data/lib/inspec/resources/mongodb_session.rb +6 -1
  68. data/lib/inspec/resources/mount.rb +4 -0
  69. data/lib/inspec/resources/mssql_session.rb +4 -0
  70. data/lib/inspec/resources/mssql_sys_conf.rb +7 -0
  71. data/lib/inspec/resources/mysql_conf.rb +4 -0
  72. data/lib/inspec/resources/mysql_session.rb +8 -1
  73. data/lib/inspec/resources/nginx.rb +6 -1
  74. data/lib/inspec/resources/nginx_conf.rb +4 -0
  75. data/lib/inspec/resources/noop.rb +4 -0
  76. data/lib/inspec/resources/npm.rb +4 -0
  77. data/lib/inspec/resources/ntp_conf.rb +4 -0
  78. data/lib/inspec/resources/oneget.rb +4 -0
  79. data/lib/inspec/resources/opa_api.rb +10 -0
  80. data/lib/inspec/resources/opa_cli.rb +14 -0
  81. data/lib/inspec/resources/oracledb_conf.rb +5 -0
  82. data/lib/inspec/resources/oracledb_listener_conf.rb +4 -0
  83. data/lib/inspec/resources/oracledb_session.rb +10 -0
  84. data/lib/inspec/resources/os.rb +4 -0
  85. data/lib/inspec/resources/os_env.rb +4 -0
  86. data/lib/inspec/resources/package.rb +4 -0
  87. data/lib/inspec/resources/parse_config.rb +10 -1
  88. data/lib/inspec/resources/pip.rb +4 -0
  89. data/lib/inspec/resources/platform.rb +4 -0
  90. data/lib/inspec/resources/postfix_conf.rb +4 -0
  91. data/lib/inspec/resources/postgres_conf.rb +4 -0
  92. data/lib/inspec/resources/postgres_session.rb +8 -4
  93. data/lib/inspec/resources/powershell.rb +4 -0
  94. data/lib/inspec/resources/processes.rb +6 -4
  95. data/lib/inspec/resources/rabbitmq_config.rb +4 -0
  96. data/lib/inspec/resources/registry_key.rb +4 -0
  97. data/lib/inspec/resources/security_identifier.rb +4 -0
  98. data/lib/inspec/resources/security_policy.rb +4 -0
  99. data/lib/inspec/resources/service.rb +4 -0
  100. data/lib/inspec/resources/ssh_config.rb +4 -0
  101. data/lib/inspec/resources/sybase_conf.rb +4 -0
  102. data/lib/inspec/resources/sybase_session.rb +4 -0
  103. data/lib/inspec/resources/sys_info.rb +4 -0
  104. data/lib/inspec/resources/timezone.rb +4 -0
  105. data/lib/inspec/resources/users.rb +4 -0
  106. data/lib/inspec/resources/vbscript.rb +5 -0
  107. data/lib/inspec/resources/virtualization.rb +4 -0
  108. data/lib/inspec/resources/windows_feature.rb +5 -1
  109. data/lib/inspec/resources/windows_firewall.rb +4 -0
  110. data/lib/inspec/resources/windows_firewall_rule.rb +4 -0
  111. data/lib/inspec/resources/windows_hotfix.rb +4 -0
  112. data/lib/inspec/resources/windows_task.rb +4 -0
  113. data/lib/inspec/resources/wmi.rb +4 -0
  114. data/lib/inspec/resources/x509_certificate.rb +59 -0
  115. data/lib/inspec/resources/yum.rb +4 -0
  116. data/lib/inspec/resources/zfs_dataset.rb +4 -0
  117. data/lib/inspec/resources/zfs_pool.rb +4 -0
  118. data/lib/inspec/rule.rb +1 -1
  119. data/lib/inspec/secrets/yaml.rb +7 -1
  120. data/lib/inspec/ui.rb +1 -0
  121. data/lib/inspec/utils/yaml_profile_summary.rb +34 -0
  122. data/lib/inspec/version.rb +1 -1
  123. data/lib/plugins/inspec-reporter-html2/templates/body.html.erb +4 -4
  124. data/lib/plugins/inspec-reporter-html2/templates/control.html.erb +1 -1
  125. data/lib/plugins/inspec-reporter-html2/templates/profile.html.erb +1 -1
  126. data/lib/plugins/{inspec-artifact/inspec-artifact.gemspec → inspec-sign/inspec-sign.gemspec} +2 -2
  127. data/lib/plugins/inspec-sign/lib/inspec-sign/base.rb +161 -0
  128. data/lib/plugins/{inspec-artifact/lib/inspec-artifact → inspec-sign/lib/inspec-sign}/cli.rb +14 -23
  129. data/lib/plugins/inspec-sign/lib/inspec-sign.rb +12 -0
  130. data/lib/source_readers/inspec.rb +8 -2
  131. metadata +10 -8
  132. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +0 -187
  133. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +0 -12
@@ -50,6 +50,10 @@ module Inspec::Resources
50
50
 
51
51
  def_delegators :http, :servers, :locations
52
52
 
53
+ def resource_id
54
+ @conf_path || "nginx_conf"
55
+ end
56
+
53
57
  def to_s
54
58
  "nginx_conf #{@conf_path}"
55
59
  end
@@ -2,6 +2,10 @@ module Inspec::Resources
2
2
  class Noop < Inspec.resource(1)
3
3
  name "noop"
4
4
 
5
+ def resource_id
6
+ "No-op"
7
+ end
8
+
5
9
  def to_s
6
10
  "No-op"
7
11
  end
@@ -61,6 +61,10 @@ module Inspec::Resources
61
61
  info[:version]
62
62
  end
63
63
 
64
+ def resource_id
65
+ @package_name || "npm"
66
+ end
67
+
64
68
  def to_s
65
69
  "Npm Package #{@package_name}"
66
70
  end
@@ -30,6 +30,10 @@ module Inspec::Resources
30
30
  param
31
31
  end
32
32
 
33
+ def resource_id
34
+ @conf_path || "ntp_conf"
35
+ end
36
+
33
37
  def to_s
34
38
  "ntp.conf"
35
39
  end
@@ -64,6 +64,10 @@ module Inspec::Resources
64
64
  info[:version]
65
65
  end
66
66
 
67
+ def resource_id
68
+ @package_name || "oneget"
69
+ end
70
+
67
71
  def to_s
68
72
  "OneGet Package #{@package_name}"
69
73
  end
@@ -6,6 +6,12 @@ module Inspec::Resources
6
6
  supports platform: "unix"
7
7
  supports platform: "windows"
8
8
 
9
+ example <<~EXAMPLE
10
+ describe opa_api(url: "localhost:8181/v1/data/example/violation", data: "input.json") do
11
+ its(["result"]) { should eq 'value' }
12
+ end
13
+ EXAMPLE
14
+
9
15
  def initialize(opts = {})
10
16
  @url = opts[:url] || nil
11
17
  @data = opts[:data] || nil
@@ -18,6 +24,10 @@ module Inspec::Resources
18
24
  @content["result"]
19
25
  end
20
26
 
27
+ def resource_id
28
+ @url || "opa_api"
29
+ end
30
+
21
31
  def to_s
22
32
  "OPA api"
23
33
  end
@@ -6,6 +6,12 @@ module Inspec::Resources
6
6
  supports platform: "unix"
7
7
  supports platform: "windows"
8
8
 
9
+ example <<~EXAMPLE
10
+ describe opa_cli(policy: "example.rego", data: "input.json", query: "data.example.allow") do
11
+ its(["result"]) { should eq "value" }
12
+ end
13
+ EXAMPLE
14
+
9
15
  def initialize(opts = {})
10
16
  @opa_executable_path = opts[:opa_executable_path] || "opa" # if this path is not provided then we will assume that it's been set in the ENV PATH
11
17
  @policy = opts[:policy] || nil
@@ -22,6 +28,14 @@ module Inspec::Resources
22
28
  @content["result"][0]["expressions"][0]["value"] if @content["result"][0]["expressions"][0]["text"].include?("allow")
23
29
  end
24
30
 
31
+ def resource_id
32
+ if @policy.nil? && @query.nil?
33
+ "opa_cli"
34
+ else
35
+ "#{@policy}:#{@query}"
36
+ end
37
+ end
38
+
25
39
  def to_s
26
40
  "OPA cli"
27
41
  end
@@ -17,6 +17,7 @@ module Inspec::Resources
17
17
 
18
18
  def initialize(opts = {})
19
19
  @oracledb_session = inspec.oracledb_session(opts)
20
+ @opts = opts
20
21
  end
21
22
 
22
23
  def method_missing(name)
@@ -28,6 +29,10 @@ module Inspec::Resources
28
29
  "Oracle DB Configuration"
29
30
  end
30
31
 
32
+ def resource_id
33
+ @opts[:user] || ""
34
+ end
35
+
31
36
  private
32
37
 
33
38
  def determine_database_setting(setting)
@@ -73,6 +73,10 @@ module Inspec::Resources
73
73
  "Oracle Listener Configuration"
74
74
  end
75
75
 
76
+ def resource_id
77
+ @conf_path
78
+ end
79
+
76
80
  private
77
81
 
78
82
  def read_content
@@ -76,6 +76,16 @@ module Inspec::Resources
76
76
  "Oracle Session"
77
77
  end
78
78
 
79
+ def resource_id
80
+ if @user
81
+ "#{@host}-#{@port}-#{@user}"
82
+ elsif @su_user
83
+ "#{@host}-#{@port}-#{@su_user}"
84
+ else
85
+ ""
86
+ end
87
+ end
88
+
79
89
  private
80
90
 
81
91
  # 3 commands
@@ -27,6 +27,10 @@ module Inspec::Resources
27
27
  end
28
28
  end
29
29
 
30
+ def resource_id
31
+ @platform.name || "OS"
32
+ end
33
+
30
34
  def to_s
31
35
  "Operating System Detection"
32
36
  end
@@ -47,6 +47,10 @@ module Inspec::Resources
47
47
  @content = value_for(@osenv, @target) unless @osenv.nil?
48
48
  end
49
49
 
50
+ def resource_id
51
+ @osenv || ""
52
+ end
53
+
50
54
  def to_s
51
55
  if @osenv.nil?
52
56
  "Environment variables"
@@ -96,6 +96,10 @@ module Inspec::Resources
96
96
  @latest_version ||= ( @pkgman.latest_version(@package_name) || info[:latest_version] )
97
97
  end
98
98
 
99
+ def resource_id
100
+ @package_name || "System Package"
101
+ end
102
+
99
103
  def to_s
100
104
  "System Package #{@package_name}"
101
105
  end
@@ -68,6 +68,10 @@ module Inspec::Resources
68
68
  end
69
69
  end
70
70
 
71
+ def resource_id
72
+ @content || "parse_config"
73
+ end
74
+
71
75
  def to_s
72
76
  "Parse Config #{@conf_path}"
73
77
  end
@@ -104,8 +108,13 @@ module Inspec::Resources
104
108
  EXAMPLE
105
109
 
106
110
  def initialize(path, opts = nil)
111
+ @path = path
107
112
  super(nil, opts)
108
- parse_file(path)
113
+ parse_file(@path)
114
+ end
115
+
116
+ def resource_id
117
+ @path || "parse_config_file"
109
118
  end
110
119
 
111
120
  def to_s
@@ -56,6 +56,10 @@ module Inspec::Resources
56
56
  info[:version]
57
57
  end
58
58
 
59
+ def resource_id
60
+ @package_name || "pip"
61
+ end
62
+
59
63
  def to_s
60
64
  "Pip Package #{@package_name}"
61
65
  end
@@ -93,6 +93,10 @@ module Inspec::Resources
93
93
  key.to_s.tr("-", "_").to_sym
94
94
  end
95
95
 
96
+ def resource_id
97
+ @platform.name || "platform"
98
+ end
99
+
96
100
  def to_s
97
101
  "Platform Detection"
98
102
  end
@@ -22,6 +22,10 @@ module Inspec::Resources
22
22
  SimpleConfig.new(content).params
23
23
  end
24
24
 
25
+ def resource_id
26
+ "Postfix Conf"
27
+ end
28
+
25
29
  def to_s
26
30
  "Postfix Mail Transfer Agent"
27
31
  end
@@ -64,6 +64,10 @@ module Inspec::Resources
64
64
  param
65
65
  end
66
66
 
67
+ def resource_id
68
+ @conf_path || "postgres_conf"
69
+ end
70
+
67
71
  def to_s
68
72
  "PostgreSQL Configuration"
69
73
  end
@@ -4,9 +4,9 @@ require "shellwords" unless defined?(Shellwords)
4
4
 
5
5
  module Inspec::Resources
6
6
  class Lines
7
- attr_reader :output
7
+ attr_reader :output, :exit_status
8
8
 
9
- def initialize(raw, desc)
9
+ def initialize(raw, desc, exit_status)
10
10
  @output = raw
11
11
  @desc = desc
12
12
  end
@@ -58,12 +58,16 @@ module Inspec::Resources
58
58
  if cmd.exit_status != 0 && ( out =~ /could not connect to/ || out =~ /password authentication failed/ ) && out.downcase =~ /error:/
59
59
  raise Inspec::Exceptions::ResourceFailed, "PostgreSQL connection error: #{out}"
60
60
  elsif cmd.exit_status != 0 && out.downcase =~ /error:/
61
- Lines.new(out, "PostgreSQL query with error: #{query}")
61
+ Lines.new(out, "PostgreSQL query with error: #{query}", cmd.exit_status)
62
62
  else
63
- Lines.new(cmd.stdout.strip, "PostgreSQL query: #{query}")
63
+ Lines.new(cmd.stdout.strip, "PostgreSQL query: #{query}", cmd.exit_status)
64
64
  end
65
65
  end
66
66
 
67
+ def resource_id
68
+ "postgress_session:User:#{@user}:Host:#{@host}"
69
+ end
70
+
67
71
  private
68
72
 
69
73
  def escaped_query(query)
@@ -49,6 +49,10 @@ module Inspec::Resources
49
49
  def to_s
50
50
  "Powershell"
51
51
  end
52
+
53
+ def resource_id
54
+ "Powershell"
55
+ end
52
56
  end
53
57
 
54
58
  PowershellScript = Powershell
@@ -43,7 +43,7 @@ module Inspec::Resources
43
43
 
44
44
  all_cmds = ps_axo
45
45
  @list = all_cmds.find_all do |hm|
46
- hm[:command] =~ grep
46
+ hm[:command] =~ grep || hm[:process_name] =~ grep
47
47
  end
48
48
  end
49
49
 
@@ -84,6 +84,7 @@ module Inspec::Resources
84
84
  .register_column(:time, field: "time")
85
85
  .register_column(:users, field: "user")
86
86
  .register_column(:commands, field: "command")
87
+ .register_column(:process_name, field: "process_name")
87
88
  .install_filter_methods_on_resource(self, :filtered_processes)
88
89
 
89
90
  private
@@ -98,9 +99,9 @@ module Inspec::Resources
98
99
  if os.linux?
99
100
  command, regex, field_map = ps_configuration_for_linux
100
101
  elsif os.windows?
101
- command = '$Proc = Get-Process -IncludeUserName | Where-Object {$_.Path -ne $null } | Select-Object PriorityClass,Id,CPU,PM,VirtualMemorySize,NPM,SessionId,Responding,StartTime,TotalProcessorTime,UserName,Path | ConvertTo-Csv -NoTypeInformation;$Proc.Replace("""","").Replace("`r`n","`n")'
102
+ command = '$Proc = Get-Process -IncludeUserName | Select-Object PriorityClass,Id,CPU,PM,VirtualMemorySize,NPM,SessionId,Responding,StartTime,TotalProcessorTime,UserName,Path,ProcessName | ConvertTo-Csv -NoTypeInformation;$Proc.Replace("""","").Replace("`r`n","`n")'
102
103
  # Wanted to use /(?:^|,)([^,]*)/; works on rubular.com not sure why here?
103
- regex = /^(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+)$/
104
+ regex = /^(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)$/
104
105
  field_map = {
105
106
  pid: 2,
106
107
  cpu: 3,
@@ -113,6 +114,7 @@ module Inspec::Resources
113
114
  time: 10,
114
115
  user: 11,
115
116
  command: 12,
117
+ process_name: 13,
116
118
  }
117
119
  else
118
120
  command = "ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,user,command"
@@ -204,7 +206,7 @@ module Inspec::Resources
204
206
 
205
207
  # build a hash of process data that we'll turn into a struct for FilterTable
206
208
  process_data = {}
207
- %i{label pid cpu mem vsz rss tty stat start time user command}.each do |param|
209
+ %i{label pid cpu mem vsz rss tty stat start time user command process_name}.each do |param|
208
210
  # not all operating systems support all fields, so skip the field if we don't have it
209
211
  process_data[param] = line[field_map[param]] if field_map.key?(param)
210
212
  end
@@ -32,6 +32,10 @@ module Inspec::Resources
32
32
  "rabbitmq_config #{@conf_path}"
33
33
  end
34
34
 
35
+ def resource_id
36
+ @conf_path
37
+ end
38
+
35
39
  private
36
40
 
37
41
  def read_content
@@ -140,6 +140,10 @@ module Inspec::Resources
140
140
  "Registry Key #{@options[:name]}"
141
141
  end
142
142
 
143
+ def resource_id
144
+ @options[:path]
145
+ end
146
+
143
147
  private
144
148
 
145
149
  def prep_prop(property)
@@ -51,6 +51,10 @@ module Inspec::Resources
51
51
  "Security Identifier"
52
52
  end
53
53
 
54
+ def resource_id
55
+ @name
56
+ end
57
+
54
58
  private
55
59
 
56
60
  def fetch_sids
@@ -112,6 +112,10 @@ module Inspec::Resources
112
112
  "Security Policy"
113
113
  end
114
114
 
115
+ def resource_id
116
+ "Security Policy"
117
+ end
118
+
115
119
  private
116
120
 
117
121
  def read_content
@@ -297,6 +297,10 @@ module Inspec::Resources
297
297
  current_monitoring_tool.is_service_monitored?
298
298
  end
299
299
 
300
+ def resource_id
301
+ @service_name || "Service"
302
+ end
303
+
300
304
  def to_s
301
305
  "Service #{@service_name}"
302
306
  end
@@ -57,6 +57,10 @@ module Inspec::Resources
57
57
  "SSH Configuration"
58
58
  end
59
59
 
60
+ def resource_id
61
+ @conf_path || "SSH Configuration"
62
+ end
63
+
60
64
  private
61
65
 
62
66
  def read_content
@@ -29,6 +29,10 @@ module Inspec::Resources
29
29
  sql_query.row(0).column("Config Value").value
30
30
  end
31
31
 
32
+ def resource_id
33
+ conf_param || "Sybase config settings"
34
+ end
35
+
32
36
  def to_s
33
37
  "Sybase Conf #{conf_param}"
34
38
  end
@@ -64,6 +64,10 @@ module Inspec::Resources
64
64
  DatabaseHelper::SQLQueryResult.new(isql_cmd, parse_csv_result(isql_cmd.stdout))
65
65
  end
66
66
 
67
+ def resource_id
68
+ @database || "Sybase Session"
69
+ end
70
+
67
71
  def to_s
68
72
  "Sybase Session"
69
73
  end
@@ -112,6 +112,10 @@ module Inspec::Resources
112
112
  end
113
113
  end
114
114
 
115
+ def resource_id
116
+ "sys_info"
117
+ end
118
+
115
119
  def to_s
116
120
  "System Information"
117
121
  end
@@ -52,6 +52,10 @@ module Inspec::Resources
52
52
  @output["time_offset"]
53
53
  end
54
54
 
55
+ def resource_id
56
+ "timezone"
57
+ end
58
+
55
59
  def to_s
56
60
  "Time Zone resource"
57
61
  end
@@ -307,6 +307,10 @@ module Inspec::Resources
307
307
  shadow_information[1]
308
308
  end
309
309
 
310
+ def resource_id
311
+ @username || "User"
312
+ end
313
+
310
314
  def to_s
311
315
  "User #{@username}"
312
316
  end
@@ -51,6 +51,11 @@ module Inspec::Resources
51
51
  @result ||= parse_stdout
52
52
  end
53
53
 
54
+ # vbscript can be of multiple lines so that can't be used as UUID so using the hardcoded string.
55
+ def resource_id
56
+ "Windows VBScript"
57
+ end
58
+
54
59
  def to_s
55
60
  "Windows VBScript"
56
61
  end
@@ -59,6 +59,10 @@ module Inspec::Resources
59
59
  collect_data_linux
60
60
  end
61
61
 
62
+ def resource_id
63
+ @virtualization_data[:system] || "virtualization"
64
+ end
65
+
62
66
  def to_s
63
67
  "Virtualization Detection"
64
68
  end
@@ -59,8 +59,12 @@ module Inspec::Resources
59
59
  @cache
60
60
  end
61
61
 
62
+ def resource_id
63
+ @feature
64
+ end
65
+
62
66
  def to_s
63
- "Windows Feature '#{@feature}'"
67
+ @feature || "windows_feature"
64
68
  end
65
69
 
66
70
  private
@@ -21,6 +21,10 @@ module Inspec::Resources
21
21
  @state = JSON.load(cmd.stdout) unless cmd.stdout.empty?
22
22
  end
23
23
 
24
+ def resource_id
25
+ @profile || "windows_firewall"
26
+ end
27
+
24
28
  def to_s
25
29
  "Windows Firewall (Profile #{@profile})"
26
30
  end
@@ -23,6 +23,10 @@ module Inspec::Resources
23
23
  @state = JSON.load(cmd.stdout) unless cmd.stdout.empty?
24
24
  end
25
25
 
26
+ def resource_id
27
+ @name || "windows_firewall_rule"
28
+ end
29
+
26
30
  def to_s
27
31
  "Windows Firewall Rule #{@name}"
28
32
  end
@@ -24,6 +24,10 @@ module Inspec::Resources
24
24
  @content = cmd.stdout
25
25
  end
26
26
 
27
+ def resource_id
28
+ @id || "windows_hotfix"
29
+ end
30
+
27
31
  def to_s
28
32
  "Windows Hotfix #{@id}"
29
33
  end
@@ -105,6 +105,10 @@ module Inspec::Resources
105
105
  }
106
106
  end
107
107
 
108
+ def resource_id
109
+ @taskuri || "windows_task"
110
+ end
111
+
108
112
  def to_s
109
113
  "Windows Task '#{@taskuri}'"
110
114
  end
@@ -95,6 +95,10 @@ module Inspec::Resources
95
95
  @content
96
96
  end
97
97
 
98
+ def resource_id
99
+ @options[:class] || "WMI"
100
+ end
101
+
98
102
  def to_s
99
103
  "WMI with #{@options}"
100
104
  end