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.
		
		
		
		
		
			
		
			
				
	
	
		
			149 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			TypeScript
		
	
/* eslint-disable prefer-arrow-callback */
 | 
						|
/* eslint-disable func-names  */
 | 
						|
/* eslint-disable import/no-extraneous-dependencies */
 | 
						|
// tslint:disable: no-implicit-dependencies
 | 
						|
// tslint:disable: await-promise
 | 
						|
// tslint:disable: no-invalid-this
 | 
						|
 | 
						|
import { afterEach, beforeEach, describe, it } from 'mocha';
 | 
						|
import { Common } from './common';
 | 
						|
import { Application } from 'spectron';
 | 
						|
 | 
						|
import SettingsPage from './page-objects/settings.page';
 | 
						|
import RegistrationPage from './page-objects/registration.page';
 | 
						|
import ConversationPage from './page-objects/conversation.page';
 | 
						|
 | 
						|
describe('Window Test and Login', function() {
 | 
						|
  this.timeout(60000);
 | 
						|
  this.slow(20000);
 | 
						|
  let app: Application;
 | 
						|
 | 
						|
  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_RECOVERY_PHRASE_1);
 | 
						|
    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_RECOVERY_PHRASE_1);
 | 
						|
    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 = {
 | 
						|
      recoveryPhrase: Common.TEST_RECOVERY_PHRASE_1,
 | 
						|
      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;
 | 
						|
  });
 | 
						|
});
 |