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

decentraland / world-storage-service / 31742276244
99%

Build:
DEFAULT BRANCH: main
Ran 13 Aug 2026 08:44PM UTC
Jobs 1
Files 58
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

13 Aug 2026 08:43PM UTC coverage: 98.68%. Remained the same
31742276244

push

github

web-flow
fix: route ENS worlds through world permission checks (#115)

* fix: route ENS worlds through world permission checks

isDclWorldName matched only the `.dcl.eth` suffix, but worlds-content-server
treats any `.eth` name as a world and resolves its owner on chain
(name-ownership.ts routes `.eth && !.dcl.eth` to ENS ownership).
ALLOW_ENS_DOMAINS is set in the shared service definition, so ENS worlds are
live in every environment.

An ENS realm therefore failed the world check in sceneContextMiddleware and was
silently rewritten to the Genesis City realm `main`, with the parcel defaulting
to `0,0`. Two consequences followed from that single rewrite:

- Authorization moved from ENS name ownership to Genesis City LAND rights at
  the base parcel, since isSharedRealmName is the negation. The world's actual
  owner holds no LAND there and was denied, while whoever holds LAND rights at
  that parcel was authorized to list, upsert and delete the world's `/values`
  storage and its scene env entries.
- Storage was keyed ('main', placeId) with the ENS name absent from the key, so
  every ENS world sharing a base parcel collapsed into one bucket.

Widen the predicate to `.eth`, which subsumes `.dcl.eth`, and rename it to
isWorldName so the name no longer implies DCL NAMEs only. isSharedRealmName
stays its negation, so the correction reaches permission routing, Places
resolution, the quota advisory-lock scope and the per-world SQL aggregation in
the world, player and env storage adapters. Doc comments stating the old
`*.dcl.eth` routing rule are updated alongside it.

An ENS world that Places does not index now fails closed with a 400 from
resolvePlaceId rather than resolving a Genesis City place, matching how an
unlisted `.dcl.eth` world already behaves.

No data migration is included. Rows already written under the rewritten scope
carry no record of the originating world name, so they cannot be attributed
back to an ENS world and separated from genuine Genesis Ci... (continued)

424 of 438 branches covered (96.8%)

Branch coverage included in aggregate %.

8 of 8 new or added lines in 3 files covered. (100.0%)

1146 of 1153 relevant lines covered (99.39%)

71.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31742276244.1 13 Aug 2026 08:44PM UTC 116
98.88
GitHub Action Run
Source Files on build 31742276244
  • Tree
  • List 58
  • Changed 35
  • Source Changed 9
  • Coverage Changed 35
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31742276244
  • ac09a1bf on github
  • Prev Build on main (#31192501471)
  • Next Build on main (#32378180676)
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