You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			145 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			145 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
| /* eslint-disable prefer-arrow-callback */
 | |
| /* eslint-disable func-names  */
 | |
| /* eslint-disable import/no-extraneous-dependencies */
 | |
| 
 | |
| const { afterEach, beforeEach, describe, it } = require('mocha');
 | |
| 
 | |
| const common = require('./common');
 | |
| const SettingsPage = require('./page-objects/settings.page');
 | |
| const RegistrationPage = require('./page-objects/registration.page');
 | |
| const ConversationPage = require('./page-objects/conversation.page');
 | |
| 
 | |
| describe('Window Test and Login', function() {
 | |
|   let app;
 | |
|   this.timeout(20000);
 | |
|   this.slow(15000);
 | |
| 
 | |
|   beforeEach(async () => {
 | |
|     await common.killallElectron();
 | |
|   });
 | |
| 
 | |
|   afterEach(async () => {
 | |
|     await common.stopApp(app);
 | |
|     await common.killallElectron();
 | |
|   });
 | |
| 
 | |
|   it('registration: opens one window', async () => {
 | |
|     app = await common.startAndAssureCleanedApp();
 | |
|     app.client.getWindowCount().should.eventually.be.equal(1);
 | |
|   });
 | |
| 
 | |
|   it('registration: window title is correct', async () => {
 | |
|     app = await common.startAndAssureCleanedApp();
 | |
| 
 | |
|     app.client
 | |
|       .getTitle()
 | |
|       .should.eventually.be.equal('Session - test-integration-session');
 | |
|   });
 | |
| 
 | |
|   it('registration: can restore from seed', async () => {
 | |
|     app = await common.startAndAssureCleanedApp();
 | |
| 
 | |
|     await app.client.element(RegistrationPage.registrationTabSignIn).click();
 | |
|     await app.client.element(RegistrationPage.restoreFromSeedMode).click();
 | |
|     await app.client
 | |
|       .element(RegistrationPage.recoveryPhraseInput)
 | |
|       .setValue(common.TEST_MNEMONIC1);
 | |
|     await app.client
 | |
|       .element(RegistrationPage.displayNameInput)
 | |
|       .setValue(common.TEST_DISPLAY_NAME1);
 | |
| 
 | |
|     // validate fields are filled
 | |
|     await app.client
 | |
|       .element(RegistrationPage.recoveryPhraseInput)
 | |
|       .getValue()
 | |
|       .should.eventually.equal(common.TEST_MNEMONIC1);
 | |
|     await app.client
 | |
|       .element(RegistrationPage.displayNameInput)
 | |
|       .getValue()
 | |
|       .should.eventually.equal(common.TEST_DISPLAY_NAME1);
 | |
| 
 | |
|     // trigger login
 | |
|     await app.client.element(RegistrationPage.continueSessionButton).click();
 | |
|     await app.client.waitForExist(
 | |
|       RegistrationPage.conversationListContainer,
 | |
|       4000
 | |
|     );
 | |
| 
 | |
|     await common.timeout(2000);
 | |
| 
 | |
|     await app.webContents
 | |
|       .executeJavaScript("window.storage.get('primaryDevicePubKey')")
 | |
|       .should.eventually.be.equal(common.TEST_PUBKEY1);
 | |
|   });
 | |
| 
 | |
|   it('registration: can create new account', async () => {
 | |
|     app = await common.startAndAssureCleanedApp();
 | |
|     await app.client.element(RegistrationPage.createSessionIDButton).click();
 | |
|     // wait for the animation of generated pubkey to finish
 | |
|     await common.timeout(2000);
 | |
|     const pubkeyGenerated = await app.client
 | |
|       .element(RegistrationPage.textareaGeneratedPubkey)
 | |
|       .getValue();
 | |
|     // validate generated pubkey
 | |
|     pubkeyGenerated.should.have.lengthOf(66);
 | |
|     pubkeyGenerated.substr(0, 2).should.be.equal('05');
 | |
|     await app.client.element(RegistrationPage.continueButton).click();
 | |
|     await app.client.isExisting(RegistrationPage.displayNameInput).should
 | |
|       .eventually.be.true;
 | |
|     await app.client
 | |
|       .element(RegistrationPage.displayNameInput)
 | |
|       .setValue(common.TEST_DISPLAY_NAME1);
 | |
|     await app.client.element(RegistrationPage.getStartedButton).click();
 | |
|     await app.client.waitForExist(
 | |
|       ConversationPage.conversationButtonSection,
 | |
|       5000
 | |
|     );
 | |
| 
 | |
|     await app.webContents
 | |
|       .executeJavaScript("window.storage.get('primaryDevicePubKey')")
 | |
|       .should.eventually.be.equal(pubkeyGenerated);
 | |
|   });
 | |
| 
 | |
|   it('registration: can delete account when logged in', async () => {
 | |
|     // login as user1
 | |
|     const login = {
 | |
|       mnemonic: common.TEST_MNEMONIC1,
 | |
|       displayName: common.TEST_DISPLAY_NAME1,
 | |
|     };
 | |
|     app = await common.startAndStub(login);
 | |
| 
 | |
|     await app.client.waitForExist(
 | |
|       RegistrationPage.conversationListContainer,
 | |
|       4000
 | |
|     );
 | |
| 
 | |
|     await app.webContents
 | |
|       .executeJavaScript("window.storage.get('primaryDevicePubKey')")
 | |
|       .should.eventually.be.equal(common.TEST_PUBKEY1);
 | |
|     // delete account
 | |
|     await app.client.element(SettingsPage.settingsButtonSection).click();
 | |
|     await app.client.element(ConversationPage.deleteAccountButton).click();
 | |
|     await app.client.isExisting(ConversationPage.descriptionDeleteAccount)
 | |
|       .should.eventually.be.true;
 | |
|     // click on the modal OK button to delete the account
 | |
|     await app.client.element(ConversationPage.validateDeleteAccount).click();
 | |
|     // wait for the app restart
 | |
|     await common.timeout(2000);
 | |
| 
 | |
|     // Spectron will loose the connection with the app during the app restart.
 | |
|     // We have to restart the app without altering the logged in user or anything here, just to get a valid new ref to the app.
 | |
|     await common.stopApp(app);
 | |
|     app = await common.startApp();
 | |
| 
 | |
|     // validate that on app start, the registration sign in is shown
 | |
|     await app.client.waitForExist(RegistrationPage.registrationTabSignIn, 3000);
 | |
|     // validate that no pubkey are set in storage
 | |
|     await app.webContents
 | |
|       .executeJavaScript("window.storage.get('primaryDevicePubKey')")
 | |
|       .should.eventually.be.equal(null);
 | |
|     // and that the conversation list is not shown
 | |
|     await app.client.isExisting(RegistrationPage.conversationListContainer)
 | |
|       .should.eventually.be.false;
 | |
|   });
 | |
| });
 |