Skip to content

connector_configs: production.toml fails to parse, disabling every connector's config lookup #13874

Description

@abhisheksharma2411

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions