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

archetech / archon / 30767097536
94%

Build:
DEFAULT BRANCH: main
Ran 02 Aug 2026 09:08PM UTC
Jobs 1
Files 88
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

02 Aug 2026 09:05PM UTC coverage: 93.207% (+0.2%) from 93.016%
30767097536

push

github

web-flow
test(keymaster): cover validation guards and DIDComm rejection paths (#829)

keymaster.ts sat at 83.7% branches — the suites drive it along happy
paths, leaving validation guards and "already in the desired state"
short-circuits untaken. 30 tests take it to 84.9% (148 -> 137 missed).

Guards: normalizeAddressDomain against empty, whitespace, non-string,
null, undefined, `https://` and `://`, plus confirmation that a scheme is
stripped, case lowered and a non-default port retained in the host;
removeAddress rejecting an unknown address and one whose stored name
differs; checkAddress reporting 'unreachable' rather than throwing;
listAliases with and without includeIDs; verifyResponse's rejection paths.

DIDComm, targeting envelope security rather than error strings:

- packDidComm strips a caller-supplied `from` on an anoncrypt envelope.
  The code spreads the caller's message first, then forces typ/to and
  deletes from, so a caller cannot smuggle an impersonated sender into an
  unauthenticated envelope. Asserted by packing {from: 'did:cid:
  impersonated'} and checking it is gone after unpack.
- unpackDidComm rejects an envelope addressed to another identity — pack
  for alice, switch to bob, expect rejection. That check is what stops
  one identity opening another's mail.
- Signing round trip asserting nonRepudiation and a signer kid matching
  the sender; gateway delivery and mailbox failures; a recipient with no
  DIDCommMessaging endpoint; unpublishDidComm being idempotent and
  actually removing both the #key-agreement-1 VM and the #didcomm service.

Three of my own mistakes are worth recording, since each produced a test
that looked fine:

- One assertion iterated `fetchSpy.mock.calls` when fetch had never been
  called (importAddress throws at fetchIdInfo first), so the loop ran zero
  times and proved nothing. Now creates an ID first and asserts the call
  count, so it cannot pass vacuously.
- A test claimed deleting seed.mnemonicEnc would ex... (continued)

3544 of 4060 branches covered (87.29%)

Branch coverage included in aggregate %.

8173 of 8511 relevant lines covered (96.03%)

686.56 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30767097536.1 02 Aug 2026 09:08PM UTC 176
94.34
GitHub Action Run
Source Files on build 30767097536
  • Tree
  • List 88
  • Changed 73
  • Source Changed 0
  • Coverage Changed 73
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30767097536
  • aa67beb3 on github
  • Prev Build on main (#30766329840)
  • Next Build on main (#30769471261)
  • Delete
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