• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / supabase-flutter / 27963702382
85%

Build:
DEFAULT BRANCH: main
Ran 22 Jun 2026 03:24PM UTC
Jobs 8
Files 78
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jun 2026 03:22PM UTC coverage: 85.246% (-0.003%) from 85.249%
27963702382

push

github

web-flow
fix(gotrue): don't throw in verifyOTP when secure email/phone change returns no session (#1448)

## What kind of change does this PR introduce?

Bug fix.

## What is the current behavior?

Closes #981.

When secure email change is enabled, the email-change OTP flow is
two-step: the server accepts the **first** OTP and returns a `200` with
no session (`{msg: "Confirmation link accepted. Please proceed to
confirm link sent to the other email"}`), only issuing a session once
the **second** OTP is verified.

`verifyOTP` assumed every successful verification returns a session and
threw `AuthException('An error occurred on token verification.')`
whenever `session == null`, breaking the legitimate intermediate step.

## What is the new behavior?

`verifyOTP` now only saves the session and notifies subscribers when a
session is actually present, and returns the intermediate response
otherwise. This matches the `auth-js` client, which does not throw on a
null session.

## Additional context

- No API surface change: the signature and `AuthResponse` return type
are unchanged. Genuine server errors are still surfaced earlier by the
fetch layer (non-2xx responses), so this only affects the
previously-broken intermediate success case. Not a breaking change.
- The secondary report in the issue (a
`500`/`AuthRetryableFetchException` when supplying a *wrong* OTP) stems
from a runtime panic in the Go `auth` server's `/verify` handler, not
the Flutter client, so it is out of scope here.
- Updated the existing `response with null session` test to verify the
intermediate response is returned instead of throwing.

4 of 4 new or added lines in 1 file covered. (100.0%)

4085 of 4792 relevant lines covered (85.25%)

3.58 hits per line

Jobs
ID Job ID Ran Files Coverage
6 gotrue - 27963702382.6 22 Jun 2026 03:26PM UTC 26
83.52
GitHub Action Run
7 supabase_flutter - 27963702382.7 22 Jun 2026 03:25PM UTC 9
77.08
GitHub Action Run
8 supabase - 27963702382.8 22 Jun 2026 03:24PM UTC 15
82.38
GitHub Action Run
4 storage_client - 27952543454.4 22 Jun 2026 12:29PM UTC 5
93.0
GitHub Action Run
7 realtime_client - 27952543454.7 22 Jun 2026 12:30PM UTC 11
88.15
GitHub Action Run
1 postgrest - 27952543454.1 22 Jun 2026 12:30PM UTC 9
84.16
GitHub Action Run
2 functions_client - 27952543454.2 22 Jun 2026 12:27PM UTC 2
97.14
GitHub Action Run
3 yet_another_json_isolate - 27952543454.3 22 Jun 2026 12:27PM UTC 1
79.03
GitHub Action Run
Source Files on build 27963702382
  • Tree
  • List 78
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #27963702382
  • 44300aca on github
  • Prev Build on main (#27952543454)
  • Next Build on main (#27970191844)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc