fix(core): update
This commit is contained in:
		
							
								
								
									
										139
									
								
								test/test.expressserver.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								test/test.expressserver.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | ||||
| // tslint:disable-next-line:no-implicit-dependencies | ||||
| import { expect, tap } from '@pushrocks/tapbundle'; | ||||
|  | ||||
| import * as nodehash from '@pushrocks/smarthash'; | ||||
| import * as smartpromise from '@pushrocks/smartpromise'; | ||||
| import * as smartexpress from '@pushrocks/smartexpress'; | ||||
|  | ||||
| import socketIoClient = require('socket.io-client'); | ||||
| import smartsocket = require('../ts/index'); | ||||
|  | ||||
| let testSmartsocket: smartsocket.Smartsocket; | ||||
| let testSmartsocketClient: smartsocket.SmartsocketClient; | ||||
| let testSocketRole1: smartsocket.SocketRole; | ||||
| let testSocketFunction1: smartsocket.SocketFunction; | ||||
| let myseServer: smartexpress.Server; | ||||
|  | ||||
| const testConfig = { | ||||
|   port: 3000 | ||||
| }; | ||||
|  | ||||
| // class smartsocket | ||||
| tap.test('should create a new smartsocket', async () => { | ||||
|   testSmartsocket = new smartsocket.Smartsocket({ port: testConfig.port }); | ||||
|   expect(testSmartsocket).be.instanceOf(smartsocket.Smartsocket); | ||||
| }); | ||||
|  | ||||
| tap.test('Should accept an smartExpressServer as server', async () => { | ||||
|   myseServer = new smartexpress.Server({ | ||||
|     cors: true, | ||||
|     forceSsl: false, | ||||
|     port: testConfig.port | ||||
|   }); | ||||
|  | ||||
|   testSmartsocket.setExternalServer('smartexpress', myseServer); | ||||
|  | ||||
|   await myseServer.start(); | ||||
| }); | ||||
|  | ||||
| tap.test('should start listening when .started is called', async () => { | ||||
|   await testSmartsocket.start(); | ||||
| }); | ||||
|  | ||||
| // class socketrole | ||||
| tap.test('should add a socketrole', async () => { | ||||
|   testSocketRole1 = new smartsocket.SocketRole({ | ||||
|     name: 'testRole1', | ||||
|     passwordHash: nodehash.sha256FromStringSync('testPassword') | ||||
|   }); | ||||
|   testSmartsocket.addSocketRoles([testSocketRole1]); | ||||
| }); | ||||
|  | ||||
| // class SocketFunction | ||||
| tap.test('should register a new Function', async () => { | ||||
|   testSocketFunction1 = new smartsocket.SocketFunction({ | ||||
|     allowedRoles: [testSocketRole1], | ||||
|     funcDef: async dataArg => { | ||||
|       return dataArg; | ||||
|     }, | ||||
|     funcName: 'testFunction1' | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| // class SmartsocketClient | ||||
| tap.test('should react to a new websocket connection from client', async () => { | ||||
|   const done = smartpromise.defer(); | ||||
|   testSmartsocketClient = new smartsocket.SmartsocketClient({ | ||||
|     port: testConfig.port, | ||||
|     url: 'http://localhost', | ||||
|     password: 'testPassword', | ||||
|     alias: 'testClient1', | ||||
|     role: 'testRole1' | ||||
|   }); | ||||
|   testSmartsocketClient.connect().then(() => { | ||||
|     done.resolve(); | ||||
|   }); | ||||
|   await done.promise; | ||||
| }); | ||||
| tap.test('client should disconnect and reconnect', async () => { | ||||
|   let done = smartpromise.defer(); | ||||
|   testSmartsocketClient | ||||
|     .disconnect() | ||||
|     .then(() => { | ||||
|       let done = smartpromise.defer(); | ||||
|       setTimeout(() => { | ||||
|         testSmartsocketClient.connect().then(done.resolve); | ||||
|       }, 0); | ||||
|       return done.promise; | ||||
|     }) | ||||
|     .then(() => { | ||||
|       done.resolve(); | ||||
|     }); | ||||
|   await done.promise; | ||||
| }); | ||||
|  | ||||
| tap.test('2 clients should connect in parallel', async () => { | ||||
|   // TODO: implement parallel test | ||||
| }); | ||||
|  | ||||
| tap.test('should be able to make a functionCall from client to server', async () => { | ||||
|   let done = smartpromise.defer(); | ||||
|   testSmartsocketClient | ||||
|     .serverCall('testFunction1', { | ||||
|       value1: 'hello' | ||||
|     }) | ||||
|     .then(dataArg => { | ||||
|       console.log(dataArg); | ||||
|       done.resolve(); | ||||
|     }); | ||||
|   await done.promise; | ||||
| }); | ||||
|  | ||||
| tap.test('should be able to make a functionCall from server to client', async () => { | ||||
|   let done = smartpromise.defer(); | ||||
|   let targetSocket = (() => { | ||||
|     return smartsocket.allSocketConnections.find(socketConnectionArg => { | ||||
|       return socketConnectionArg.alias === 'testClient1'; | ||||
|     }); | ||||
|   })(); | ||||
|   testSmartsocket | ||||
|     .clientCall( | ||||
|       'testFunction1', | ||||
|       { | ||||
|         value1: 'helloFromServer' | ||||
|       }, | ||||
|       targetSocket | ||||
|     ) | ||||
|     .then(dataArg => { | ||||
|       console.log(dataArg); | ||||
|       done.resolve(); | ||||
|     }); | ||||
| }); | ||||
|  | ||||
| // terminate | ||||
| tap.test('should close the server', async () => { | ||||
|   await testSmartsocket.stop(); | ||||
|   await myseServer.stop(); | ||||
| }); | ||||
|  | ||||
| tap.start(); | ||||
		Reference in New Issue
	
	Block a user