///|
test "validator accepts an empty problem" {
assert_true(validate_problem(unwrap_problem("{}")).is_empty())
}
///|
test "validator accepts relative uri references" {
assert_true(
validate_problem(
unwrap_problem("{\"type\":\"relative\",\"instance\":\"/i\"}"),
).is_empty(),
)
}
///|
test "validator rejects invalid type uri" {
assert_true(
validate_problem(unwrap_problem("{\"type\":\"bad uri\"}"))[0].kind() ==
InvalidTypeUri,
)
}
///|
test "validator rejects invalid instance uri" {
assert_true(
validate_problem(unwrap_problem("{\"instance\":\"/%xx\"}"))[0].kind() ==
InvalidInstanceUri,
)
}
///|
test "validator accepts status lower boundary" {
assert_true(validate_problem(unwrap_problem("{\"status\":100}")).is_empty())
}
///|
test "validator accepts status upper boundary" {
assert_true(validate_problem(unwrap_problem("{\"status\":599}")).is_empty())
}
///|
test "validator rejects status below boundary" {
assert_true(
validate_problem(unwrap_problem("{\"status\":99}"))[0].kind() ==
InvalidStatusCode,
)
}
///|
test "validator rejects status above boundary" {
assert_true(
validate_problem(unwrap_problem("{\"status\":600}"))[0].kind() ==
InvalidStatusCode,
)
}
///|
test "is valid problem follows semantic validator" {
assert_false(is_valid_problem(unwrap_problem("{\"status\":999}")))
}
///|
test "common status reasons are available" {
assert_str_eq(status_reason(415).unwrap(), "Unsupported Media Type")
}
///|
test "unknown reason phrase is absent" {
assert_true(status_reason(299) is None)
}
///|
test "status range helper is generic" {
assert_true(is_valid_http_status(218))
assert_false(is_valid_http_status(700))
}