openscap 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openscap/version.rb +1 -1
  3. data/lib/openscap/xccdf/benchmark.rb +10 -10
  4. data/lib/openscap/xccdf/fix.rb +7 -14
  5. data/lib/openscap/xccdf/fixtext.rb +19 -0
  6. data/lib/openscap/xccdf/group.rb +6 -12
  7. data/lib/openscap/xccdf/ident.rb +4 -10
  8. data/lib/openscap/xccdf/item.rb +6 -6
  9. data/lib/openscap/xccdf/item_common.rb +1 -1
  10. data/lib/openscap/xccdf/policy.rb +3 -4
  11. data/lib/openscap/xccdf/policy_model.rb +6 -14
  12. data/lib/openscap/xccdf/profile.rb +2 -2
  13. data/lib/openscap/xccdf/reference.rb +5 -21
  14. data/lib/openscap/xccdf/rule.rb +32 -8
  15. data/lib/openscap/xccdf/ruleresult.rb +5 -7
  16. data/lib/openscap/xccdf/session.rb +11 -11
  17. data/lib/openscap/xccdf/status.rb +1 -2
  18. data/lib/openscap/xccdf/tailoring.rb +6 -12
  19. data/lib/openscap/xccdf/testresult.rb +12 -16
  20. data/lib/openscap/xccdf/value.rb +1 -2
  21. metadata +5 -27
  22. data/test/common/testcase.rb +0 -38
  23. data/test/data/arf.xml +0 -275156
  24. data/test/data/invalid.xml +0 -20
  25. data/test/data/sds-complex.xml +0 -132
  26. data/test/data/tailoring.xml +0 -31
  27. data/test/data/testresult.xml +0 -225
  28. data/test/data/xccdf.xml +0 -3047
  29. data/test/ds/arf_test.rb +0 -96
  30. data/test/ds/sds_test.rb +0 -89
  31. data/test/integration/arf_waiver_test.rb +0 -91
  32. data/test/openscap_test.rb +0 -21
  33. data/test/source_test.rb +0 -78
  34. data/test/text_test.rb +0 -19
  35. data/test/xccdf/arf_test.rb +0 -43
  36. data/test/xccdf/benchmark_test.rb +0 -201
  37. data/test/xccdf/item_test.rb +0 -82
  38. data/test/xccdf/policy_test.rb +0 -48
  39. data/test/xccdf/profile_test.rb +0 -62
  40. data/test/xccdf/session_ds_test.rb +0 -116
  41. data/test/xccdf/session_test.rb +0 -33
  42. data/test/xccdf/tailoring_test.rb +0 -30
  43. data/test/xccdf/testresult_test.rb +0 -99
  44. data/test/xccdf/value_test.rb +0 -67
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31f300d3cdcf9b72dcc0e552f4ce9c6113d54b1f9b5316441bff1133a09106ed
4
- data.tar.gz: fdcb823bf21e22ed25cdd77f0bf534227db14af84f0f7383d7f74c65cf690932
3
+ metadata.gz: 9c8eddf3fa5a4c04f1655827ba4f4b8422f32f314a20f888b36c5ef85e2e04cf
4
+ data.tar.gz: 3e9d497efc4543111a4fee03d8db323c85b96360e31e23cd9ebc4387ec354d17
5
5
  SHA512:
6
- metadata.gz: a21ae53d6e42bd055058423e54615780483bec7f8c0514a55dfa953ef6e37d88256c0404135a432e964339a9e26fb0a79ba9963e51ffd0317ba28428d7a70c5a
7
- data.tar.gz: 790d230ca7fc2b54f9188f5362851d428152000d84d30f935222a323a8276838b491c640a81708f11b592d0c48dfa759f90718d7b80ae1201c9a4344b37513e4
6
+ metadata.gz: 601b6ee58372cd9f943918611c5f10df28cf1245d1149547d2889531e4b623b3787fb70cc06c1b4a17d4fca7e4202dd27dcacc7a69eba5c99d156fcc7e2529f3
7
+ data.tar.gz: 3a47312203579d8735b19032cfe427f76ede2467bbfb63b806dbd47edd79a8442ebd40fc61062fb4ece7b51742c38350e73c69d8677aafed5a5d8aef0d473db2
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenSCAP
4
- VERSION = '0.5.0'
4
+ VERSION = '0.5.1'
5
5
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/source'
4
- require 'openscap/xccdf/profile'
5
- require 'openscap/xccdf/item'
6
- require 'openscap/xccdf/item_common'
7
- require 'openscap/xccdf/value'
8
- require 'openscap/xccdf/status'
4
+ require_relative 'profile'
5
+ require_relative 'item'
6
+ require_relative 'item_common'
7
+ require_relative 'value'
8
+ require_relative 'status'
9
9
 
10
10
  module OpenSCAP
11
11
  module Xccdf
@@ -13,7 +13,7 @@ module OpenSCAP
13
13
  include ItemCommon
14
14
  attr_reader :raw
15
15
 
16
- def initialize(p)
16
+ def initialize p
17
17
  case p
18
18
  when OpenSCAP::Source
19
19
  @raw = OpenSCAP.xccdf_benchmark_import_source p.raw
@@ -35,7 +35,7 @@ module OpenSCAP
35
35
  end
36
36
 
37
37
  def status_current
38
- Status.new OpenSCAP.xccdf_benchmark_get_status_current(raw)
38
+ Status.new OpenSCAP.xccdf_benchmark_get_status_current(@raw)
39
39
  end
40
40
 
41
41
  def profiles
@@ -65,12 +65,12 @@ module OpenSCAP
65
65
  end
66
66
 
67
67
  def policy_model
68
- @policy_model ||= PolicyModel.new(self)
68
+ @policy_model ||= PolicyModel.new self
69
69
  end
70
70
 
71
71
  def schema_version
72
- pointer = OpenSCAP.xccdf_benchmark_get_schema_version(@raw)
73
- OpenSCAP.xccdf_version_info_get_version(pointer)
72
+ pointer = OpenSCAP.xccdf_benchmark_get_schema_version @raw
73
+ OpenSCAP.xccdf_version_info_get_version pointer
74
74
  end
75
75
 
76
76
  def destroy
@@ -3,37 +3,30 @@
3
3
  module OpenSCAP
4
4
  module Xccdf
5
5
  class Fix
6
- def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
6
+ def initialize raw
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a? FFI::Pointer
9
8
 
10
9
  @raw = raw
11
10
  end
12
11
 
13
12
  def id
14
- OpenSCAP.xccdf_fix_get_id(@raw)
13
+ OpenSCAP.xccdf_fix_get_id @raw
15
14
  end
16
15
 
17
16
  def platform
18
- OpenSCAP.xccdf_fix_get_platform(@raw)
17
+ OpenSCAP.xccdf_fix_get_platform @raw
19
18
  end
20
19
 
21
- # system is a reserved word in Rails, so didn't use it
22
20
  def fix_system
23
- OpenSCAP.xccdf_fix_get_system(@raw)
21
+ OpenSCAP.xccdf_fix_get_system @raw
24
22
  end
25
23
 
26
24
  def content
27
- OpenSCAP.xccdf_fix_get_content(@raw)
25
+ OpenSCAP.xccdf_fix_get_content @raw
28
26
  end
29
27
 
30
28
  def to_hash
31
- {
32
- id:,
33
- platform:,
34
- system: fix_system,
35
- content:
36
- }
29
+ { id:, platform:, system: fix_system, content: }
37
30
  end
38
31
  end
39
32
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenSCAP
4
+ module Xccdf
5
+ class Fixtext
6
+ def initialize(raw)
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
8
+
9
+ @raw = raw
10
+ end
11
+
12
+ def text
13
+ Text.new(OpenSCAP.xccdf_fixtext_get_text(@raw)).text
14
+ end
15
+ end
16
+ end
17
+
18
+ attach_function :xccdf_fixtext_get_text, [:pointer], :pointer
19
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'openscap/exceptions'
4
4
  require 'openscap/xccdf'
5
- require 'openscap/xccdf/item'
5
+ require_relative 'item'
6
6
 
7
7
  module OpenSCAP
8
8
  module Xccdf
@@ -20,18 +20,12 @@ module OpenSCAP
20
20
  end
21
21
 
22
22
  def sub_items
23
- @sub_items ||= sub_items_init
24
- end
25
-
26
- private
27
-
28
- def sub_items_init
29
- collect = {}
30
- each_child do |item|
31
- collect.merge! item.sub_items
32
- collect[item.id] = item
23
+ @sub_items ||= {}.tap do |sub_items|
24
+ each_child do |item|
25
+ sub_items.merge! item.sub_items
26
+ sub_items[item.id] = item
27
+ end
33
28
  end
34
- collect
35
29
  end
36
30
  end
37
31
  end
@@ -3,20 +3,14 @@
3
3
  module OpenSCAP
4
4
  module Xccdf
5
5
  class Ident
6
- def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
6
+ def initialize raw
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
9
8
 
10
9
  @raw = raw
11
10
  end
12
11
 
13
- def system
14
- OpenSCAP.xccdf_ident_get_system(@raw)
15
- end
16
-
17
- def id
18
- OpenSCAP.xccdf_ident_get_id(@raw)
19
- end
12
+ def system = OpenSCAP.xccdf_ident_get_system @raw
13
+ def id = OpenSCAP.xccdf_ident_get_id @raw
20
14
  end
21
15
  end
22
16
  attach_function :xccdf_ident_get_system, [:pointer], :string
@@ -2,16 +2,16 @@
2
2
 
3
3
  require 'openscap/exceptions'
4
4
  require 'openscap/text'
5
- require 'openscap/xccdf/item_common'
6
- require 'openscap/xccdf/group'
7
- require 'openscap/xccdf/rule'
5
+ require_relative 'item_common'
6
+ require_relative 'group'
7
+ require_relative 'rule'
8
8
 
9
9
  module OpenSCAP
10
10
  module Xccdf
11
11
  class Item
12
12
  include ItemCommon # reflects OpenSCAP's struct xccdf_item (thus operates with Benchmark, Profile, Group, Rule, and Value)
13
13
 
14
- def self.build(t)
14
+ def self.build t
15
15
  raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with #{t}" \
16
16
  unless t.is_a?(FFI::Pointer)
17
17
 
@@ -26,13 +26,13 @@ module OpenSCAP
26
26
  end
27
27
  end
28
28
 
29
- def initialize(t)
29
+ def initialize t
30
30
  raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} abstract base class." if instance_of?(OpenSCAP::Xccdf::Item)
31
31
 
32
32
  @raw = t
33
33
  end
34
34
 
35
- def rationale(prefered_lang = nil, markup: false)
35
+ def rationale prefered_lang = nil, markup: false
36
36
  TextList.extract(OpenSCAP.xccdf_item_get_rationale(@raw), lang: prefered_lang, markup:)
37
37
  end
38
38
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/text'
4
- require 'openscap/xccdf/reference'
4
+ require_relative 'reference'
5
5
 
6
6
  module OpenSCAP
7
7
  module Xccdf
@@ -12,21 +12,20 @@ module OpenSCAP
12
12
  when FFI::Pointer
13
13
  @raw = p
14
14
  else
15
- raise OpenSCAP::OpenSCAPError,
16
- "Cannot initialize OpenSCAP::Xccdf::Policy with '#{p}'"
15
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::Xccdf::Policy with '#{p}'"
17
16
  end
18
17
  OpenSCAP.raise! if @raw.null?
19
18
  end
20
19
 
21
20
  def id
22
- OpenSCAP.xccdf_policy_get_id raw
21
+ OpenSCAP.xccdf_policy_get_id @raw
23
22
  end
24
23
 
25
24
  def profile
26
25
  Profile.new OpenSCAP.xccdf_policy_get_profile @raw
27
26
  end
28
27
 
29
- def selects_item?(item_idref)
28
+ def selects_item? item_idref
30
29
  OpenSCAP.xccdf_policy_is_item_selected @raw, item_idref
31
30
  end
32
31
  end
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/exceptions'
4
- require 'openscap/xccdf/benchmark'
5
- require 'openscap/xccdf/policy'
4
+ require_relative 'benchmark'
5
+ require_relative 'policy'
6
6
 
7
7
  module OpenSCAP
8
8
  module Xccdf
9
9
  class PolicyModel
10
10
  attr_reader :raw
11
11
 
12
- def initialize(b)
12
+ def initialize b
13
13
  case b
14
14
  when OpenSCAP::Xccdf::Benchmark
15
15
  @raw = OpenSCAP.xccdf_policy_model_new(b.raw)
@@ -27,7 +27,9 @@ module OpenSCAP
27
27
  end
28
28
 
29
29
  def policies
30
- @policies ||= policies_init
30
+ @policies ||= {}.tap do |policies|
31
+ each_policy { |p| policies[p.id] = p }
32
+ end
31
33
  end
32
34
 
33
35
  def destroy
@@ -42,16 +44,6 @@ module OpenSCAP
42
44
  yield OpenSCAP::Xccdf::Policy.new pointer
43
45
  end
44
46
  end
45
-
46
- private
47
-
48
- def policies_init
49
- policies = {}
50
- each_policy do |policy|
51
- policies[policy.id] = policy
52
- end
53
- policies
54
- end
55
47
  end
56
48
  end
57
49
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/text'
4
- require 'openscap/xccdf/item_common'
4
+ require_relative 'item_common'
5
5
 
6
6
  module OpenSCAP
7
7
  module Xccdf
@@ -9,7 +9,7 @@ module OpenSCAP
9
9
  include ItemCommon
10
10
  attr_reader :raw
11
11
 
12
- def initialize(p)
12
+ def initialize p
13
13
  case p
14
14
  when FFI::Pointer
15
15
  @raw = p
@@ -4,31 +4,15 @@ module OpenSCAP
4
4
  module Xccdf
5
5
  class Reference
6
6
  def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
9
8
 
10
9
  @raw = raw
11
10
  end
12
11
 
13
- def title
14
- OpenSCAP.oscap_reference_get_title(@raw)
15
- end
16
-
17
- def href
18
- OpenSCAP.oscap_reference_get_href(@raw)
19
- end
20
-
21
- def html_link
22
- "<a href='#{href}'>#{title}</a>"
23
- end
24
-
25
- def to_hash
26
- {
27
- title:,
28
- href:,
29
- html_link:
30
- }
31
- end
12
+ def title = OpenSCAP.oscap_reference_get_title @raw
13
+ def href = OpenSCAP.oscap_reference_get_href @raw
14
+ def html_link = "<a href='#{href}'>#{title}</a>"
15
+ def to_hash = { title:, href:, html_link: }
32
16
  end
33
17
  end
34
18
  attach_function :oscap_reference_get_href, [:pointer], :string
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/exceptions'
4
- require 'openscap/xccdf/item'
5
- require 'openscap/xccdf/fix'
6
- require 'openscap/xccdf/ident'
4
+ require_relative 'item'
5
+ require_relative 'fix'
6
+ require_relative 'fixtext'
7
+ require_relative 'ident'
7
8
 
8
9
  module OpenSCAP
9
10
  module Xccdf
10
11
  class Rule < Item
11
12
  def severity
12
- severity = OpenSCAP.xccdf_rule_get_severity(@raw)
13
+ severity = OpenSCAP.xccdf_rule_get_severity @raw
13
14
  severity_mapping = {
14
15
  xccdf_level_not_defined: 'Not defined',
15
16
  xccdf_unknown: 'Unknown',
@@ -21,12 +22,30 @@ module OpenSCAP
21
22
  severity_mapping[severity] || severity_mapping[:xccdf_unknown]
22
23
  end
23
24
 
24
- def fixes
25
- fixes = []
25
+ def each_fix(&)
26
26
  OpenSCAP._iterate over: OpenSCAP.xccdf_rule_get_fixes(@raw), as: 'xccdf_fix' do |pointer|
27
- fixes << OpenSCAP::Xccdf::Fix.new(pointer)
27
+ yield OpenSCAP::Xccdf::Fix.new pointer
28
+ end
29
+ end
30
+
31
+ def each_fixtext(&)
32
+ OpenSCAP._iterate over: OpenSCAP.xccdf_rule_get_fixtexts(@raw), as: 'xccdf_fixtext' do |pointer|
33
+ yield OpenSCAP::Xccdf::Fixtext.new pointer
34
+ end
35
+ end
36
+
37
+ def fixtexts
38
+ @fixtexts ||= [].tap do |fixtexts|
39
+ each_fixtext { |ft| fixtexts << ft }
40
+ end
41
+ end
42
+
43
+ def fixes
44
+ @fixes ||= [].tap do |fixes|
45
+ each_fix do |fix|
46
+ fixes << fix
47
+ end
28
48
  end
29
- fixes
30
49
  end
31
50
 
32
51
  def idents
@@ -52,6 +71,11 @@ module OpenSCAP
52
71
  attach_function :xccdf_fix_iterator_next, [:pointer], :pointer
53
72
  attach_function :xccdf_fix_iterator_free, [:pointer], :void
54
73
 
74
+ attach_function :xccdf_rule_get_fixtexts, [:pointer], :pointer
75
+ attach_function :xccdf_fixtext_iterator_has_more, [:pointer], :bool
76
+ attach_function :xccdf_fixtext_iterator_next, [:pointer], :pointer
77
+ attach_function :xccdf_fixtext_iterator_free, [:pointer], :void
78
+
55
79
  attach_function :xccdf_rule_get_idents, [:pointer], :pointer
56
80
  attach_function :xccdf_ident_iterator_has_more, [:pointer], :bool
57
81
  attach_function :xccdf_ident_iterator_next, [:pointer], :pointer
@@ -6,7 +6,7 @@ require 'openscap/text'
6
6
  module OpenSCAP
7
7
  module Xccdf
8
8
  class RuleResult
9
- def initialize(t)
9
+ def initialize t
10
10
  case t
11
11
  when FFI::Pointer
12
12
  @rr = t
@@ -20,11 +20,10 @@ module OpenSCAP
20
20
  end
21
21
 
22
22
  def result
23
- OpenSCAP.xccdf_test_result_type_get_text \
24
- OpenSCAP.xccdf_rule_result_get_result(@rr)
23
+ OpenSCAP.xccdf_test_result_type_get_text OpenSCAP.xccdf_rule_result_get_result(@rr)
25
24
  end
26
25
 
27
- def override!(param)
26
+ def override! param
28
27
  validate_xccdf_result! param[:new_result]
29
28
  t = OpenSCAP::Text.new
30
29
  t.text = param[:raw_text]
@@ -41,7 +40,7 @@ module OpenSCAP
41
40
 
42
41
  private
43
42
 
44
- def validate_xccdf_result!(result_label)
43
+ def validate_xccdf_result! result_label
45
44
  if OpenSCAP::XccdfResult[result_label] > OpenSCAP::XccdfResult[:fixed]
46
45
  raise OpenSCAPError, "Could not recognize result type: '#{result_label}'"
47
46
  end
@@ -63,6 +62,5 @@ module OpenSCAP
63
62
  :notselected,
64
63
  :informational,
65
64
  :fixed)
66
- attach_function :xccdf_rule_result_override,
67
- [:pointer, XccdfResult, :string, :string, :pointer], :bool
65
+ attach_function :xccdf_rule_result_override, [:pointer, XccdfResult, :string, :string, :pointer], :bool
68
66
  end
@@ -3,7 +3,7 @@
3
3
  module OpenSCAP
4
4
  module Xccdf
5
5
  class Session
6
- def initialize(input_filename)
6
+ def initialize input_filename
7
7
  raise OpenSCAPError, 'No filename specified!' unless input_filename
8
8
 
9
9
  @input_filename = input_filename
@@ -12,25 +12,25 @@ module OpenSCAP
12
12
  end
13
13
 
14
14
  def sds?
15
- OpenSCAP.xccdf_session_is_sds(@s)
15
+ OpenSCAP.xccdf_session_is_sds @s
16
16
  end
17
17
 
18
- def load(opts = {})
18
+ def load opts = {}
19
19
  o = {
20
20
  datastream_id: nil,
21
21
  component_id: nil
22
- }.merge(opts)
22
+ }.merge opts
23
23
  if sds?
24
- OpenSCAP.xccdf_session_set_datastream_id(@s, o[:datastream_id])
25
- OpenSCAP.xccdf_session_set_component_id(@s, o[:component_id])
24
+ OpenSCAP.xccdf_session_set_datastream_id @s, o[:datastream_id]
25
+ OpenSCAP.xccdf_session_set_component_id @s, o[:component_id]
26
26
  end
27
27
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load(@s).zero?
28
28
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load_check_engine_plugins(@s).zero?
29
29
  end
30
30
 
31
- def profile=(p)
31
+ def profile= p
32
32
  @profile = p
33
- raise OpenSCAPError, "No profile '#{p}' found" if OpenSCAP.xccdf_session_set_profile_id(@s, p) == false
33
+ raise OpenSCAPError, "No profile '#{p}' found" unless OpenSCAP.xccdf_session_set_profile_id(@s, p)
34
34
  end
35
35
 
36
36
  def evaluate
@@ -49,13 +49,13 @@ module OpenSCAP
49
49
  oval_results: false,
50
50
  oval_variables: false,
51
51
  engines_results: false
52
- }.merge!(opts)
52
+ }.merge! opts
53
53
  export_targets o
54
54
  export
55
55
  end
56
56
 
57
57
  def destroy
58
- OpenSCAP.xccdf_session_free(@s)
58
+ OpenSCAP.xccdf_session_free @s
59
59
  @s = nil
60
60
  end
61
61
 
@@ -68,7 +68,7 @@ module OpenSCAP
68
68
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_export_arf(@s).zero?
69
69
  end
70
70
 
71
- def export_targets(opts = {})
71
+ def export_targets opts = {}
72
72
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_arf_export(@s, opts[:rds_file])
73
73
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_xccdf_export(@s, opts[:xccdf_file])
74
74
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_report_export(@s, opts[:report_file])
@@ -4,8 +4,7 @@ module OpenSCAP
4
4
  module Xccdf
5
5
  class Status
6
6
  def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
9
8
 
10
9
  @raw = raw
11
10
  end
@@ -19,24 +19,18 @@ module OpenSCAP
19
19
  end
20
20
 
21
21
  def profiles
22
- @profiles ||= profiles_init
22
+ @profiles ||= {}.tap do |profiles|
23
+ OpenSCAP._iterate over: OpenSCAP.xccdf_tailoring_get_profiles(@raw), as: 'xccdf_profile' do |pointer|
24
+ profile = OpenSCAP::Xccdf::Profile.new pointer
25
+ profiles[profile.id] = profile
26
+ end
27
+ end
23
28
  end
24
29
 
25
30
  def destroy
26
31
  OpenSCAP.xccdf_tailoring_free @raw
27
32
  @raw = nil
28
33
  end
29
-
30
- private
31
-
32
- def profiles_init
33
- profiles = {}
34
- OpenSCAP._iterate over: OpenSCAP.xccdf_tailoring_get_profiles(@raw), as: 'xccdf_profile' do |pointer|
35
- profile = OpenSCAP::Xccdf::Profile.new pointer
36
- profiles[profile.id] = profile
37
- end
38
- profiles
39
- end
40
34
  end
41
35
  end
42
36
 
@@ -10,7 +10,7 @@ module OpenSCAP
10
10
  class TestResult
11
11
  attr_reader :rr, :raw
12
12
 
13
- def initialize(t)
13
+ def initialize t
14
14
  case t
15
15
  when OpenSCAP::Source
16
16
  @raw = OpenSCAP.xccdf_result_import_source(t.raw)
@@ -25,15 +25,23 @@ module OpenSCAP
25
25
  end
26
26
 
27
27
  def id
28
- OpenSCAP.xccdf_result_get_id(@raw)
28
+ OpenSCAP.xccdf_result_get_id @raw
29
29
  end
30
30
 
31
31
  def profile
32
- OpenSCAP.xccdf_result_get_profile(@raw)
32
+ OpenSCAP.xccdf_result_get_profile @raw
33
33
  end
34
34
 
35
35
  def score
36
- @score ||= score_init
36
+ @score ||= {}.tap do |scores|
37
+ OpenSCAP._iterate over: OpenSCAP.xccdf_result_get_scores(@raw), as: 'xccdf_score' do |s|
38
+ scores[OpenSCAP.xccdf_score_get_system(s)] = {
39
+ system: OpenSCAP.xccdf_score_get_system(s),
40
+ value: OpenSCAP.xccdf_score_get_score(s),
41
+ max: OpenSCAP.xccdf_score_get_maximum(s)
42
+ }
43
+ end
44
+ end
37
45
  end
38
46
 
39
47
  def score!(benchmark)
@@ -63,18 +71,6 @@ module OpenSCAP
63
71
  @rr[rr.id] = rr
64
72
  end
65
73
  end
66
-
67
- def score_init
68
- scores = {}
69
- OpenSCAP._iterate over: OpenSCAP.xccdf_result_get_scores(@raw), as: 'xccdf_score' do |s|
70
- scores[OpenSCAP.xccdf_score_get_system(s)] = {
71
- system: OpenSCAP.xccdf_score_get_system(s),
72
- value: OpenSCAP.xccdf_score_get_score(s),
73
- max: OpenSCAP.xccdf_score_get_maximum(s)
74
- }
75
- end
76
- scores
77
- end
78
74
  end
79
75
  end
80
76
 
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'openscap/exceptions'
4
- require 'openscap/xccdf/item'
3
+ require_relative 'item'
5
4
 
6
5
  module OpenSCAP
7
6
  module Xccdf