@@ -1479,3 +1479,63 @@ describe('WSv2 message sending', () => {
14791479 ws . send ( { a : 42 } )
14801480 } )
14811481} )
1482+
1483+ describe ( 'WSv2 seq audit: _validateMessageSeq' , ( ) => {
1484+ it ( 'returns an error on invalid pub seq' , ( ) => {
1485+ const ws = new WSv2 ( )
1486+
1487+ ws . _seqAudit = true
1488+ ws . _lastPubSeq = 0
1489+
1490+ assert . equal ( ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 1 ] ) , null )
1491+ assert . equal ( ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 2 ] ) , null )
1492+
1493+ const err = ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 5 ] )
1494+ assert ( err instanceof Error )
1495+ } )
1496+
1497+ it ( 'returns an error on invalid auth seq' , ( ) => {
1498+ const ws = new WSv2 ( )
1499+
1500+ ws . _seqAudit = true
1501+ ws . _lastPubSeq = 0
1502+ ws . _lastAuthSeq = 0
1503+
1504+ assert . equal ( ws . _validateMessageSeq ( [ 0 , [ 252.12 , 2 , - 1 ] , 1 , 1 ] ) , null )
1505+ assert . equal ( ws . _validateMessageSeq ( [ 0 , [ 252.12 , 2 , - 1 ] , 2 , 2 ] ) , null )
1506+
1507+ const err = ws . _validateMessageSeq ( [ 0 , [ 252.12 , 2 , - 1 ] , 3 , 5 ] )
1508+ assert ( err instanceof Error )
1509+ } )
1510+
1511+ it ( 'ignores heartbeats' , ( ) => {
1512+ const ws = new WSv2 ( )
1513+
1514+ ws . _seqAudit = true
1515+ ws . _lastPubSeq = 0
1516+
1517+ assert . equal ( ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 1 ] ) , null )
1518+ assert . equal ( ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 2 ] ) , null )
1519+ assert . equal ( ws . _validateMessageSeq ( [ 243 , 'hb' ] ) , null )
1520+ assert . equal ( ws . _validateMessageSeq ( [ 243 , 'hb' ] ) , null )
1521+ assert . equal ( ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 3 ] ) , null )
1522+ assert . equal ( ws . _validateMessageSeq ( [ 243 , [ 252.12 , 2 , - 1 ] , 4 ] ) , null )
1523+ } )
1524+
1525+ it ( 'skips auth seq for error notifications' , ( ) => {
1526+ const ws = new WSv2 ( )
1527+
1528+ ws . _seqAudit = true
1529+ ws . _lastPubSeq = 0
1530+ ws . _lastAuthSeq = 0
1531+
1532+ const nSuccess = [ null , null , null , null , null , null , 'SUCCESS' ]
1533+ const nError = [ null , null , null , null , null , null , 'ERROR' ]
1534+
1535+ assert . equal ( ws . _validateMessageSeq ( [ 0 , 'n' , nSuccess , 1 , 1 ] ) , null )
1536+ assert . equal ( ws . _validateMessageSeq ( [ 0 , 'n' , nSuccess , 2 , 2 ] ) , null )
1537+ assert . equal ( ws . _validateMessageSeq ( [ 0 , 'n' , nError , 3 ] ) , null )
1538+ assert . equal ( ws . _validateMessageSeq ( [ 0 , 'n' , nSuccess , 4 , 3 ] ) , null )
1539+ assert . equal ( ws . _validateMessageSeq ( [ 0 , 'n' , nSuccess , 5 , 4 ] ) , null )
1540+ } )
1541+ } )
0 commit comments