O teste que você parece querer impor é este:
A && !(B || C)
... mas isso não é logicamente equivalente ao que você escreveu, que é essencialmente isso ...
(A && !B) || (A && !C)
O equivalente lógico de A && !(B || C)
sem usar parênteses para precedência é, na verdade, este:
A && !B && !C
Então, o que você está procurando deve ser isso:
http-request deny if is_test !is_allowed !is_devtool
Ou, para reformular: negue a solicitação se -
- corresponde a
is_test
, e - não corresponde a
is_allowed
, e - não corresponde a
is_devtool
Desde que qualquer uma dessas condições seja falsa (não é test, é permitido, é devtool) sua regra não corresponde e não nega a solicitação.