diff --git a/app/src/test/java/com/m57/hermescontrol/data/ws/GatewayContract.kt b/app/src/test/java/com/m57/hermescontrol/data/ws/GatewayContract.kt index a5d9530b..3abf299e 100644 --- a/app/src/test/java/com/m57/hermescontrol/data/ws/GatewayContract.kt +++ b/app/src/test/java/com/m57/hermescontrol/data/ws/GatewayContract.kt @@ -103,10 +103,9 @@ object GatewayContract { } } - val missingRequired = - required.filter { reqName -> - reqName !in elementNames && reqName != "profile" - } + // No exemptions: decorate() skips injection when no profile is active, so a required `profile` + // must be declared like any other required param. + val missingRequired = required.filter { it !in elementNames } for (missing in missingRequired) { problems += "$method: missing required param '$missing'" } diff --git a/app/src/test/java/com/m57/hermescontrol/data/ws/contract/ParamsDescriptorCheckTest.kt b/app/src/test/java/com/m57/hermescontrol/data/ws/contract/ParamsDescriptorCheckTest.kt index eb4468db..c5777015 100644 --- a/app/src/test/java/com/m57/hermescontrol/data/ws/contract/ParamsDescriptorCheckTest.kt +++ b/app/src/test/java/com/m57/hermescontrol/data/ws/contract/ParamsDescriptorCheckTest.kt @@ -94,13 +94,14 @@ class ParamsDescriptorCheckTest { } @Test - fun omittingProfilePassesEvenWhenRequiredBySchema() { - // bot_relay.deliver has required: ["profile", "message"] + fun omittingRequiredProfileIsRejectedLikeAnyRequiredParam() { + // 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 = GatewayContract.paramsDescriptorProblems( "bot_relay.deliver", DeliverMissingProfileParams.serializer().descriptor, ) - assertTrue(problems.joinToString("\n"), problems.isEmpty()) + assertEquals(1, problems.count { "missing required param 'profile'" in it }) } }