fix(network): route fixture services through gateway - #9868
Conversation
🚦 CI StatusWindows and Mac build successful in Unity Cloud! You can find a link to the downloadable artifact below. Lint in progress, come back later! Some Unity tests failed ❌
Failed tests (1)
|
|
Slack notification sent to #explorer-ext-contributions for external review. |
decentraland-bot
left a comment
There was a problem hiding this comment.
PR Review: fix(network): route fixture services through gateway
PR: #9868
Author: pentreathm
Base: chore/e2e-infra (stacked on #9822)
Files changed: 2 (+20 −0)
STEP 2 — Root-cause check: ✅ PASS
The PR description states the fixture was serving Events, POI, and Worlds endpoints correctly, but Unity still resolved them to their production origins (events.decentraland.org, dcl-lists.decentraland.org, worlds-content-server.decentraland.org) instead of routing through the gateway. The fix adds these URLs to the SUPPORTED_URLS allowlist in GatewayUrlsSource, which is the single canonical gating mechanism that controls whether RawUrl() rewrites a URL through the gateway. This directly addresses the root cause — the URLs were simply missing from the set.
STEP 3 — Design & integration: ✅ PASS
No new long-lived units are introduced. The change is purely additive: 5 new DecentralandUrl enum entries are added to an existing static readonly HashSet<DecentralandUrl>. This is the intended extensibility mechanism for gateway routing — the SUPPORTED_URLS set is the single source of truth that RawUrl() checks before applying the gateway transform.
Placement: ApiEvents and POI are placed in the Places/API section alongside ApiPlaces, ApiWorlds, and ApiDestinations. WorldServer, WorldPermissions, WorldComms, and WorldCommsAdapter are grouped with the existing WorldContentServer in the Content Servers section. Both placements are logically coherent with the existing organization.
No lifecycle concerns, no new subscriptions, no teardown needed — this is static configuration data.
STEP 4 — Member audit: ✅ N/A
No new public properties, accessors, or methods are introduced.
STEP 5 — Line-level review: ✅ No issues found
Pass A (blocking issues): No bugs, no security vulnerabilities, no performance concerns, no missing error handling, no resource leaks, no nullability violations.
Pass B (design/encapsulation smells): No new types, no naming issues, no magic values, no encapsulation violations.
Test analysis: The new test RouteEventsPoiAndWorldServerThroughTheGatewayOrigin follows the exact same pattern as the adjacent RouteThroughTheGatewayOriginTheArgNames — it constructs a GatewayUrlsSource with a cliGatewayPrefix and asserts each new URL resolves through it. All 6 new URL entries are covered with explicit expected values. The test name accurately describes its scope.
Git conventions (ADR-6): Title fix(network): route fixture services through gateway follows semantic commit format. Branch fix/e2e-fixture-gateway-routes follows <type>/<summary>. ✅
Security review: ✅ No issues
- No new input surfaces, authentication changes, or credential handling.
- The change extends an internal URL allowlist — no external attack surface is introduced.
- Gateway routing preserves the existing
IsGatewayTransformable()safety checks (single-label subdomain, no port/userinfo, same base domain). - The reverse transform (
GetOriginalUrl) is generic and handles all supported URLs uniformly.
Consumer impact: ✅ No breaking changes
No public API surface is modified. The Url(), TransformUrl(), and GetOriginalUrl() methods retain their signatures and contracts. The behavioral change (these URLs now route through the gateway) activates only when the use-gateway feature flag or a cliGatewayPrefix CLI argument is set — existing callers without gateway configuration see no difference.
CI status
fatal: not a git repository in the test-reporter action, missing artifact path) — not test failures caused by this PR
These CI issues appear to be pre-existing on the base branch.
REVIEW_RESULT: PASS ✅
COMPLEXITY: SIMPLE
COMPLEXITY_REASON: Adds entries to a static URL allowlist in the network-definitions layer plus a covering unit test; no systems, async, or architectural changes.
QA_REQUIRED: YES
Reviewed by Jarvis 🤖 · Requested by unknown (<@unknown>) via Slack
|
PR #9868, run #32977810971 Overall: ✅ no significant changes Builds: Windows change, Windows baseline, macOS change, macOS baseline How to read this table
Intel Core i5
Apple M1
|
Summary
--gatewayoriginThe fixture was serving these endpoints correctly, but Unity still resolved them to
events.decentraland.org,dcl-lists.decentraland.org, andworlds-content-server.decentraland.org. This is stacked on #9822.