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

bleedingdeacons / unity / 34000837058
96%

Build:
DEFAULT BRANCH: main
Ran 06 Sep 2026 12:18AM UTC
Jobs 1
Files 9
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

06 Sep 2026 12:16AM UTC coverage: 93.827% (-0.3%) from 94.079%
34000837058

push

github

web-flow
feat: declare a shared member password store (#68)

* feat: own the member password store, so both apps share one

Reach and Fellowship each carried an identical PasswordCredential, an
identical repository contract, an identical wpdb implementation and an
identical table. The consequence was not duplication for its own sake:
a member who set a password in Reach could not sign into Link with it,
and a reset in one left the other's row stale with nothing anywhere to
say so. A member has one password, not one per app.

Unity owns member data and both plugins already require it, so the one
answer lives here, in wp_unity_credentials, bound in the container as
Unity\Auth\Interfaces\PasswordCredentialRepository.

Registered by UnityServiceProvider rather than left to the consuming
site, unlike every other repository: this one has an implementation
Unity ships, because it is backed by a table Unity owns rather than by
the site's own post types.

install() also absorbs the two tables it replaces. The newer row wins,
decided on updated_at, so a member holding a different password in each
keeps the one they last set — and running it twice, or in either order,
reaches the same answer. The old tables are not dropped: this is the
only copy of some members' passwords, the migration runs unattended on
an admin page load, and a bad one that has destroyed its source is not
recoverable. Somebody removes them deliberately once this is seen to
work.

Not an activation hook, because it would never fire. Unity is already
active wherever Reach or Fellowship are, and WordPress does not re-run
activation hooks on an update. A version-gated check on admin_init is
the only thing that reaches an existing install, which is every install
that matters. Amber's migrations work the same way for the same reason.

113 tests, up from 91; line coverage 88.89%.

* feat: ship an in-memory credential store double for the consumers

Reach and Fellowship both authenticate against the shared st... (continued)

152 of 162 relevant lines covered (93.83%)

3.04 hits per line

Jobs
ID Job ID Ran Files Coverage
1 34000837058.1 06 Sep 2026 12:18AM UTC 9
93.83
GitHub Action Run
Source Files on build 34000837058
  • Tree
  • List 9
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34000837058
  • a4f56f49 on github
  • Prev Build on main (#33975427321)
  • Next Build on main (#34259131029)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc