This commit is contained in:
2 files changed
+7
-7
No files matched your search
@@ -103,10 +103,9 @@ object GatewayContract {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val missingRequired =
|
// No exemptions: decorate() skips injection when no profile is active, so a required `profile`
|
||||||
required.filter { reqName ->
|
// must be declared like any other required param.
|
||||||
reqName !in elementNames && reqName != "profile"
|
val missingRequired = required.filter { it !in elementNames }
|
||||||
}
|
|
||||||
for (missing in missingRequired) {
|
for (missing in missingRequired) {
|
||||||
problems += "$method: missing required param '$missing'"
|
problems += "$method: missing required param '$missing'"
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -94,13 +94,14 @@ class ParamsDescriptorCheckTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun omittingProfilePassesEvenWhenRequiredBySchema() {
|
fun omittingRequiredProfileIsRejectedLikeAnyRequiredParam() {
|
||||||
// bot_relay.deliver has required: ["profile", "message"]
|
// bot_relay.deliver has required: ["profile", "message"]. Profile injection is skipped when no
|
||||||
|
// profile is active, so `profile` gets no special treatment: the params class must declare it.
|
||||||
val problems =
|
val problems =
|
||||||
GatewayContract.paramsDescriptorProblems(
|
GatewayContract.paramsDescriptorProblems(
|
||||||
"bot_relay.deliver",
|
"bot_relay.deliver",
|
||||||
DeliverMissingProfileParams.serializer().descriptor,
|
DeliverMissingProfileParams.serializer().descriptor,
|
||||||
)
|
)
|
||||||
assertTrue(problems.joinToString("\n"), problems.isEmpty())
|
assertEquals(1, problems.count { "missing required param 'profile'" in it })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user