@@ -17,14 +17,18 @@ import { WebSocketAdapterEvent } from '../../../src/constants/adapter'
1717chai . use ( chaiAsPromised )
1818const { expect } = chai
1919
20- const toDbEvent = ( event : Event ) => ( {
20+ const toDbEvent = (
21+ event : Event ,
22+ metadata : { expires_at ?: number , deleted_at ?: Date | null } = { } ,
23+ ) => ( {
2124 event_id : Buffer . from ( event . id , 'hex' ) ,
2225 event_kind : event . kind ,
2326 event_pubkey : Buffer . from ( event . pubkey , 'hex' ) ,
2427 event_created_at : event . created_at ,
2528 event_content : event . content ,
2629 event_tags : event . tags ,
2730 event_signature : Buffer . from ( event . sig , 'hex' ) ,
31+ ...metadata ,
2832} )
2933
3034describe ( 'SubscribeMessageHandler' , ( ) => {
@@ -165,6 +169,43 @@ describe('SubscribeMessageHandler', () => {
165169 )
166170 } )
167171
172+ it ( 'does not send expired events' , async ( ) => {
173+ isClientSubscribedToEventStub . returns ( always ( true ) )
174+
175+ const now = Math . floor ( Date . now ( ) / 1000 )
176+ const promise = ( handler as any ) . fetchAndSend ( subscriptionId , filters )
177+
178+ stream . write ( toDbEvent ( event , { expires_at : now - 1 } ) )
179+ stream . end ( )
180+
181+ await promise
182+
183+ expect ( eventRepositoryFindByFiltersStub ) . to . have . been . calledOnceWithExactly ( filters )
184+ expect ( webSocketOnMessageStub ) . to . have . been . calledOnceWithExactly (
185+ [ 'EOSE' , subscriptionId ] ,
186+ )
187+ } )
188+
189+ it ( 'sends event if expiration is in the future' , async ( ) => {
190+ isClientSubscribedToEventStub . returns ( always ( true ) )
191+
192+ const now = Math . floor ( Date . now ( ) / 1000 )
193+ const promise = ( handler as any ) . fetchAndSend ( subscriptionId , filters )
194+
195+ stream . write ( toDbEvent ( event , { expires_at : now + 60 } ) )
196+ stream . end ( )
197+
198+ await promise
199+
200+ expect ( eventRepositoryFindByFiltersStub ) . to . have . been . calledOnceWithExactly ( filters )
201+ expect ( webSocketOnMessageStub ) . to . have . been . calledWithExactly (
202+ [ 'EVENT' , subscriptionId , event ] ,
203+ )
204+ expect ( webSocketOnMessageStub ) . to . have . been . calledWithExactly (
205+ [ 'EOSE' , subscriptionId ] ,
206+ )
207+ } )
208+
168209 it ( 'sends EOSE' , async ( ) => {
169210 const promise = ( handler as any ) . fetchAndSend ( subscriptionId , filters )
170211
0 commit comments