@ -1,17 +1,19 @@
const { strict : assert } = require ( 'assert' ) ;
const { strict : assert } = require ( 'assert' ) ;
const { errorCodes } = require ( 'eth-rpc-errors' ) ;
const { withFixtures } = require ( '../helpers' ) ;
const { withFixtures } = require ( '../helpers' ) ;
describe ( 'MetaMask' , function ( ) {
describe ( 'MetaMask' , function ( ) {
const ganacheOptions = {
accounts : [
{
secretKey :
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC' ,
balance : 25000000000000000000 ,
} ,
] ,
} ;
it ( 'provider should inform dapp when switching networks' , async function ( ) {
it ( 'provider should inform dapp when switching networks' , async function ( ) {
const ganacheOptions = {
accounts : [
{
secretKey :
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC' ,
balance : 25000000000000000000 ,
} ,
] ,
} ;
await withFixtures (
await withFixtures (
{
{
dapp : true ,
dapp : true ,
@ -62,4 +64,48 @@ describe('MetaMask', function () {
} ,
} ,
) ;
) ;
} ) ;
} ) ;
it ( 'should reject unsupported methods' , async function ( ) {
await withFixtures (
{
dapp : true ,
failOnConsoleError : false ,
fixtures : 'connected-state' ,
ganacheOptions ,
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 driver . openNewPage ( 'http://127.0.0.1:8080/' ) ;
for ( const unsupportedMethod of [ 'eth_signTransaction' ] ) {
assert . equal (
await driver . executeAsyncScript ( `
const webDriverCallback = arguments [ arguments . length - 1 ] ;
window . ethereum . request ( { method : '${unsupportedMethod}' } )
. then ( ( ) => {
console . error ( 'The unsupported method "${unsupportedMethod}" was not rejected.' ) ;
webDriverCallback ( false ) ;
} )
. catch ( ( error ) => {
if ( error . code === $ { errorCodes . rpc . methodNotSupported } ) {
webDriverCallback ( true ) ;
}
console . error (
'The unsupported method "${unsupportedMethod}" was rejected with an unexpected error.' ,
error ,
) ;
webDriverCallback ( false ) ;
} )
` ),
true ,
` The unsupported method " ${ unsupportedMethod } " should be rejected by the provider. ` ,
) ;
}
} ,
) ;
} ) ;
} ) ;
} ) ;