///|
test "context accepts exact problem json content type" {
assert_true(
validate_context(
unwrap_problem("{}"),
problem_context(None, Some("application/problem+json"), None),
).is_empty(),
)
}
///|
test "context accepts case insensitive content type" {
assert_true(
validate_context(
unwrap_problem("{}"),
problem_context(None, Some("Application/Problem+Json"), None),
).is_empty(),
)
}
///|
test "context accepts content type parameters" {
assert_true(
validate_context(
unwrap_problem("{}"),
problem_context(
None,
Some("application/problem+json;charset=utf-8"),
None,
),
).is_empty(),
)
}
///|
test "context rejects json content type" {
assert_true(
validate_context(
unwrap_problem("{}"),
problem_context(None, Some("application/json"), None),
)[0].kind() ==
InvalidContentType,
)
}
///|
test "context reports status mismatch" {
assert_true(
validate_context(
unwrap_problem("{\"status\":404}"),
problem_context(Some(500), None, None),
)[0].kind() ==
StatusMismatch,
)
}
///|
test "context accepts matching status" {
assert_true(
validate_context(
unwrap_problem("{\"status\":404}"),
problem_context(Some(404), None, None),
).is_empty(),
)
}
///|
test "context does not infer transport status" {
assert_true(
validate_context(
unwrap_problem("{\"status\":404}"),
problem_context(None, None, None),
).is_empty(),
)
}
///|
test "relative type requires base uri" {
assert_true(
validate_context(
unwrap_problem("{\"type\":\"relative\"}"),
problem_context(None, None, None),
)[0].kind() ==
MissingBaseUri,
)
}
///|
test "relative instance accepts absolute base uri" {
assert_true(
validate_context(
unwrap_problem("{\"instance\":\"/i\"}"),
problem_context(None, None, Some("https://example.com/")),
).is_empty(),
)
}
///|
test "relative instance rejects relative base uri" {
assert_true(
validate_context(
unwrap_problem("{\"instance\":\"/i\"}"),
problem_context(None, None, Some("base")),
)[0].kind() ==
InvalidBaseUri,
)
}
///|
test "absolute uris do not require base" {
assert_true(
validate_context(
unwrap_problem("{\"type\":\"urn:x\",\"instance\":\"https://e/i\"}"),
problem_context(None, None, None),
).is_empty(),
)
}
///|
test "missing raw type about blank does not require base" {
assert_true(
validate_context(unwrap_problem("{}"), problem_context(None, None, None)).is_empty(),
)
}