test: reenable account change subscription test
This commit is contained in:
		
				
					committed by
					
						
						Steven Luscher
					
				
			
			
				
	
			
			
			
						parent
						
							35ee38b0f1
						
					
				
				
					commit
					db50893fa1
				
			@@ -23,6 +23,7 @@ import invariant from '../src/util/assert';
 | 
				
			|||||||
import {DEFAULT_TICKS_PER_SLOT, NUM_TICKS_PER_SECOND} from '../src/timing';
 | 
					import {DEFAULT_TICKS_PER_SLOT, NUM_TICKS_PER_SECOND} from '../src/timing';
 | 
				
			||||||
import {MOCK_PORT, url} from './url';
 | 
					import {MOCK_PORT, url} from './url';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
 | 
					  AccountInfo,
 | 
				
			||||||
  BLOCKHASH_CACHE_TIMEOUT_MS,
 | 
					  BLOCKHASH_CACHE_TIMEOUT_MS,
 | 
				
			||||||
  BlockResponse,
 | 
					  BlockResponse,
 | 
				
			||||||
  BlockSignatures,
 | 
					  BlockSignatures,
 | 
				
			||||||
@@ -3550,70 +3551,36 @@ describe('Connection', function () {
 | 
				
			|||||||
      );
 | 
					      );
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // it('account change notification', async () => {
 | 
					    it('account change notification', async () => {
 | 
				
			||||||
    //   if (mockServer) {
 | 
					      if (mockServer) {
 | 
				
			||||||
    //     console.log('non-live test skipped');
 | 
					        console.log('non-live test skipped');
 | 
				
			||||||
    //     return;
 | 
					        return;
 | 
				
			||||||
    //   }
 | 
					      }
 | 
				
			||||||
 | 
					      const connection = new Connection(url, 'confirmed');
 | 
				
			||||||
 | 
					      const owner = Keypair.generate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //   const connection = new Connection(url, 'confirmed');
 | 
					      let subscriptionId;
 | 
				
			||||||
    //   const owner = Keypair.generate();
 | 
					      try {
 | 
				
			||||||
    //   const programAccount = Keypair.generate();
 | 
					        const notificationPromise = new Promise<AccountInfo<Buffer>>(
 | 
				
			||||||
 | 
					          resolve => {
 | 
				
			||||||
    //   const mockCallback = jest.fn();
 | 
					            subscriptionId = connection.onAccountChange(
 | 
				
			||||||
 | 
					              owner.publicKey,
 | 
				
			||||||
    //   const subscriptionId = connection.onAccountChange(
 | 
					              resolve,
 | 
				
			||||||
    //     programAccount.publicKey,
 | 
					              'confirmed',
 | 
				
			||||||
    //     mockCallback,
 | 
					            );
 | 
				
			||||||
    //     'confirmed',
 | 
					          },
 | 
				
			||||||
    //   );
 | 
					        );
 | 
				
			||||||
 | 
					        connection.requestAirdrop(owner.publicKey, LAMPORTS_PER_SOL);
 | 
				
			||||||
    //   const balanceNeeded = Math.max(
 | 
					        const notificationPayload = await notificationPromise;
 | 
				
			||||||
    //     await connection.getMinimumBalanceForRentExemption(0),
 | 
					        expect(notificationPayload.lamports).to.eq(LAMPORTS_PER_SOL);
 | 
				
			||||||
    //     1,
 | 
					        expect(notificationPayload.owner.equals(SystemProgram.programId)).to.be
 | 
				
			||||||
    //   );
 | 
					          .true;
 | 
				
			||||||
 | 
					      } finally {
 | 
				
			||||||
    //   let signature = await connection.requestAirdrop(
 | 
					        if (subscriptionId != null) {
 | 
				
			||||||
    //     owner.publicKey,
 | 
					          connection.removeAccountChangeListener(subscriptionId);
 | 
				
			||||||
    //     LAMPORTS_PER_SOL,
 | 
					        }
 | 
				
			||||||
    //   );
 | 
					      }
 | 
				
			||||||
    //   await connection.confirmTransaction(signature);
 | 
					    });
 | 
				
			||||||
    //   try {
 | 
					 | 
				
			||||||
    //     const transaction = new Transaction().add(
 | 
					 | 
				
			||||||
    //       SystemProgram.transfer({
 | 
					 | 
				
			||||||
    //         fromPubkey: owner.publicKey,
 | 
					 | 
				
			||||||
    //         toPubkey: programAccount.publicKey,
 | 
					 | 
				
			||||||
    //         lamports: balanceNeeded,
 | 
					 | 
				
			||||||
    //       }),
 | 
					 | 
				
			||||||
    //     );
 | 
					 | 
				
			||||||
    //     await sendAndConfirmTransaction(connection, transaction, [owner], {
 | 
					 | 
				
			||||||
    //       commitment: 'confirmed',
 | 
					 | 
				
			||||||
    //     });
 | 
					 | 
				
			||||||
    //   } catch (err) {
 | 
					 | 
				
			||||||
    //     await connection.removeAccountChangeListener(subscriptionId);
 | 
					 | 
				
			||||||
    //     throw err;
 | 
					 | 
				
			||||||
    //   }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //   // Wait for mockCallback to receive a call
 | 
					 | 
				
			||||||
    //   let i = 0;
 | 
					 | 
				
			||||||
    //   for (;;) {
 | 
					 | 
				
			||||||
    //     if (mockCallback.mock.calls.length > 0) {
 | 
					 | 
				
			||||||
    //       break;
 | 
					 | 
				
			||||||
    //     }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //     if (++i === 30) {
 | 
					 | 
				
			||||||
    //       throw new Error('Account change notification not observed');
 | 
					 | 
				
			||||||
    //     }
 | 
					 | 
				
			||||||
    //     // Sleep for a 1/4 of a slot, notifications only occur after a block is
 | 
					 | 
				
			||||||
    //     // processed
 | 
					 | 
				
			||||||
    //     await sleep((250 * DEFAULT_TICKS_PER_SLOT) / NUM_TICKS_PER_SECOND);
 | 
					 | 
				
			||||||
    //   }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //   await connection.removeAccountChangeListener(subscriptionId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //   expect(mockCallback.mock.calls[0][0].lamports).to.eq(balanceNeeded);
 | 
					 | 
				
			||||||
    //   expect(mockCallback.mock.calls[0][0].owner).to.eq(SystemProgram.programId);
 | 
					 | 
				
			||||||
    // });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('program account change notification', async () => {
 | 
					    it('program account change notification', async () => {
 | 
				
			||||||
      connection._commitment = 'confirmed';
 | 
					      connection._commitment = 'confirmed';
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user