|  |  |  | /* eslint-disable prefer-destructuring */ | 
					
						
							|  |  |  | /* eslint-disable more/no-then */ | 
					
						
							|  |  |  | /* eslint-disable func-names  */ | 
					
						
							|  |  |  | /* eslint-disable import/no-extraneous-dependencies */ | 
					
						
							|  |  |  | const { afterEach, beforeEach, describe, it } = require('mocha'); | 
					
						
							|  |  |  | const common = require('./common'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('Link Device', function() { | 
					
						
							|  |  |  |   let app; | 
					
						
							|  |  |  |   let app2; | 
					
						
							|  |  |  |   this.timeout(60000); | 
					
						
							|  |  |  |   this.slow(15000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   beforeEach(async () => { | 
					
						
							|  |  |  |     await common.killallElectron(); | 
					
						
							|  |  |  |     await common.stopStubSnodeServer(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const app1Props = { | 
					
						
							|  |  |  |       mnemonic: common.TEST_MNEMONIC1, | 
					
						
							|  |  |  |       displayName: common.TEST_DISPLAY_NAME1, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const app2Props = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [app, app2] = await Promise.all([ | 
					
						
							|  |  |  |       common.startAndStub(app1Props), | 
					
						
							|  |  |  |       common.startAndStubN(app2Props, 2), | 
					
						
							|  |  |  |     ]); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   afterEach(async () => { | 
					
						
							|  |  |  |     await common.killallElectron(); | 
					
						
							|  |  |  |     await common.stopStubSnodeServer(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('linkDevice: link two desktop devices', async () => { | 
					
						
							|  |  |  |     await common.linkApp2ToApp(app, app2, common.TEST_PUBKEY1); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('linkDevice: unlink two devices', async () => { | 
					
						
							|  |  |  |     await common.linkApp2ToApp(app, app2, common.TEST_PUBKEY1); | 
					
						
							|  |  |  |     await common.timeout(1000); | 
					
						
							|  |  |  |     await common.triggerUnlinkApp2FromApp(app, app2); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('linkDevice:sync no groups, closed group, nor open groups', async () => { | 
					
						
							|  |  |  |     await common.linkApp2ToApp(app, app2, common.TEST_PUBKEY1); | 
					
						
							|  |  |  |     await common.timeout(10000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // get logs at this stage (getRenderProcessLogs() clears the app logs)
 | 
					
						
							|  |  |  |     const secondaryRenderLogs = await app2.client.getRenderProcessLogs(); | 
					
						
							|  |  |  |     // pairing request message sent from secondary to primary pubkey
 | 
					
						
							|  |  |  |     await common.logsContains( | 
					
						
							|  |  |  |       secondaryRenderLogs, | 
					
						
							|  |  |  |       `Sending pairing-request:pairing-request message to ${common.TEST_PUBKEY1}` | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const primaryRenderLogs = await app.client.getRenderProcessLogs(); | 
					
						
							|  |  |  |     // primary grant pairing request
 | 
					
						
							|  |  |  |     await common.logsContains( | 
					
						
							|  |  |  |       primaryRenderLogs, | 
					
						
							|  |  |  |       'Sending pairing-request:pairing-request message to OUR SECONDARY PUBKEY' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // no friends, no closed groups, no open groups. we should see those message sync in the log
 | 
					
						
							|  |  |  |     await common.logsContains(primaryRenderLogs, 'No closed group to sync.', 1); | 
					
						
							|  |  |  |     await common.logsContains(primaryRenderLogs, 'No open groups to sync', 1); | 
					
						
							|  |  |  |     await common.logsContains(primaryRenderLogs, 'No contacts to sync.', 1); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |