From 51154c1d544fe96448ed59dcad2be55c41bed73f Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Mon, 24 Jun 2024 15:55:48 +0200 Subject: [PATCH] schema improvements: add additionalProperties: false to ensure closed types --- lib/jsonschema/example-schema.json | 2 ++ lib/jsonschema/test_parseOption.nix | 4 ++++ lib/jsonschema/test_parseOptions.nix | 2 ++ 3 files changed, 8 insertions(+) diff --git a/lib/jsonschema/example-schema.json b/lib/jsonschema/example-schema.json index 1538a680..a470b3e4 100644 --- a/lib/jsonschema/example-schema.json +++ b/lib/jsonschema/example-schema.json @@ -1,5 +1,6 @@ { "type": "object", + "additionalProperties": false, "properties": { "name": { "type": "string", @@ -38,6 +39,7 @@ }, "services": { "type": "object", + "additionalProperties": false, "properties": { "opt": { "type": "string", diff --git a/lib/jsonschema/test_parseOption.nix b/lib/jsonschema/test_parseOption.nix index 8471ed43..930eee44 100644 --- a/lib/jsonschema/test_parseOption.nix +++ b/lib/jsonschema/test_parseOption.nix @@ -278,6 +278,7 @@ in expr = slib.parseOption (evalType (lib.types.submodule subModule) { }); expected = { type = "object"; + additionalProperties = false; properties = { opt = { type = "boolean"; @@ -301,6 +302,7 @@ in expr = slib.parseOption (evalType (lib.types.submodule subModule) { }); expected = { type = "object"; + additionalProperties = false; properties = { opt = { type = "boolean"; @@ -331,6 +333,7 @@ in type = "object"; additionalProperties = { type = "object"; + additionalProperties = false; properties = { opt = { type = "boolean"; @@ -363,6 +366,7 @@ in type = "array"; items = { type = "object"; + additionalProperties = false; properties = { opt = { type = "boolean"; diff --git a/lib/jsonschema/test_parseOptions.nix b/lib/jsonschema/test_parseOptions.nix index 1faf6e3b..d32dde37 100644 --- a/lib/jsonschema/test_parseOptions.nix +++ b/lib/jsonschema/test_parseOptions.nix @@ -26,8 +26,10 @@ in { expr = slib.parseOptions evaled.options; expected = { + additionalProperties = false; properties = { foo = { + additionalProperties = false; properties = { bar = { type = "boolean";