@@ -8,11 +8,11 @@ import sinonChai from 'sinon-chai'
88chai . use ( sinonChai )
99chai . use ( chaiAsPromised )
1010
11+ import { CacheAdmissionState , EventMessageHandler } from '../../../src/handlers/event-message-handler'
1112import { EventLimits , Settings } from '../../../src/@types/settings'
1213import { IncomingEventMessage , MessageType } from '../../../src/@types/messages'
1314import { Event } from '../../../src/@types/event'
1415import { EventKinds } from '../../../src/constants/base'
15- import { EventMessageHandler } from '../../../src/handlers/event-message-handler'
1616import { IUserRepository } from '../../../src/@types/repositories'
1717import { IWebSocketAdapter } from '../../../src/@types/adapters'
1818import { WebSocketAdapterEvent } from '../../../src/constants/adapter'
@@ -88,7 +88,8 @@ describe('EventMessageHandler', () => {
8888 ( ) => ( {
8989 info : { relay_url : 'relay_url' } ,
9090 } ) as any ,
91- ( ) => ( { hit : async ( ) => false } )
91+ ( ) => ( { hit : async ( ) => false } ) ,
92+ { hasKey : async ( ) => false , setKey : async ( ) => true } as any ,
9293 )
9394 } )
9495
@@ -262,7 +263,8 @@ describe('EventMessageHandler', () => {
262263 { hasActiveRequestToVanish : async ( ) => false } as any ,
263264 userRepository ,
264265 ( ) => settings ,
265- ( ) => ( { hit : async ( ) => false } )
266+ ( ) => ( { hit : async ( ) => false } ) ,
267+ { hasKey : async ( ) => false , setKey : async ( ) => true } as any ,
266268 )
267269 } )
268270
@@ -738,7 +740,8 @@ describe('EventMessageHandler', () => {
738740 { hasActiveRequestToVanish : async ( ) => false } as any ,
739741 userRepository ,
740742 ( ) => settings ,
741- ( ) => ( { hit : rateLimiterHitStub } )
743+ ( ) => ( { hit : rateLimiterHitStub } ) ,
744+ { hasKey : async ( ) => false , setKey : async ( ) => true , setKeyWithExpiry : async ( ) => true } as any ,
742745 )
743746 } )
744747
@@ -953,6 +956,7 @@ describe('EventMessageHandler', () => {
953956 let webSocket : IWebSocketAdapter
954957 let getRelayPublicKeyStub : SinonStub
955958 let userRepositoryFindByPubkeyStub : SinonStub
959+ let cacheGetKeyStub : SinonStub
956960
957961 beforeEach ( ( ) => {
958962 settings = {
@@ -994,6 +998,7 @@ describe('EventMessageHandler', () => {
994998 getRelayPublicKeyStub = sandbox . stub ( EventMessageHandler . prototype , 'getRelayPublicKey' as any )
995999 getClientAddressStub = sandbox . stub ( )
9961000 userRepositoryFindByPubkeyStub = sandbox . stub ( )
1001+ cacheGetKeyStub = sandbox . stub ( ) . resolves ( null )
9971002 webSocket = {
9981003 getClientAddress : getClientAddressStub ,
9991004 } as any
@@ -1006,11 +1011,18 @@ describe('EventMessageHandler', () => {
10061011 { hasActiveRequestToVanish : async ( ) => false } as any ,
10071012 userRepository ,
10081013 ( ) => settings ,
1009- ( ) => ( { hit : async ( ) => false } )
1014+ ( ) => ( { hit : async ( ) => false } ) ,
1015+ {
1016+ hasKey : async ( ) => false ,
1017+ getKey : cacheGetKeyStub ,
1018+ setKey : async ( ) => true ,
1019+ setKeyWithExpiry : async ( ) => true ,
1020+ setKeyExpiry : async ( ) => undefined ,
1021+ } as any ,
10101022 )
10111023 } )
10121024
1013- it ( 'fulfills with undefined if payments are disabled' , async ( ) => {
1025+ it ( 'fulfills with undefined if payments are disabled' , async ( ) => {
10141026 settings . payments . enabled = false
10151027
10161028 return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . be . undefined
@@ -1089,12 +1101,6 @@ describe('EventMessageHandler', () => {
10891101 return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . equal ( 'blocked: pubkey not admitted' )
10901102 } )
10911103
1092- it ( 'fulfills with reason if user is not admitted' , async ( ) => {
1093- userRepositoryFindByPubkeyStub . resolves ( { isAdmitted : false } )
1094-
1095- return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . equal ( 'blocked: pubkey not admitted' )
1096- } )
1097-
10981104 it ( 'fulfills with reason if user does not meet minimum balance' , async ( ) => {
10991105 settings . limits . event . pubkey . minBalance = 1000n
11001106 userRepositoryFindByPubkeyStub . resolves ( { isAdmitted : true , balance : 999n } )
@@ -1108,5 +1114,23 @@ describe('EventMessageHandler', () => {
11081114
11091115 return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . be . undefined
11101116 } )
1117+
1118+ it ( 'fulfills with undefined if user is admitted in cache' , async ( ) => {
1119+ cacheGetKeyStub . resolves ( CacheAdmissionState . ADMITTED )
1120+
1121+ return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . be . undefined
1122+ } )
1123+
1124+ it ( 'fulfills with reason if user is blocked in cache' , async ( ) => {
1125+ cacheGetKeyStub . resolves ( CacheAdmissionState . NOT_ADMITTED )
1126+
1127+ return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . equal ( 'blocked: pubkey not admitted' )
1128+ } )
1129+
1130+ it ( 'fulfills with reason if user has insufficient balance in cache' , async ( ) => {
1131+ cacheGetKeyStub . resolves ( CacheAdmissionState . INSUFFICIENT_BALANCE )
1132+
1133+ return expect ( ( handler as any ) . isUserAdmitted ( event ) ) . to . eventually . equal ( 'blocked: insufficient balance' )
1134+ } )
11111135 } )
11121136} )
0 commit comments