The GitHub Actions job "Required Checks" on texera.git/main has failed.
Run started by GitHub user github-merge-queue[bot] (triggered by 
github-merge-queue[bot]).

Head commit for run:
e4500eb0395e431b9f81279afd7b8cc1c423bf95 / Xinyuan Lin <[email protected]>
test(amber): cover the mail resource's address guard and admin fan-out (#7631)

### What changes were proposed in this PR?

`GmailResource` sat at **31.2% of 77 lines** in isolation. Despite the
name this is a **javax.mail/SMTP** resource, not a Google-OAuth one — no
`GoogleCredential`, no token exchange, no `clientId`, and the only
credential is an SMTP app password consumed inside an `Authenticator`
callback that never fires without a socket. Nothing worth testing here
was credential-gated.

Adds 4 tests to the existing spec, taking it to **61.0%**
(Codecov-style; 85.7% JaCoCo line). No socket is opened — the existing
`requireNoRealGmailSender()` guard is kept and called from every new
test that reaches `sendEmail`.

Covered: the recipient-format guard clause by clause, and the admin
fan-out driven through `MockTexeraDB`.

### Verification

9 mutations applied and reverted, production diff empty each time. The
interesting ones:

| Mutation | Result |
|---|---|
| role filter `ADMIN` → `REGULAR` | red — the REGULAR decoy row exists
to make this visible |
| `while (hasNext)` → notify only the first admin | red — which is why
the fixture holds two admins |
| `while` → `do/while` (assume at least one admin) | red on the
empty-table test |
| the TLD floor `{2,}` → `{1,}` | red |
| the null short-circuit dropped | red (NPE) |
| the regex replaced with `"^$"` (reject everything) | red — and the
six-case malformed list stayed **green**, which is exactly why its
companion test exists |
| the notification payload swapped for the raw request | **survives** —
see below |

One mutation exposed a coupling in my own fixture rather than a defect:
loosening the domain regex made the seeded `…@localhost` admin addresses
deliverable, which false-reddened the fan-out test. The fixture now uses
addresses with no `@` at all, so the fan-out is no longer coupled to the
regex's domain rules, and every mutation was re-run afterwards.

### Deliberately not included

- **The notification payload.** Replacing the whole
`userRegistrationNotification(...)` construction with the incoming
request leaves the suite green: `sendEmail` is on the companion object
so nothing can intercept what it received, and the only offline
observable is which address it rejected. The builder's contract —
including its `toAdmin` branch — is **already pinned by
`EmailTemplateSpec`**, which is where it belongs, so this is recorded
rather than duplicated.
- **`getSenderEmail`.** The analyst's plan listed this as a win; I
disagree and dropped it. Both `UserSystemConfig.gmail` and
`smtpPassword` default to `""` in an unconfigured JVM, so the only
available assertion cannot distinguish this endpoint from one that leaks
the SMTP password. A test there would be vacuous.
- **Two `catch` arms in `notifyUnauthorizedUser`** are unreachable —
`sendEmail` wraps everything in a `Try` and returns a `Left`, never
throwing. A comment says so and tells the next reader to delete them
rather than reach them.
- **The applicant acknowledgement, `createMimeMessage`'s tail, and the
`withDomain` `Some` arm** — the first has no observable effect offline,
the second arms `Transport.send` on the next statement, and the third
needs `Test/envVars` in `build.sbt`, which would perturb every other
spec.

No production file is touched.

### Any related issues, documentation, discussions?

Closes #7630

### How was this PR tested?

```
STORAGE_ICEBERG_CATALOG_TYPE=postgres sbt "WorkflowExecutionService/testOnly 
org.apache.texera.web.resource.GmailResourceSpec"
```

```
[info] Total number of tests run: 8
[info] Tests: succeeded 8, failed 0, canceled 0, ignored 0, pending 0
```

4 new on top of the existing 4. `Test/scalafmtCheck` and `Test/scalafix
--check` both pass.

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Opus 5)

Report URL: https://github.com/apache/texera/actions/runs/31775665285

With regards,
GitHub Actions via GitBox

Reply via email to