inspec/test/unit/schema/primivites_test.rb

72 lines
1.9 KiB
Ruby
Raw Normal View History

# Tests that the components of the schema generation framework are behaving properly
require "helper"
require "inspec/schema/primitives"
describe Inspec::Schema::Primitives do
describe "title construction" do
let(:schema_alpha) do
Inspec::Schema::Primitives::SchemaType.new("Alpha", {
"type" => "string",
}, [])
end
let(:schema_beta) do
Inspec::Schema::Primitives::SchemaType.new("Beta", {
"type" => "object",
"required" => [],
"properties" => {
"param1" => { "type" => "number" },
},
}, [])
end
# Omega nests alpha and beta
let(:schema_omega) do
Inspec::Schema::Primitives::SchemaType.new("Omega", {
"type" => "object",
"required" => ["my_beta"],
"properties" => {
"my_alpha" => schema_alpha.ref,
"my_beta" => schema_beta.ref,
},
}, [schema_alpha, schema_beta])
end
it "should add the title to schema bodies" do
_(schema_alpha.body["title"]).must_equal "Alpha"
_(schema_beta.body["title"]).must_equal "Beta"
_(schema_omega.body["title"]).must_equal "Omega"
end
it "should properly generate ref keys" do
skip "Test Unimplemented"
end
end
describe "property validation" do
it "detects if an object does not define required properties" do
_ {
Inspec::Schema::Primitives::SchemaType.new("Test1", {
"type" => "object",
"properties" => {
"hello" => { "type" => "string" },
},
}, [])
}.must_raise RuntimeError
end
it "detects if a required property is missing" do
_ {
Inspec::Schema::Primitives::SchemaType.new("Test2", {
"type" => "object",
"required" => %w{alpha beta},
"properties" => {
"alpha" => { "type" => "number" },
"omega" => { "type" => "number" },
},
}, [])
}.must_raise RuntimeError
end
end
end