|  |  |  | /* eslint-disable func-names  */ | 
					
						
							|  |  |  | /* eslint-disable import/no-extraneous-dependencies */ | 
					
						
							|  |  |  | // tslint:disable: await-promise
 | 
					
						
							|  |  |  | // tslint:disable: no-implicit-dependencies
 | 
					
						
							|  |  |  | // tslint:disable: no-invalid-this
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { afterEach, beforeEach, describe, it } from 'mocha'; | 
					
						
							|  |  |  | import { Common } from './common'; | 
					
						
							|  |  |  | import { Application } from 'spectron'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ConversationPage from './page-objects/conversation.page'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('Add contact', function() { | 
					
						
							|  |  |  |   this.timeout(60000); | 
					
						
							|  |  |  |   this.slow(20000); | 
					
						
							|  |  |  |   let app: Application; | 
					
						
							|  |  |  |   let app2: Application; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   beforeEach(async () => { | 
					
						
							|  |  |  |     await Common.killallElectron(); | 
					
						
							|  |  |  |     await Common.stopStubSnodeServer(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const app1Props = { | 
					
						
							|  |  |  |       recoveryPhrase: Common.TEST_RECOVERY_PHRASE_1, | 
					
						
							|  |  |  |       displayName: Common.TEST_DISPLAY_NAME1, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const app2Props = { | 
					
						
							|  |  |  |       recoveryPhrase: Common.TEST_RECOVERY_PHRASE_2, | 
					
						
							|  |  |  |       displayName: Common.TEST_DISPLAY_NAME2, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [app, app2] = await Promise.all([ | 
					
						
							|  |  |  |       Common.startAndStub(app1Props), | 
					
						
							|  |  |  |       Common.startAndStubN(app2Props, 2), | 
					
						
							|  |  |  |     ]); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   afterEach(async () => { | 
					
						
							|  |  |  |     await Common.stopApp(app); | 
					
						
							|  |  |  |     await Common.killallElectron(); | 
					
						
							|  |  |  |     await Common.stopStubSnodeServer(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('addContacts: can add a contact by sessionID', async () => { | 
					
						
							|  |  |  |     const textMessage = Common.generateSendMessageText(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await app.client.element(ConversationPage.contactsButtonSection).click(); | 
					
						
							|  |  |  |     await app.client.element(ConversationPage.addContactButton).click(); | 
					
						
							|  |  |  |     await app.client.isExisting(ConversationPage.leftPaneOverlay).should | 
					
						
							|  |  |  |       .eventually.be.true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await Common.setValueWrapper( | 
					
						
							|  |  |  |       app, | 
					
						
							|  |  |  |       ConversationPage.sessionIDInput, | 
					
						
							|  |  |  |       Common.TEST_PUBKEY2 | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     await app.client | 
					
						
							|  |  |  |       .element(ConversationPage.sessionIDInput) | 
					
						
							|  |  |  |       .getValue() | 
					
						
							|  |  |  |       .should.eventually.equal(Common.TEST_PUBKEY2); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await app.client.element(ConversationPage.nextButton).click(); | 
					
						
							|  |  |  |     await app.client.waitForExist(ConversationPage.sendMessageTextarea, 1000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // send a text message to that user
 | 
					
						
							|  |  |  |     await app.client | 
					
						
							|  |  |  |       .element(ConversationPage.sendMessageTextarea) | 
					
						
							|  |  |  |       .setValue(textMessage); | 
					
						
							|  |  |  |     await app.client.keys('Enter'); | 
					
						
							|  |  |  |     await app.client.waitForExist( | 
					
						
							|  |  |  |       ConversationPage.existingSendMessageText(textMessage), | 
					
						
							|  |  |  |       1000 | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // assure session request message has been sent
 | 
					
						
							|  |  |  |     await Common.timeout(3000); | 
					
						
							|  |  |  |     await app.client.isExisting(ConversationPage.retrySendButton).should | 
					
						
							|  |  |  |       .eventually.be.false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await app2.client.waitForExist(ConversationPage.conversationItem, 5000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await app2.client.element(ConversationPage.conversationItem).click(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await app2.client.waitForExist( | 
					
						
							|  |  |  |       ConversationPage.existingReceivedMessageText(textMessage), | 
					
						
							|  |  |  |       1000 | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |