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.
		
		
		
		
		
			
		
			
				
	
	
		
			154 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			154 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
| /* eslint-disable func-names  */
 | |
| /* eslint-disable import/no-extraneous-dependencies */
 | |
| const { afterEach, beforeEach, describe, it } = require('mocha');
 | |
| const common = require('./common');
 | |
| 
 | |
| const ConversationPage = require('./page-objects/conversation.page');
 | |
| 
 | |
| async function generateAndSendMessage(app) {
 | |
|   // send a message from app and validate it is received on app2
 | |
|   const textMessage = common.generateSendMessageText();
 | |
|   await app.client
 | |
|     .element(ConversationPage.sendMessageTextarea)
 | |
|     .setValue(textMessage);
 | |
| 
 | |
|   await app.client
 | |
|     .element(ConversationPage.sendMessageTextarea)
 | |
|     .getValue()
 | |
|     .should.eventually.equal(textMessage);
 | |
|   // send the message
 | |
|   await app.client.keys('Enter');
 | |
| 
 | |
|   // validate that the message has been added to the message list view
 | |
|   await app.client.waitForExist(
 | |
|     ConversationPage.existingSendMessageText(textMessage),
 | |
|     2000
 | |
|   );
 | |
| 
 | |
|   return textMessage;
 | |
| }
 | |
| 
 | |
| async function makeFriendsPlusMessage(app, [app2, pubkey]) {
 | |
|   await common.makeFriends(app, [app2, pubkey]);
 | |
| 
 | |
|   // Send something back so that `app` can see our name
 | |
|   const text = await generateAndSendMessage(app2);
 | |
|   await app.client.waitForExist(
 | |
|     ConversationPage.existingReceivedMessageText(text),
 | |
|     8000
 | |
|   );
 | |
| 
 | |
|   // Click away so we can call this function again
 | |
|   await app.client.element(ConversationPage.conversationButtonSection).click();
 | |
| }
 | |
| 
 | |
| async function testTwoMembers() {
 | |
|   const [app, app2] = await common.startAppsAsFriends();
 | |
| 
 | |
|   const useSenderKeys = true;
 | |
| 
 | |
|   // create group and add new friend
 | |
|   await common.addFriendToNewClosedGroup([app, app2], useSenderKeys);
 | |
| 
 | |
|   const text1 = await generateAndSendMessage(app);
 | |
| 
 | |
|   // validate that the message has been added to the message list view
 | |
|   await app2.client.waitForExist(
 | |
|     ConversationPage.existingReceivedMessageText(text1),
 | |
|     5000
 | |
|   );
 | |
| 
 | |
|   // Send a message back:
 | |
|   const text2 = await generateAndSendMessage(app2);
 | |
| 
 | |
|   // TODO: fix this. We can send messages back manually, not sure
 | |
|   // why this test fails
 | |
|   await app.client.waitForExist(
 | |
|     ConversationPage.existingReceivedMessageText(text2),
 | |
|     10000
 | |
|   );
 | |
| }
 | |
| 
 | |
| async function testThreeMembers() {
 | |
|   // 1. Make three clients A, B, C
 | |
| 
 | |
|   const app1Props = {
 | |
|     mnemonic: common.TEST_MNEMONIC1,
 | |
|     displayName: common.TEST_DISPLAY_NAME1,
 | |
|     stubSnode: true,
 | |
|   };
 | |
| 
 | |
|   const app2Props = {
 | |
|     mnemonic: common.TEST_MNEMONIC2,
 | |
|     displayName: common.TEST_DISPLAY_NAME2,
 | |
|     stubSnode: true,
 | |
|   };
 | |
| 
 | |
|   const app3Props = {
 | |
|     mnemonic: common.TEST_MNEMONIC3,
 | |
|     displayName: common.TEST_DISPLAY_NAME3,
 | |
|     stubSnode: true,
 | |
|   };
 | |
| 
 | |
|   const [app1, app2, app3] = await Promise.all([
 | |
|     common.startAndStub(app1Props),
 | |
|     common.startAndStubN(app2Props, 2),
 | |
|     common.startAndStubN(app3Props, 3),
 | |
|   ]);
 | |
| 
 | |
|   // 2. Make A friends with B and C (B and C are not friends)
 | |
| 
 | |
|   await makeFriendsPlusMessage(app1, [app2, common.TEST_PUBKEY2]);
 | |
|   await makeFriendsPlusMessage(app1, [app3, common.TEST_PUBKEY3]);
 | |
| 
 | |
|   const useSenderKeys = true;
 | |
| 
 | |
|   // 3. Add all three to the group
 | |
| 
 | |
|   await common.addFriendToNewClosedGroup([app1, app2, app3], useSenderKeys);
 | |
| 
 | |
|   // 4. Test that all members can see the message from app1
 | |
|   const text1 = await generateAndSendMessage(app1);
 | |
| 
 | |
|   await app2.client.waitForExist(
 | |
|     ConversationPage.existingReceivedMessageText(text1),
 | |
|     5000
 | |
|   );
 | |
| 
 | |
|   await app3.client.waitForExist(
 | |
|     ConversationPage.existingReceivedMessageText(text1),
 | |
|     5000
 | |
|   );
 | |
| 
 | |
|   // TODO: test that B and C can send messages to the group
 | |
| 
 | |
|   // const text2 = await generateAndSendMessage(app3);
 | |
| 
 | |
|   // await app2.client.waitForExist(
 | |
|   //   ConversationPage.existingReceivedMessageText(text2),
 | |
|   //   5000
 | |
|   // );
 | |
| }
 | |
| 
 | |
| describe('senderkeys', function() {
 | |
|   let app;
 | |
| 
 | |
|   this.timeout(600000);
 | |
|   this.slow(40000);
 | |
| 
 | |
|   beforeEach(async () => {
 | |
|     await common.killallElectron();
 | |
|     await common.stopStubSnodeServer();
 | |
|   });
 | |
| 
 | |
|   afterEach(async () => {
 | |
|     await common.stopApp(app);
 | |
|     await common.killallElectron();
 | |
|     await common.stopStubSnodeServer();
 | |
|   });
 | |
| 
 | |
|   it('Two member group', testTwoMembers);
 | |
| 
 | |
|   it('Three member group: test session requests', testThreeMembers);
 | |
| });
 |