Skip to content

Commit

Permalink
allowed-values enumeration tests for usnistgov#240.
Browse files Browse the repository at this point in the history
  • Loading branch information
aj-stein-nist committed Nov 10, 2022
1 parent bf0f35d commit 48d81dd
Show file tree
Hide file tree
Showing 14 changed files with 1,251 additions and 0 deletions.
88 changes: 88 additions & 0 deletions test-suite/metaschema-xspec/json-schema-gen/json-schema-gen.xspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- autogenerated 2021-12-14T16:02:57.305-05:00 following model in example-set.xspec-->
<x:description xmlns:x="http://www.jenitennison.com/xslt/xspec"
xmlns:m="http://csrc.nist.gov/ns/oscal/metaschema/1.0"
xmlns:j="http://www.w3.org/2005/xpath-functions"
stylesheet="../../../toolchains/xslt-M4/schema-gen/make-json-schema-metamap.xsl"
run-as="external" xmlns:ov="http://csrc.nist.gov/ns/oscal/test/variable">


<!--<x:scenario label="Base test">
<!-\- Alternative model for test scrubbing both the result and the expected
result for comparison -\->
<x:context href="profile-resolution-examples/base-test_profile.xml"/>
<x:variable name="ov:expected-output"
href="profile-resolution-examples/output-expected/base-test_profile_RESOLVED.xml"/>
<x:expect label="Base test - fully resolved"
test="opr:scrub($x:result)" select="opr:scrub($ov:expected-output)"/>
</x:scenario>-->

<!--unconstrained constrained-open constrained-closed constrained-narrow constrained-sortof-->
<x:scenario label="defining a token value with no enumerations">
<x:context href="json-value-testing-mini-metaschema-COMPOSED.xml"
select="/*/m:define-field[@name='unconstrained']"/>
<x:expect label="the result should exclude enumerations" xmlns="http://www.w3.org/2005/xpath-functions">
<map key="oscal-value-testing-mini-oscal-value-testing-mini:unconstrained">
<string key="title">Unconstrained</string>
<string key="description">A field whose value is constrained only by its nominal datatype, 'token'.</string>
<string key="$id">#field_oscal-value-testing-mini_unconstrained</string>
<string key="type">object</string>
<map key="properties">
<map key="some">
<string key="title">Some Flag</string>
<string key="description">Some flag some flag some flag.</string>
<string key="$ref">#/definitions/StringDatatype</string>
</map>
<map key="token-value">
<string key="$ref">#/definitions/TokenDatatype</string>
</map>
</map>
<array key="required">
<string>token-value</string>
</array>
<boolean key="additionalProperties">false</boolean>
</map>
</x:expect>
</x:scenario>

<x:scenario label="defining a token value with enumerations">
<x:context href="json-value-testing-mini-metaschema-COMPOSED.xml"
select="/*/m:define-field[@name='constrained-closed']"/>
<x:expect label="the result should *include* enumerations"
xmlns="http://www.w3.org/2005/xpath-functions">
<map key="oscal-value-testing-mini-oscal-value-testing-mini:constrained-closed">
<string key="title">Constrained closed</string>
<string key="description">Because allow-other is 'no' an enumeration can be given in the JSON Schema.</string>
<string key="$id">#field_oscal-value-testing-mini_constrained-closed</string>
<string key="type">object</string>
<map key="properties">
<map key="some">
<string key="title">Some Flag</string>
<string key="description">Some flag some flag some flag.</string>
<string key="$ref">#/definitions/StringDatatype</string>
</map>
<map key="token-value">
<array key="allOf">
<map>
<string key="$ref">#/definitions/TokenDatatype</string>
</map>
<map>
<array key="enum">
<string>one</string>
<string>two</string>
<string>three</string>
<string>four</string>
</array>
</map>
</array>
</map>
</map>
<array key="required">
<string>token-value</string>
</array>
<boolean key="additionalProperties">false</boolean>
</map>
</x:expect>
</x:scenario>

</x:description>
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
{ "$schema" : "http://json-schema.org/draft-07/schema#",
"$id" : "http://csrc.nist.gov/ns/oscal/0.1/oscal-value-testing-mini-schema.json",
"$comment" : "JSON value testing mini metaschema: JSON Schema",
"type" : "object",
"definitions" :
{ "oscal-value-testing-mini-oscal-value-testing-mini:root" :
{ "title" : "Root",
"description" : "Root root root.",
"$id" : "#assembly_oscal-value-testing-mini_root",
"type" : "object",
"properties" :
{ "unconstrained" :
{ "$ref" : "#field_oscal-value-testing-mini_unconstrained" },
"constrained-open" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-open" },
"constrained-closed" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-closed" },
"constrained-narrow" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-narrow" },
"constrained-sortof" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-sortof" } },
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:unconstrained" :
{ "title" : "Unconstrained",
"description" : "A field whose value is constrained only by its nominal datatype, 'token'.",
"$id" : "#field_oscal-value-testing-mini_unconstrained",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "type" : "string" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-open" :
{ "title" : "Constrained open",
"description" : "Because allow-other is 'yes' no enumeration can be given in the JSON Schema.",
"$id" : "#field_oscal-value-testing-mini_constrained-open",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "type" : "string" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-closed" :
{ "title" : "Constrained closed",
"description" : "Because allow-other is 'no' an enumeration can be given in the JSON Schema.",
"$id" : "#field_oscal-value-testing-mini_constrained-closed",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "type" : "string",
"enum" :
[ "one",
"two",
"three",
"four" ] } },
"required" :
[ "token-value" ],
"additionalProperties" : false
},
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-narrow" :
{ "title" : "Constrained narrow",
"description" : "Although allow-other is 'no' an enumeration can't be given in the JSON Schema since it targets a qualified set (only a subset) of the elements in scope.",
"$id" : "#field_oscal-value-testing-mini_constrained-narrow",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "type" : "string" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-sortof" :
{ "title" : "Constrained, sort of",
"description" : "Although allow-other is 'no' an enumeration can't be given in the JSON Schema since it targets a qualified set (only a subset) of the elements in scope.",
"$id" : "#field_oscal-value-testing-mini_constrained-sortof",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "type" : "string" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"StringDatatype" :
{ "type" : "string",
"pattern" : "^\\S(.*\\S)?$" },
"TokenDatatype" :
{ "type" : "string",
"pattern" : "^(\\p{L}|_)(\\p{L}|\\p{N}|[.\\-_])*$" } },
"properties" :
{ "root" :
{ "$ref" : "#assembly_oscal-value-testing-mini_root" } },
"required" :
[ "root" ],
"additionalProperties" : false,
"maxProperties" : 1 }
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
{ "$schema" : "http://json-schema.org/draft-07/schema#",
"$id" : "http://csrc.nist.gov/ns/oscal/0.1/oscal-value-testing-mini-schema.json",
"$comment" : "JSON value testing mini metaschema: JSON Schema",
"type" : "object",
"definitions" :
{ "oscal-value-testing-mini-oscal-value-testing-mini:root" :
{ "title" : "Root",
"description" : "Root root root.",
"$id" : "#assembly_oscal-value-testing-mini_root",
"type" : "object",
"properties" :
{ "unconstrained" :
{ "$ref" : "#field_oscal-value-testing-mini_unconstrained" },
"constrained-open" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-open" },
"constrained-closed" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-closed" },
"constrained-narrow" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-narrow" },
"constrained-sortof" :
{ "$ref" : "#field_oscal-value-testing-mini_constrained-sortof" } },
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:unconstrained" :
{ "title" : "Unconstrained",
"description" : "A field whose value is constrained only by its nominal datatype, 'token'.",
"$id" : "#field_oscal-value-testing-mini_unconstrained",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "$ref" : "#/definitions/TokenDatatype"
} },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-open" :
{ "title" : "Constrained open",
"description" : "Because allow-other is 'yes' no enumeration can be given in the JSON Schema.",
"$id" : "#field_oscal-value-testing-mini_constrained-open",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "$ref" : "#/definitions/TokenDatatype" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-closed" :
{ "title" : "Constrained closed",
"description" : "Because allow-other is 'no' an enumeration can be given in the JSON Schema.",
"$id" : "#field_oscal-value-testing-mini_constrained-closed",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "$ref" : "#/definitions/TokenDatatype" } },
"required" :
[ "token-value" ],
"additionalProperties" : false
},
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-narrow" :
{ "title" : "Constrained narrow",
"description" : "Although allow-other is 'no' an enumeration can't be given in the JSON Schema since it targets a qualified set (only a subset) of the elements in scope.",
"$id" : "#field_oscal-value-testing-mini_constrained-narrow",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "$ref" : "#/definitions/TokenDatatype" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"oscal-value-testing-mini-oscal-value-testing-mini:constrained-sortof" :
{ "title" : "Constrained, sort of",
"description" : "Although allow-other is 'no' an enumeration can't be given in the JSON Schema since it targets a qualified set (only a subset) of the elements in scope.",
"$id" : "#field_oscal-value-testing-mini_constrained-sortof",
"type" : "object",
"properties" :
{ "some" :
{ "title" : "Some Flag",
"description" : "Some flag some flag some flag.",
"$ref" : "#/definitions/StringDatatype" },
"token-value" :
{ "type" : "string" } },
"required" :
[ "token-value" ],
"additionalProperties" : false },
"StringDatatype" :
{ "type" : "string",
"pattern" : "^\\S(.*\\S)?$" },
"TokenDatatype" :
{ "type" : "string",
"pattern" : "^(\\p{L}|_)(\\p{L}|\\p{N}|[.\\-_])*$" } },
"properties" :
{ "root" :
{ "$ref" : "#assembly_oscal-value-testing-mini_root" } },
"required" :
[ "root" ],
"additionalProperties" : false,
"maxProperties" : 1 }
Loading

0 comments on commit 48d81dd

Please sign in to comment.