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

decentraland / signatures-server / 30306353503
92%
main: 92%

Build:
Build:
LAST BUILD BRANCH: fix/rental-listing-cancellation-and-integration-tests
DEFAULT BRANCH: main
Ran 27 Jul 2026 09:20PM UTC
Jobs 1
Files 22
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

27 Jul 2026 09:19PM UTC coverage: 91.606% (+0.1%) from 91.458%
30306353503

Pull #487

github

LautaroPetaccio
fix: stop cancelling listings whose asset the rentals contract holds

the unauthenticated PATCH /v1/rentals-listings/:id cancelled any open listing whose asset was
not owned by the lessor, without excluding the case its own comment described: the rentals
contract holding the asset on the lessor's behalf. that is the supported flow of re-listing
after a rent ended without claiming the asset back, so anyone could enumerate listing ids
through the public GET and cancel them one by one. updateMetadata had the same defect written
differently, comparing the nft owner against the on chain lessor, a comparison that never
matched, so its guard never returned early either. both paths now share one check.

other fixes in the same area:

- the contract index cancellation wrapped a bound parameter in double quotes, which postgres
  reads as an identifier, so the statement failed, the whole batch rolled back and the job
  never advanced its cursor again. listings invalidated on chain stayed open.
- the rental contract address was stored as the caller sent it. it drives the index based
  cancellations, so repairing the statement above without validating it would have turned an
  inert bug into a bypass. it is now checked against the rentals contract of the chain.
- the cancellation issued during a refresh was neither awaited nor ordered against the
  executed update it raced. the service runs with unhandled-rejections=strict, so a rejection
  there took the process down.
- the lookup by signature in updateRentalsListings relied on and binding tighter than or, so
  neither branch joined every table and period_chosen could point at another listing's period.
- updateMetadata stored the indexer timestamp with the conversion inverted, writing dates near
  1970. that made the refresh treat the metadata as stale on every call.
- cancelRentalsListings computed a cursor it never passed to the query, so a window with a
  full page of index updates looped forever holding a tra... (continued)
Pull Request #487: fix: stop cancelling listings whose asset the rentals contract holds

339 of 366 branches covered (92.62%)

Branch coverage included in aggregate %.

53 of 55 new or added lines in 7 files covered. (96.36%)

2 existing lines in 1 file now uncovered.

676 of 742 relevant lines covered (91.11%)

44.89 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
95.65
-4.35% src/logic/rentals/ethereum.ts
1
92.67
-1.09% src/ports/rentals/component.ts

Coverage Regressions

Lines Coverage ∆ File
2
92.67
-1.09% src/ports/rentals/component.ts
Jobs
ID Job ID Ran Files Coverage
1 30306353503.1 27 Jul 2026 09:20PM UTC 44
91.48
GitHub Action Run
Source Files on build 30306353503
  • Tree
  • List 22
  • Changed 16
  • Source Changed 12
  • Coverage Changed 16
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30306353503
  • Pull Request #487
  • PR Base - main (#28386928073)
  • 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