oscal 0.2.3 → 0.4.1
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 +4 -4
- data/lib/oscal/v1_2_1/all_models.rb +16379 -0
- data/lib/oscal/v1_2_1.rb +109 -0
- data/lib/oscal/version.rb +1 -1
- data/lib/oscal/version_registry.rb +183 -0
- data/lib/oscal/versioned.rb +88 -0
- data/lib/oscal.rb +93 -3
- metadata +38 -111
- data/.docker/Dockerfile +0 -19
- data/.docker/Makefile +0 -43
- data/.docker/docker-compose.yml +0 -14
- data/.docker/readme.md +0 -61
- data/.github/workflows/rake.yml +0 -15
- data/.github/workflows/release.yml +0 -24
- data/.gitignore +0 -13
- data/.gitmodules +0 -3
- data/.hound.yml +0 -5
- data/.rspec +0 -2
- data/.rubocop.yml +0 -10
- data/.ruby-version +0 -1
- data/CODE_OF_CONDUCT.md +0 -84
- data/Gemfile +0 -16
- data/LICENSE +0 -25
- data/Makefile +0 -1
- data/README.adoc +0 -115
- data/Rakefile +0 -19
- data/bin/console +0 -30
- data/bin/rspec +0 -27
- data/bin/setup +0 -8
- data/docker-compose.yml +0 -1
- data/exe/convert2oscalyaml.rb +0 -560
- data/lib/oscal/add.rb +0 -26
- data/lib/oscal/address.rb +0 -22
- data/lib/oscal/address_line.rb +0 -11
- data/lib/oscal/alter.rb +0 -22
- data/lib/oscal/assembly.rb +0 -120
- data/lib/oscal/assessment_plan.rb +0 -28
- data/lib/oscal/assessment_result.rb +0 -230
- data/lib/oscal/attribute_type_hash.rb +0 -81
- data/lib/oscal/back_matter.rb +0 -20
- data/lib/oscal/base64_object.rb +0 -11
- data/lib/oscal/base_class.rb +0 -50
- data/lib/oscal/catalog.rb +0 -63
- data/lib/oscal/choice.rb +0 -11
- data/lib/oscal/citation.rb +0 -22
- data/lib/oscal/combine.rb +0 -11
- data/lib/oscal/common_utils.rb +0 -35
- data/lib/oscal/constraint.rb +0 -20
- data/lib/oscal/control.rb +0 -28
- data/lib/oscal/custom.rb +0 -22
- data/lib/oscal/datatypes.rb +0 -50
- data/lib/oscal/document_id.rb +0 -11
- data/lib/oscal/email_address.rb +0 -11
- data/lib/oscal/exclude_control.rb +0 -22
- data/lib/oscal/external_id.rb +0 -11
- data/lib/oscal/group.rb +0 -33
- data/lib/oscal/guideline.rb +0 -11
- data/lib/oscal/hash_object.rb +0 -11
- data/lib/oscal/import_object.rb +0 -22
- data/lib/oscal/include_control.rb +0 -22
- data/lib/oscal/insert_control.rb +0 -22
- data/lib/oscal/link.rb +0 -11
- data/lib/oscal/list.rb +0 -160
- data/lib/oscal/location.rb +0 -31
- data/lib/oscal/location_uuid.rb +0 -11
- data/lib/oscal/logger.rb +0 -12
- data/lib/oscal/matching.rb +0 -11
- data/lib/oscal/member_of_organization.rb +0 -11
- data/lib/oscal/merge.rb +0 -20
- data/lib/oscal/metadata_block.rb +0 -36
- data/lib/oscal/modify.rb +0 -22
- data/lib/oscal/parameter.rb +0 -31
- data/lib/oscal/parsing_functions.rb +0 -19
- data/lib/oscal/part.rb +0 -24
- data/lib/oscal/party.rb +0 -36
- data/lib/oscal/party_uuid.rb +0 -11
- data/lib/oscal/profile.rb +0 -37
- data/lib/oscal/property.rb +0 -11
- data/lib/oscal/remove.rb +0 -11
- data/lib/oscal/resource.rb +0 -29
- data/lib/oscal/responsible_party.rb +0 -24
- data/lib/oscal/revision.rb +0 -23
- data/lib/oscal/rlink.rb +0 -20
- data/lib/oscal/role.rb +0 -22
- data/lib/oscal/select.rb +0 -20
- data/lib/oscal/serializer.rb +0 -76
- data/lib/oscal/set_parameter.rb +0 -31
- data/lib/oscal/telephone_number.rb +0 -11
- data/lib/oscal/test.rb +0 -11
- data/lib/oscal/url.rb +0 -11
- data/lib/oscal/value.rb +0 -37
- data/lib/oscal/with_id.rb +0 -40
- data/oscal.gemspec +0 -30
- data/sig/oscal.rbs +0 -4
- data/spec/oscal/assessment_plan_spec.rb +0 -21
- data/spec/oscal/catalog_spec.rb +0 -42
- data/spec/oscal_spec.rb +0 -18
- data/spec/sample_inputs/import-ap.json +0 -4
- data/spec/spec_helper.rb +0 -15
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Oscal
|
|
2
|
-
module ParsingFunctions
|
|
3
|
-
def sym2str(key)
|
|
4
|
-
if key.is_a?(Symbol)
|
|
5
|
-
key.to_s.gsub("-", "_").gsub("class", "klass")
|
|
6
|
-
elsif key.is_a?(String)
|
|
7
|
-
key
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def str2sym(var)
|
|
12
|
-
if var.is_a?(String)
|
|
13
|
-
var.gsub("-", "_").gsub("class", "klass").to_sym
|
|
14
|
-
elsif var.is_a?(Symbol)
|
|
15
|
-
var
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/oscal/part.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Part < Oscal::BaseClass
|
|
5
|
-
KEY = %i(id name ns klass title props prose parts links)
|
|
6
|
-
|
|
7
|
-
attr_accessor *KEY
|
|
8
|
-
|
|
9
|
-
attr_serializable *KEY
|
|
10
|
-
|
|
11
|
-
def set_value(key_name, val)
|
|
12
|
-
case key_name
|
|
13
|
-
when "props"
|
|
14
|
-
Property.wrap(val)
|
|
15
|
-
when "parts"
|
|
16
|
-
Part.wrap(val)
|
|
17
|
-
when "links"
|
|
18
|
-
Link.wrap(val)
|
|
19
|
-
else
|
|
20
|
-
val
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
data/lib/oscal/party.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Party < Oscal::BaseClass
|
|
5
|
-
KEY = %i(uuid type name short_name external_ids props links
|
|
6
|
-
email_addresses telephone_numbers addresses location_uuids
|
|
7
|
-
member_of_organizations remakrs)
|
|
8
|
-
|
|
9
|
-
attr_accessor *KEY
|
|
10
|
-
|
|
11
|
-
attr_serializable *KEY
|
|
12
|
-
|
|
13
|
-
def set_value(key_name, val)
|
|
14
|
-
case key_name
|
|
15
|
-
when "external_ids"
|
|
16
|
-
ExternalId.wrap(val)
|
|
17
|
-
when "props"
|
|
18
|
-
Property.wrap(val)
|
|
19
|
-
when "links"
|
|
20
|
-
Link.wrap(val)
|
|
21
|
-
when "email_addresses"
|
|
22
|
-
EmailAddress.wrap(val)
|
|
23
|
-
when "telephone_numbers"
|
|
24
|
-
TelephoneNumber.wrap(val)
|
|
25
|
-
when "addresses"
|
|
26
|
-
Address.wrap(val)
|
|
27
|
-
when "location_uuids"
|
|
28
|
-
LocationUuid.wrap(val)
|
|
29
|
-
when "member_of_organizations"
|
|
30
|
-
MemberOfOrganization.wrap(val)
|
|
31
|
-
else
|
|
32
|
-
val
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
data/lib/oscal/party_uuid.rb
DELETED
data/lib/oscal/profile.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
require_relative "serializer"
|
|
2
|
-
require_relative "common_utils"
|
|
3
|
-
|
|
4
|
-
module Oscal
|
|
5
|
-
class Profile
|
|
6
|
-
include Serializer
|
|
7
|
-
include CommonUtils
|
|
8
|
-
|
|
9
|
-
KEY = %i(uuid metadata imports merge modify back_matter)
|
|
10
|
-
attr_accessor *KEY
|
|
11
|
-
|
|
12
|
-
attr_serializable *KEY
|
|
13
|
-
|
|
14
|
-
def initialize(uuid, metadata, imports, merge, modify, back_matter)
|
|
15
|
-
@uuid = uuid
|
|
16
|
-
@metadata = MetadataBlock.new(metadata)
|
|
17
|
-
@imports = ImportObject.wrap(imports) if imports
|
|
18
|
-
@merge = Merge.wrap(merge) if merge
|
|
19
|
-
@modify = Modify.wrap(modify) if modify
|
|
20
|
-
@back_matter = BackMatter.wrap(back_matter) if back_matter
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.load_from_yaml(path)
|
|
24
|
-
yaml_data = safe_load_yaml(path)
|
|
25
|
-
yaml_profile = yaml_data["profile"]
|
|
26
|
-
|
|
27
|
-
uuid = yaml_profile["uuid"]
|
|
28
|
-
metadata = yaml_profile["metadata"]
|
|
29
|
-
imports = yaml_profile["imports"]
|
|
30
|
-
merge = yaml_profile["merge"]
|
|
31
|
-
modify = yaml_profile["modify"]
|
|
32
|
-
back_matter = yaml_profile["back-matter"]
|
|
33
|
-
|
|
34
|
-
Profile.new(uuid, metadata, imports, merge, modify, back_matter)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
data/lib/oscal/property.rb
DELETED
data/lib/oscal/remove.rb
DELETED
data/lib/oscal/resource.rb
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Resource < Oscal::BaseClass
|
|
5
|
-
KEY = %i(uuid title description props docuement_ids citation rlinks
|
|
6
|
-
base64 remarks)
|
|
7
|
-
|
|
8
|
-
attr_accessor *KEY
|
|
9
|
-
|
|
10
|
-
attr_serializable *KEY
|
|
11
|
-
|
|
12
|
-
def set_value(key_name, val)
|
|
13
|
-
case key_name
|
|
14
|
-
when "props"
|
|
15
|
-
Property.wrap(val)
|
|
16
|
-
when "document_ids"
|
|
17
|
-
DocumentId.wrap(val)
|
|
18
|
-
when "citation"
|
|
19
|
-
Citation.wrap(val)
|
|
20
|
-
when "rlinks"
|
|
21
|
-
Rlink.wrap(val)
|
|
22
|
-
when "base64"
|
|
23
|
-
Base64Object.wrap(val)
|
|
24
|
-
else
|
|
25
|
-
val
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class ResponsibleParty < Oscal::BaseClass
|
|
5
|
-
KEY = %i(role_id party_uuids props links remakrs)
|
|
6
|
-
|
|
7
|
-
attr_accessor *KEY
|
|
8
|
-
|
|
9
|
-
attr_serializable *KEY
|
|
10
|
-
|
|
11
|
-
def set_value(key_name, val)
|
|
12
|
-
case key_name
|
|
13
|
-
when "party_uuids"
|
|
14
|
-
PartyUuid.wrap(val)
|
|
15
|
-
when "props"
|
|
16
|
-
Property.wrap(val)
|
|
17
|
-
when "links"
|
|
18
|
-
Link.wrap(val)
|
|
19
|
-
else
|
|
20
|
-
val
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
data/lib/oscal/revision.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Revision < Oscal::BaseClass
|
|
5
|
-
KEY = %i(title published last_modified version oscal_version
|
|
6
|
-
props links remarks)
|
|
7
|
-
|
|
8
|
-
attr_accessor *KEY
|
|
9
|
-
|
|
10
|
-
attr_serializable *KEY
|
|
11
|
-
|
|
12
|
-
def set_value(key_name, val)
|
|
13
|
-
case key_name
|
|
14
|
-
when "props"
|
|
15
|
-
Property.wrap(val)
|
|
16
|
-
when "links"
|
|
17
|
-
Link.wrap(val)
|
|
18
|
-
else
|
|
19
|
-
val
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/lib/oscal/rlink.rb
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Rlink < Oscal::BaseClass
|
|
5
|
-
KEY = %i(href media_type hashes)
|
|
6
|
-
|
|
7
|
-
attr_accessor *KEY
|
|
8
|
-
|
|
9
|
-
attr_serializable *KEY
|
|
10
|
-
|
|
11
|
-
def set_value(key_name, val)
|
|
12
|
-
case key_name
|
|
13
|
-
when "hashes"
|
|
14
|
-
HashObject.wrap(val)
|
|
15
|
-
else
|
|
16
|
-
val
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
data/lib/oscal/role.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Role < Oscal::BaseClass
|
|
5
|
-
KEY = %i(id title short_name description props links remakrs)
|
|
6
|
-
|
|
7
|
-
attr_accessor *KEY
|
|
8
|
-
|
|
9
|
-
attr_serializable *KEY
|
|
10
|
-
|
|
11
|
-
def set_value(key_name, val)
|
|
12
|
-
case key_name
|
|
13
|
-
when "props"
|
|
14
|
-
Property.wrap(val)
|
|
15
|
-
when "links"
|
|
16
|
-
Link.wrap(val)
|
|
17
|
-
else
|
|
18
|
-
val
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
data/lib/oscal/select.rb
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Select < Oscal::BaseClass
|
|
5
|
-
KEY = %i(how_many choice)
|
|
6
|
-
|
|
7
|
-
attr_accessor *KEY
|
|
8
|
-
|
|
9
|
-
attr_serializable *KEY
|
|
10
|
-
|
|
11
|
-
def set_value(key_name, val)
|
|
12
|
-
case key_name
|
|
13
|
-
when "choice"
|
|
14
|
-
Choice.wrap(val)
|
|
15
|
-
else
|
|
16
|
-
val
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
data/lib/oscal/serializer.rb
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
require "yaml"
|
|
2
|
-
require "json"
|
|
3
|
-
|
|
4
|
-
module Oscal
|
|
5
|
-
module Serializer
|
|
6
|
-
def to_h
|
|
7
|
-
instance_variables.each_with_object({}) do |var, hash|
|
|
8
|
-
var_name = var.to_s.delete("@")
|
|
9
|
-
hash[var_name] = instance_variable_get(var)
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def to_json(*args)
|
|
14
|
-
to_h.to_json(*args)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def to_yaml
|
|
18
|
-
to_h.to_yaml
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def to_xml(builder)
|
|
22
|
-
raise NotImplementedError, "#{self.class}#to_xml not implemented!"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.included(klass)
|
|
26
|
-
klass.extend(ClassMethods)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
module ClassMethods
|
|
30
|
-
def from_h(data)
|
|
31
|
-
new(*data.values_at(*attribute_names))
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def from_json(json_string)
|
|
35
|
-
data = JSON.parse(json_string)
|
|
36
|
-
from_h(data)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def from_yaml(yaml_string)
|
|
40
|
-
data = YAML.safe_load(yaml_string)
|
|
41
|
-
from_h(data)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def from_xml(xml_element)
|
|
45
|
-
raise NotImplementedError, "#{self}#from_xml not implemented!"
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Psych >= 4 requires permitted_classes to load such classes
|
|
49
|
-
# https://github.com/ruby/psych/issues/533
|
|
50
|
-
def safe_load_yaml(path)
|
|
51
|
-
YAML.load_file(
|
|
52
|
-
path,
|
|
53
|
-
permitted_classes: [::Time, ::Date, ::DateTime],
|
|
54
|
-
)
|
|
55
|
-
rescue ArgumentError
|
|
56
|
-
YAML.load_file(path)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
private
|
|
60
|
-
|
|
61
|
-
def attribute_names
|
|
62
|
-
@attribute_names ||= []
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def attr_serializable(*attrs)
|
|
66
|
-
attrs.each do |attr|
|
|
67
|
-
attribute_names << attr.to_sym
|
|
68
|
-
define_method(attr) { instance_variable_get("@#{attr}") }
|
|
69
|
-
define_method("#{attr}=") do |value|
|
|
70
|
-
instance_variable_set("@#{attr}", value)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
data/lib/oscal/set_parameter.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class SetParameter < Oscal::BaseClass
|
|
5
|
-
KEY = %i(param_id klass depneds_on props links label usage
|
|
6
|
-
constraints guidelines values select)
|
|
7
|
-
|
|
8
|
-
attr_accessor *KEY
|
|
9
|
-
|
|
10
|
-
attr_serializable *KEY
|
|
11
|
-
|
|
12
|
-
def set_value(key_name, val)
|
|
13
|
-
case key_name
|
|
14
|
-
when "props"
|
|
15
|
-
Property.wrap(val)
|
|
16
|
-
when "links"
|
|
17
|
-
Link.wrap(val)
|
|
18
|
-
when "constraints"
|
|
19
|
-
Constraint.wrap(val)
|
|
20
|
-
when "guidelines"
|
|
21
|
-
Guideline.wrap(val)
|
|
22
|
-
when "values"
|
|
23
|
-
Value.wrap(val)
|
|
24
|
-
when "select"
|
|
25
|
-
Select.wrap(val)
|
|
26
|
-
else
|
|
27
|
-
val
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
data/lib/oscal/test.rb
DELETED
data/lib/oscal/url.rb
DELETED
data/lib/oscal/value.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class Value < Oscal::BaseClass
|
|
5
|
-
include Serializer
|
|
6
|
-
|
|
7
|
-
KEY = %i(val)
|
|
8
|
-
attr_accessor *KEY
|
|
9
|
-
|
|
10
|
-
attr_serializable *KEY
|
|
11
|
-
|
|
12
|
-
def self.wrap(obj)
|
|
13
|
-
return obj if obj.is_a? Value
|
|
14
|
-
return Value.new(obj) unless obj.is_a? Array
|
|
15
|
-
|
|
16
|
-
obj.map do |x|
|
|
17
|
-
Value.wrap(x)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def initialize(options = {})
|
|
22
|
-
unless options.is_a? Hash
|
|
23
|
-
options = { "val" => options }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
options.each_pair.each do |key, val|
|
|
27
|
-
key_name = key.gsub("-", "_")
|
|
28
|
-
|
|
29
|
-
unless KEY.include?(key_name.to_sym)
|
|
30
|
-
raise UnknownAttributeError.new("Unknown key `#{key}` in Value")
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
self.send("#{key_name}=", val)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
data/lib/oscal/with_id.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require_relative "base_class"
|
|
2
|
-
|
|
3
|
-
module Oscal
|
|
4
|
-
class WithId < Oscal::BaseClass
|
|
5
|
-
include Serializer
|
|
6
|
-
|
|
7
|
-
KEY = %i(val)
|
|
8
|
-
|
|
9
|
-
attr_accessor *KEY
|
|
10
|
-
|
|
11
|
-
attr_serializable *KEY
|
|
12
|
-
|
|
13
|
-
def self.wrap(obj)
|
|
14
|
-
return obj if obj.is_a? WithId
|
|
15
|
-
return WithId.new(obj) unless obj.is_a? Array
|
|
16
|
-
|
|
17
|
-
obj.map do |x|
|
|
18
|
-
WithId.wrap(x)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def initialize(options = {})
|
|
23
|
-
klass = self.class
|
|
24
|
-
|
|
25
|
-
unless options.is_a? Hash
|
|
26
|
-
options = { KEY.first.to_s => options }
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
options.each_pair.each do |key, val|
|
|
30
|
-
key_name = key.gsub("-", "_")
|
|
31
|
-
|
|
32
|
-
unless KEY.include?(key_name.to_sym)
|
|
33
|
-
raise UnknownAttributeError.new("Unknown key `#{key}` in #{klass.name}")
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
send("#{key_name}=", val)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
data/oscal.gemspec
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "lib/oscal/version"
|
|
4
|
-
|
|
5
|
-
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name = "oscal"
|
|
7
|
-
spec.version = Oscal::VERSION
|
|
8
|
-
spec.authors = ["Ribose Inc."]
|
|
9
|
-
spec.email = ["open.source@ribose.com"]
|
|
10
|
-
|
|
11
|
-
spec.summary = "Interact with OSCAL models"
|
|
12
|
-
spec.description = "Ruby library and parser for OSCAL models"
|
|
13
|
-
spec.homepage = "https://github.com/metanorma/oscal-ruby/"
|
|
14
|
-
spec.license = "BSD-2-Clause"
|
|
15
|
-
|
|
16
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
|
17
|
-
spec.metadata["source_code_uri"] = "https://github.com/metanorma/oscal-ruby/"
|
|
18
|
-
spec.metadata["changelog_uri"] = "https://github.com/metanorma/oscal-ruby/CHANGELOG"
|
|
19
|
-
|
|
20
|
-
spec.files = `git ls-files`.split("\n")
|
|
21
|
-
spec.executables = `git ls-files -- exe/*`.split("\n").map do |f|
|
|
22
|
-
File.basename(f)
|
|
23
|
-
end
|
|
24
|
-
spec.bindir = "exe"
|
|
25
|
-
spec.require_paths = ["lib"]
|
|
26
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
|
27
|
-
|
|
28
|
-
spec.add_dependency "yaml"
|
|
29
|
-
spec.metadata["rubygems_mfa_required"] = "true"
|
|
30
|
-
end
|
data/sig/oscal.rbs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../spec_helper"
|
|
4
|
-
|
|
5
|
-
RSpec.describe Oscal::AssessmentPlan::AssessmentPlan do
|
|
6
|
-
let(:fields) do
|
|
7
|
-
{
|
|
8
|
-
uuid: "4d56d1ab-d91e-4f7a-9055-1883c4e580b8",
|
|
9
|
-
metadata: {},
|
|
10
|
-
import_ssp: { href: "./ssp.json" },
|
|
11
|
-
reviewed_controls: { control_selections: [] },
|
|
12
|
-
}
|
|
13
|
-
end
|
|
14
|
-
subject { described_class.new(fields) }
|
|
15
|
-
|
|
16
|
-
describe "#to_json" do
|
|
17
|
-
it "generates a json representation of the assessment plan" do
|
|
18
|
-
expect(subject.to_json).to eq(JSON.generate(fields))
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
data/spec/oscal/catalog_spec.rb
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../spec_helper"
|
|
4
|
-
|
|
5
|
-
RSpec.describe Oscal::Catalog do
|
|
6
|
-
let(:subject) do
|
|
7
|
-
Oscal::Catalog.load_from_yaml(
|
|
8
|
-
"spec/oscal-content/examples/catalog/yaml/basic-catalog.yaml",
|
|
9
|
-
)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it "parses oscal-content YAML" do
|
|
13
|
-
expect(subject.class).to be Oscal::Catalog
|
|
14
|
-
expect(subject.groups.first.groups.first.controls.first.parts.first.prose).to eq(
|
|
15
|
-
"To establish a management framework to initiate and " \
|
|
16
|
-
"control the implementation and operation of information security " \
|
|
17
|
-
"within the organization.",
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "gets all controls" do
|
|
22
|
-
expect(subject.class).to be Oscal::Catalog
|
|
23
|
-
expect(subject.get_all_controls.count).to eq(4)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "find object by id" do
|
|
27
|
-
obj = subject.find_object_by_id("s2.1_smt")
|
|
28
|
-
expect(obj.to_s).to match(/Oscal::Part/)
|
|
29
|
-
expect(obj.prose).to eq(
|
|
30
|
-
"To limit access to information and information processing facilities.",
|
|
31
|
-
)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "find object by uuid" do
|
|
35
|
-
uuid = "74c8ba1e-5cd4-4ad1-bbfd-d888e2f6c724"
|
|
36
|
-
obj = subject.find_object_by_id(
|
|
37
|
-
uuid, subject, :uuid
|
|
38
|
-
)
|
|
39
|
-
expect(obj.to_s).to match(/Oscal::Catalog/)
|
|
40
|
-
expect(obj.uuid).to eq(uuid)
|
|
41
|
-
end
|
|
42
|
-
end
|
data/spec/oscal_spec.rb
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Oscal do
|
|
4
|
-
it "has a version number" do
|
|
5
|
-
expect(Oscal::VERSION).not_to be nil
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it "allows setting a new logger" do
|
|
9
|
-
logger = double(Logger)
|
|
10
|
-
Oscal::ParsingLogger.logger = logger
|
|
11
|
-
|
|
12
|
-
class LoggerTest
|
|
13
|
-
include Oscal::ParsingLogger
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
expect(LoggerTest.new.get_logger).to eq logger
|
|
17
|
-
end
|
|
18
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "oscal"
|
|
4
|
-
|
|
5
|
-
RSpec.configure do |config|
|
|
6
|
-
# Enable flags like --only-failures and --next-failure
|
|
7
|
-
config.example_status_persistence_file_path = ".rspec_status"
|
|
8
|
-
|
|
9
|
-
# Disable RSpec exposing methods globally on `Module` and `main`
|
|
10
|
-
config.disable_monkey_patching!
|
|
11
|
-
|
|
12
|
-
config.expect_with :rspec do |c|
|
|
13
|
-
c.syntax = :expect
|
|
14
|
-
end
|
|
15
|
-
end
|