diff --git a/remotes/different-id-ref-string.json b/remotes/different-id-ref-string.json new file mode 100644 index 00000000..7f888609 --- /dev/null +++ b/remotes/different-id-ref-string.json @@ -0,0 +1,5 @@ +{ + "$id": "http://localhost:1234/real-id-ref-string.json", + "$defs": {"bar": {"type": "string"}}, + "$ref": "#/$defs/bar" +} diff --git a/remotes/nested-absolute-ref-to-string.json b/remotes/nested-absolute-ref-to-string.json new file mode 100644 index 00000000..f46c7616 --- /dev/null +++ b/remotes/nested-absolute-ref-to-string.json @@ -0,0 +1,9 @@ +{ + "$defs": { + "bar": { + "$id": "http://localhost:1234/the-nested-id.json", + "type": "string" + } + }, + "$ref": "http://localhost:1234/the-nested-id.json" +} diff --git a/remotes/urn-ref-string.json b/remotes/urn-ref-string.json new file mode 100644 index 00000000..aca2211b --- /dev/null +++ b/remotes/urn-ref-string.json @@ -0,0 +1,5 @@ +{ + "$id": "urn:uuid:feebdaed-ffff-0000-ffff-0000deadbeef", + "$defs": {"bar": {"type": "string"}}, + "$ref": "#/$defs/bar" +} diff --git a/tests/draft-next/ref.json b/tests/draft-next/ref.json index 189eb41a..3288815f 100644 --- a/tests/draft-next/ref.json +++ b/tests/draft-next/ref.json @@ -830,5 +830,30 @@ "valid": false } ] + }, + { + "description": "URN ref with nested pointer ref", + "schema": { + "$ref": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", + "$defs": { + "foo": { + "$id": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", + "$defs": {"bar": {"type": "string"}}, + "$ref": "#/$defs/bar" + } + } + }, + "tests": [ + { + "description": "a string is valid", + "data": "bar", + "valid": true + }, + { + "description": "a non-string is invalid", + "data": 12, + "valid": false + } + ] } ] diff --git a/tests/draft-next/refRemote.json b/tests/draft-next/refRemote.json index a8440396..0156b8dd 100644 --- a/tests/draft-next/refRemote.json +++ b/tests/draft-next/refRemote.json @@ -229,5 +229,53 @@ "valid": true } ] + }, + { + "description": "remote HTTP ref with different $id", + "schema": {"$ref": "http://localhost:1234/different-id-ref-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] + }, + { + "description": "remote HTTP ref with different URN $id", + "schema": {"$ref": "http://localhost:1234/urn-ref-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] + }, + { + "description": "remote HTTP ref with nested absolute ref", + "schema": {"$ref": "http://localhost:1234/nested-absolute-ref-to-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] } ] diff --git a/tests/draft2019-09/ref.json b/tests/draft2019-09/ref.json index 6d1e90e0..80c7e5b5 100644 --- a/tests/draft2019-09/ref.json +++ b/tests/draft2019-09/ref.json @@ -830,5 +830,30 @@ "valid": false } ] + }, + { + "description": "URN ref with nested pointer ref", + "schema": { + "$ref": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", + "$defs": { + "foo": { + "$id": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", + "$defs": {"bar": {"type": "string"}}, + "$ref": "#/$defs/bar" + } + } + }, + "tests": [ + { + "description": "a string is valid", + "data": "bar", + "valid": true + }, + { + "description": "a non-string is invalid", + "data": 12, + "valid": false + } + ] } ] diff --git a/tests/draft2019-09/refRemote.json b/tests/draft2019-09/refRemote.json index a8440396..0156b8dd 100644 --- a/tests/draft2019-09/refRemote.json +++ b/tests/draft2019-09/refRemote.json @@ -229,5 +229,53 @@ "valid": true } ] + }, + { + "description": "remote HTTP ref with different $id", + "schema": {"$ref": "http://localhost:1234/different-id-ref-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] + }, + { + "description": "remote HTTP ref with different URN $id", + "schema": {"$ref": "http://localhost:1234/urn-ref-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] + }, + { + "description": "remote HTTP ref with nested absolute ref", + "schema": {"$ref": "http://localhost:1234/nested-absolute-ref-to-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] } ] diff --git a/tests/draft2020-12/ref.json b/tests/draft2020-12/ref.json index d6300472..960fadd1 100644 --- a/tests/draft2020-12/ref.json +++ b/tests/draft2020-12/ref.json @@ -830,5 +830,30 @@ "valid": false } ] + }, + { + "description": "URN ref with nested pointer ref", + "schema": { + "$ref": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", + "$defs": { + "foo": { + "$id": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", + "$defs": {"bar": {"type": "string"}}, + "$ref": "#/$defs/bar" + } + } + }, + "tests": [ + { + "description": "a string is valid", + "data": "bar", + "valid": true + }, + { + "description": "a non-string is invalid", + "data": 12, + "valid": false + } + ] } ] diff --git a/tests/draft2020-12/refRemote.json b/tests/draft2020-12/refRemote.json index a8440396..0156b8dd 100644 --- a/tests/draft2020-12/refRemote.json +++ b/tests/draft2020-12/refRemote.json @@ -229,5 +229,53 @@ "valid": true } ] + }, + { + "description": "remote HTTP ref with different $id", + "schema": {"$ref": "http://localhost:1234/different-id-ref-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] + }, + { + "description": "remote HTTP ref with different URN $id", + "schema": {"$ref": "http://localhost:1234/urn-ref-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] + }, + { + "description": "remote HTTP ref with nested absolute ref", + "schema": {"$ref": "http://localhost:1234/nested-absolute-ref-to-string.json"}, + "tests": [ + { + "description": "number is invalid", + "data": 1, + "valid": false + }, + { + "description": "string is valid", + "data": "foo", + "valid": true + } + ] } ]