@@ -16,6 +16,7 @@ import * as keysUtils from '@/keys/utils';
1616import * as networkUtils from '@/network/utils' ;
1717import * as tlsTestsUtils from '../../../utils/tls' ;
1818import * as testNodesUtils from '../../../nodes/utils' ;
19+ import { ClaimIdEncoded } from '@/ids' ;
1920
2021describe ( 'nodesClaimsGet' , ( ) => {
2122 const logger = new Logger ( 'nodesClaimsGet test' , LogLevel . WARN , [
@@ -314,4 +315,63 @@ describe('nodesClaimsGet', () => {
314315 // Verify the array is empty
315316 expect ( claimIds ) . toHaveLength ( 0 ) ;
316317 } ) ;
318+
319+
320+ test ( 'Should get chain data with valid seek parameter and all chain data if invalid seek' , async ( ) => {
321+ const srcNodeIdEncoded = nodesUtils . encodeNodeId ( keyRing . getNodeId ( ) ) ;
322+
323+ // Add 10 claims
324+ for ( let i = 1 ; i <= 5 ; i ++ ) {
325+ const node2 = nodesUtils . encodeNodeId (
326+ testNodesUtils . generateRandomNodeId ( ) ,
327+ ) ;
328+ const nodeLink = {
329+ type : 'ClaimLinkNode' ,
330+ iss : srcNodeIdEncoded ,
331+ sub : node2 ,
332+ } ;
333+ await sigchain . addClaim ( nodeLink ) ;
334+ }
335+ for ( let i = 6 ; i <= 10 ; i ++ ) {
336+ const identityLink = {
337+ type : 'ClaimLinkIdentity' ,
338+ iss : srcNodeIdEncoded ,
339+ sub : encodeProviderIdentityId ( [
340+ ( 'ProviderId' + i . toString ( ) ) as ProviderId ,
341+ ( 'IdentityId' + i . toString ( ) ) as IdentityId ,
342+ ] ) ,
343+ } ;
344+ await sigchain . addClaim ( identityLink ) ;
345+ }
346+
347+ // First, if we provide an invalid seek value, we should get all claims.
348+ let response = await rpcClient . methods . nodesClaimsGet ( { seek : undefined } ) ;
349+ const allClaimIds : ClaimIdEncoded [ ] = [ ] ;
350+ for await ( const claim of response ) {
351+ // We assume claimIdEncoded is defined for all returned claims.
352+ allClaimIds . push ( claim . claimIdEncoded ! ) ;
353+ }
354+ expect ( allClaimIds ) . toHaveLength ( 10 ) ;
355+
356+ // Now choose a seek claim.
357+ const seekClaimId = allClaimIds [ 3 ] ;
358+
359+ // Now retrieve claims starting from the seek value.
360+ response = await rpcClient . methods . nodesClaimsGet ( { order : 'asc' , seek : seekClaimId } ) ;
361+ const subsetClaimIds : string [ ] = [ ] ;
362+ for await ( const claim of response ) {
363+ subsetClaimIds . push ( claim . claimIdEncoded ! ) ;
364+ }
365+
366+ // Our expectation is that the claim with the seek value is excluded
367+ // and that the remaining claims match the tail of allClaimIds.
368+ console . log ( "subsetClaimIds" , subsetClaimIds ) ;
369+ console . log ( "allClaimIds" , allClaimIds ) ;
370+ console . log ( "allClaimIds.slice(4)" , allClaimIds . slice ( 3 ) ) ;
371+ console . log ( "seekClaimId" , seekClaimId ) ;
372+ expect ( subsetClaimIds ) . toEqual ( allClaimIds . slice ( 3 ) ) ;
373+ } ) ;
374+
375+
376+
317377} ) ;
0 commit comments