mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-26 04:20:53 +01:00
395ac34bed
* chore: refactor connect to dapp action in e2e * chore: refactor 2nd dapp connection * chore: rename to openDapp
84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
const {
|
|
convertToHexValue,
|
|
withFixtures,
|
|
openDapp,
|
|
DAPP_ONE_URL,
|
|
} = require('../helpers');
|
|
const FixtureBuilder = require('../fixture-builder');
|
|
|
|
describe('eth_subscribe', function () {
|
|
const ganacheOptions = {
|
|
accounts: [
|
|
{
|
|
secretKey:
|
|
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
|
|
balance: convertToHexValue(25000000000000000000),
|
|
},
|
|
],
|
|
};
|
|
|
|
it('only broadcasts subscription notifications on the page that registered the subscription', async function () {
|
|
await withFixtures(
|
|
{
|
|
dapp: true,
|
|
fixtures: new FixtureBuilder()
|
|
.withPermissionControllerConnectedToTestDapp()
|
|
.build(),
|
|
ganacheOptions,
|
|
dappOptions: { numberOfDapps: 2 },
|
|
title: this.test.title,
|
|
},
|
|
async ({ driver }) => {
|
|
await driver.navigate();
|
|
await driver.fill('#password', 'correct horse battery staple');
|
|
await driver.press('#password', driver.Key.ENTER);
|
|
|
|
await openDapp(driver);
|
|
|
|
const setupSubscriptionListener = `
|
|
const responseContainer = document.createElement('div');
|
|
responseContainer.setAttribute('id', 'eth-subscribe-responses');
|
|
|
|
const body = window.document.getElementsByTagName('body')[0];
|
|
body.appendChild(responseContainer);
|
|
|
|
window.ethereum.addListener('message', (message) => {
|
|
if (message.type === 'eth_subscription') {
|
|
const response = document.createElement('p');
|
|
response.setAttribute('data-testid', 'eth-subscribe-response');
|
|
response.append(JSON.stringify(message.data.result));
|
|
|
|
const responses = window.document.getElementById('eth-subscribe-responses');
|
|
responses.appendChild(response)
|
|
}
|
|
});
|
|
`;
|
|
|
|
await driver.executeScript(setupSubscriptionListener);
|
|
// A `newHeads` subscription will emit a notification for each new block
|
|
// See here for more information: https://docs.infura.io/infura/networks/ethereum/json-rpc-methods/subscription-methods/eth_subscribe
|
|
await driver.executeScript(`
|
|
window.ethereum.request({
|
|
method: 'eth_subscribe',
|
|
params: ['newHeads']
|
|
});
|
|
`);
|
|
|
|
// Verify that the new block is seen on the first dapp
|
|
await driver.findElement('[data-testid="eth-subscribe-response"]');
|
|
|
|
// Switch to the second dapp
|
|
await openDapp(driver, null, DAPP_ONE_URL);
|
|
|
|
// Setup the same subscription listener as on the first dapp, but without registering a new subscription
|
|
await driver.executeScript(setupSubscriptionListener);
|
|
|
|
// Verify that the new block is not seen on the second dapp
|
|
await driver.assertElementNotPresent(
|
|
'[data-testid="eth-subscribe-response"]',
|
|
);
|
|
},
|
|
);
|
|
});
|
|
});
|