Several eca_render_* actions have no config schema section, leaving their configuration unvalidated

Problem/Motivation

Several eca_render_* actions have no config schema section at all, so their entire configuration is unvalidated. Typed config falls back to undefined for them.

Affected plugins:

  • eca_render_markup
  • eca_render_lazy
  • eca_render_file_contents
  • eca_render_text:filter (derivative)
  • eca_render_image:image (derivative)
  • eca_render_responsive_image:responsive_image (derivative)

There is no action.configuration.eca_render_markup (or equivalent) mapping in modules/render/config/schema/eca_render.schema.yml, so none of their keys are described, constrained, or type-checked.

A visible symptom: these plugins extend RenderElementActionBase and therefore offer a mode field, but their mode does not inherit the constraints declared on eca_render.action_base (eca_render.schema.yml:108), because there is no per-plugin section to inherit from in the first place. During the audit for #3590375 (closed) these keys showed up as "no constraint" for exactly this reason.

Steps to reproduce

  1. Create an ECA model using eca_render_markup (or any plugin listed above).
  2. Set any configuration value, including a deliberately invalid one.
  3. Validate the model's config against its typed schema.

Result: no violations — the configuration is not validated at all. Expected: the plugin's keys are described by a schema mapping and validated like every other ECA action.

Proposed resolution

Add the missing action.configuration.eca_render_* mappings to modules/render/config/schema/eca_render.schema.yml, inheriting eca_render.action_base where appropriate so the shared mode and name keys pick up their existing definitions, and describing each plugin's own keys.

Note the derivative section naming convention already used elsewhere in the file, e.g. action.configuration.eca_render_views:views — the three derivatives above need the colon form.

Worth checking at the same time whether any other ECA action, in any sub-module, is missing its schema section. A test that asserts every ECA action plugin has a corresponding action.configuration.* mapping would prevent this class of gap from recurring.

Remaining tasks

  • Add the six missing schema sections
  • Audit all ECA sub-modules for other actions with no schema section
  • Consider a test asserting every action plugin has a schema mapping

User interface changes

None.

Data model changes

None — this describes existing configuration; it does not change it.


Found while auditing the config schema surface for #3590375 (closed).

AI-Generated: Yes (Used OpenCode to audit ECA's config schema coverage while implementing #3590375 (closed); this gap was found incidentally and verified against the 3.1.x source.)

Change record: #3616767

Edited by drupalbot