Bug
crates/connector_configs/toml/production.toml is missing the [[santander.metadata.pix_automatico_push]] header before the pix_key_type entry, so that entry merges into the preceding client_secret element and the file fails to parse:
production.toml: TOML parse error at line 6594, column 1
|
6594 | name="pix_key_type"
| ^
duplicate key `name` in table `santander.metadata.pix_automatico_push`
development.toml and sandbox.toml both carry the header in that position, so this is a dropped line in one file rather than an intentional difference.
Impact is every connector, not santander
ConnectorConfig::new() parses a whole file in a single toml::from_str:
let config = toml::from_str::<Self>(config_str);
and both public entry points propagate the error with ?. So while this is present, a production build cannot load any connector's config — get_connector_config and get_payout_connector_config fail for every connector, including ones with nothing wrong in their own stanza.
toml is stricter than plain serde here: it rejects unknown keys in a table rather than ignoring them, which is what turns a single malformed stanza into a total parse failure.
Why CI does not catch this
crates/connector_configs has no tests at all — #[cfg(test)] appears zero times across all five source files, and there is no tests/ directory. The only consumers are euclid_wasm and the router's webhook-management transformer, both runtime paths. So a malformed TOML compiles cleanly, passes CI, and surfaces only when the dashboard asks for a connector config.
This is the second such defect found in the same files. #13868 (merged) fixed an unexpected keys in table: profile_id error in all three TOMLs; this one is independent and affects production.toml only. Both were present simultaneously, so production.toml needed both fixes before it would parse.
Steps to reproduce
cargo test -p connector_configs --features v1
with a parse test over all three shipped TOMLs. (--features v1 is required — -p scopes features to the package, and without it api_models fails to compile with unrelated E0432/E0599.)
Expected
All three shipped connector TOMLs deserialize, and a regression test fails loudly if one stops doing so.
Environment
Reproduced on main at 4e31a5f25, and on the current head after #13868 merged.
Bug
crates/connector_configs/toml/production.tomlis missing the[[santander.metadata.pix_automatico_push]]header before thepix_key_typeentry, so that entry merges into the precedingclient_secretelement and the file fails to parse:development.tomlandsandbox.tomlboth carry the header in that position, so this is a dropped line in one file rather than an intentional difference.Impact is every connector, not santander
ConnectorConfig::new()parses a whole file in a singletoml::from_str:and both public entry points propagate the error with
?. So while this is present, a production build cannot load any connector's config —get_connector_configandget_payout_connector_configfail for every connector, including ones with nothing wrong in their own stanza.tomlis stricter than plain serde here: it rejects unknown keys in a table rather than ignoring them, which is what turns a single malformed stanza into a total parse failure.Why CI does not catch this
crates/connector_configshas no tests at all —#[cfg(test)]appears zero times across all five source files, and there is notests/directory. The only consumers areeuclid_wasmand the router's webhook-management transformer, both runtime paths. So a malformed TOML compiles cleanly, passes CI, and surfaces only when the dashboard asks for a connector config.This is the second such defect found in the same files. #13868 (merged) fixed an
unexpected keys in table: profile_iderror in all three TOMLs; this one is independent and affectsproduction.tomlonly. Both were present simultaneously, soproduction.tomlneeded both fixes before it would parse.Steps to reproduce
with a parse test over all three shipped TOMLs. (
--features v1is required —-pscopes features to the package, and without itapi_modelsfails to compile with unrelatedE0432/E0599.)Expected
All three shipped connector TOMLs deserialize, and a regression test fails loudly if one stops doing so.
Environment
Reproduced on
mainat4e31a5f25, and on the current head after #13868 merged.