Skip to content

fix(firestore-send-email): kit/extension parity – invalid .env values leave mail unprocessed or silently change behaviour #3295

Closed

Description

@CorieW

firestore-send-email kit/extension parity. Priority: medium. Some bad or blank settings in .env stop mail without any ERROR state. Others silently change behaviour. The extension rejected all of these at install.

Difference

  • Extension: the platform rejects values outside a select list or regex, and fills blank optional params with their defaults.
  • Kit: values read from .env are never checked (only prompt answers are), and the runtime coerces them:
.env value Extension Kit
TTL_EXPIRE_TYPE=days (or a label such as Day) rejected at install deploys; every document is left with no delivery field. The only log is Unhandled error occurred during processing: Error: Unknown TTL expire type: days at INFO
SMTP_CONNECTION_URI= with AUTH_TYPE=UsernamePassword allowed every document is left with no delivery field; only a WARNING Invalid URI on each call
TTL_EXPIRE_VALUE = 0, abc or 1.5 / -1 rejected becomes 1 / expireAt in the past
AUTH_TYPE=oauth2 or ApiKey rejected silently uses the SMTP URI
OAUTH_SECURE=yes, TRUE or blank rejected / blank becomes true false
TLS_OPTIONS="{\"ca\":\"…\n…\"}" (double-quoted PEM) stored as typed the .env parser turns \n into newlines, the JSON fails to parse, and certificate checks are turned off with only a warning

The README says a bad value "fails at send time with delivery.state: ERROR". That isn't true for the first two rows.

Reproduced

  • TTL_EXPIRE_TYPE=days and a blank SMTP_CONNECTION_URI were each deployed on a kit instance. Documents written afterwards never got a delivery field, and the logs above appeared on every call.
  • Extensions validateOnly rejected days, 0, abc and oauth2.
  • The other rows come from running the kit's config code and the CLI's .env parser locally.

Code

Resolution

Validate select and int values once at startup, the way assertRequiredParams handles blanks, and fail loudly. That covers TTL_EXPIRE_TYPE, TTL_EXPIRE_VALUE, AUTH_TYPE, OAUTH_SECURE and a blank URI under UsernamePassword. Correct the README section, and tell users to single-quote JSON values in .env.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions