@@ -18,9 +18,44 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
18
18
19
19
import HttpProvider from 'web3-providers-http' ;
20
20
import WebSocketProvider from 'web3-providers-ws' ;
21
+ import WebSocket from 'isomorphic-ws' ;
22
+
21
23
import { Web3ExternalProvider } from '../../src/web3_provider' ;
22
24
import { Network , Transport } from '../../src/types' ;
23
25
26
+ // Mock implementation so ws doesnt have openhandle after test exits as it attempts to connects at start
27
+ jest . mock ( 'isomorphic-ws' , ( ) => {
28
+ return {
29
+ __esModule : true ,
30
+ default : jest . fn ( ) . mockImplementation ( ( ) => {
31
+ const eventListeners : { [ key : string ] : Function [ ] } = { } ;
32
+
33
+ return {
34
+ addEventListener : jest . fn ( ( event , handler ) => {
35
+ if ( ! eventListeners [ event ] ) {
36
+ eventListeners [ event ] = [ ] ;
37
+ }
38
+ eventListeners [ event ] . push ( handler ) ;
39
+ } ) ,
40
+ removeEventListener : jest . fn ( ( event , handler ) => {
41
+ if ( eventListeners [ event ] ) {
42
+ eventListeners [ event ] = eventListeners [ event ] . filter ( h => h !== handler ) ;
43
+ }
44
+ } ) ,
45
+ dispatchEvent : jest . fn ( ( event ) => {
46
+ const eventType = event . type ;
47
+ if ( eventListeners [ eventType ] ) {
48
+ eventListeners [ eventType ] . forEach ( handler => handler ( event ) ) ;
49
+ }
50
+ } ) ,
51
+ close : jest . fn ( ) ,
52
+ send : jest . fn ( ) ,
53
+ readyState : WebSocket . OPEN ,
54
+ } ;
55
+ } ) ,
56
+ } ;
57
+ } ) ;
58
+
24
59
class MockWeb3ExternalProviderA extends Web3ExternalProvider {
25
60
public constructor ( network : Network , transport : Transport , token : string ) {
26
61
super ( network , transport , token , "" ) ;
@@ -33,7 +68,7 @@ class MockWeb3ExternalProviderA extends Web3ExternalProvider {
33
68
else if ( _transport === Transport . WebSocket )
34
69
transport = "wss://" ;
35
70
36
- return `${ transport } example.com /` ;
71
+ return `${ transport } 127.0.0.1 /` ;
37
72
}
38
73
}
39
74
@@ -54,7 +89,6 @@ describe('Web3ExternalProvider', () => {
54
89
const token = 'your-token' ;
55
90
56
91
const provider = new MockWeb3ExternalProviderA ( network , transport , token ) ;
57
-
58
92
expect ( provider . provider ) . toBeInstanceOf ( WebSocketProvider ) ;
59
93
} ) ;
60
94
0 commit comments