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.
		
		
		
		
		
			
		
			
				
	
	
		
			157 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
| 'use strict';
 | |
| 
 | |
| describe("AccountManager", function() {
 | |
|   let accountManager;
 | |
|   let originalServer;
 | |
| 
 | |
|   before(function() {
 | |
|     originalServer = window.TextSecureServer;
 | |
|     window.TextSecureServer = function() {};
 | |
|   });
 | |
|   after(function() {
 | |
|     window.TextSecureServer = originalServer;
 | |
|   });
 | |
| 
 | |
|   beforeEach(function() {
 | |
|     accountManager = new window.textsecure.AccountManager();
 | |
|   });
 | |
| 
 | |
|   describe('#cleanSignedPreKeys', function() {
 | |
|     let originalProtocolStorage;
 | |
|     let signedPreKeys;
 | |
|     const DAY = 1000 * 60 * 60 * 24;
 | |
| 
 | |
|     beforeEach(function() {
 | |
|       originalProtocolStorage = window.textsecure.storage.protocol;
 | |
|       window.textsecure.storage.protocol = {
 | |
|         loadSignedPreKeys: function() {
 | |
|           return Promise.resolve(signedPreKeys);
 | |
|         },
 | |
|       };
 | |
|     });
 | |
|     afterEach(function() {
 | |
|       window.textsecure.storage.protocol = originalProtocolStorage;
 | |
|     });
 | |
| 
 | |
|     it('keeps three confirmed keys even if over a week old', function() {
 | |
|       const now = Date.now();
 | |
|       signedPreKeys = [{
 | |
|         keyId: 1,
 | |
|         created_at: now - DAY * 21,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 2,
 | |
|         created_at: now - DAY * 14,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 3,
 | |
|         created_at: now - DAY * 18,
 | |
|         confirmed: true,
 | |
|       }];
 | |
| 
 | |
|       // should be no calls to store.removeSignedPreKey, would cause crash
 | |
|       return accountManager.cleanSignedPreKeys();
 | |
|     });
 | |
| 
 | |
|     it('eliminates confirmed keys over a week old, if more than three', function() {
 | |
|       const now = Date.now();
 | |
|       signedPreKeys = [{
 | |
|         keyId: 1,
 | |
|         created_at: now - DAY * 21,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 2,
 | |
|         created_at: now - DAY * 14,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 3,
 | |
|         created_at: now - DAY * 4,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 4,
 | |
|         created_at: now - DAY * 18,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 5,
 | |
|         created_at: now - DAY,
 | |
|         confirmed: true,
 | |
|       }];
 | |
| 
 | |
|       let count = 0;
 | |
|       window.textsecure.storage.protocol.removeSignedPreKey = function(keyId) {
 | |
|         if (keyId !== 1 && keyId !== 4) {
 | |
|           throw new Error('Wrong keys were eliminated! ' + keyId);
 | |
|         }
 | |
| 
 | |
|         count++;
 | |
|       };
 | |
| 
 | |
|       return accountManager.cleanSignedPreKeys().then(function() {
 | |
|         assert.strictEqual(count, 2);
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('keeps at least three unconfirmed keys if no confirmed', function() {
 | |
|       const now = Date.now();
 | |
|       signedPreKeys = [{
 | |
|         keyId: 1,
 | |
|         created_at: now - DAY * 14,
 | |
|       }, {
 | |
|         keyId: 2,
 | |
|         created_at: now - DAY * 21,
 | |
|       }, {
 | |
|         keyId: 3,
 | |
|         created_at: now - DAY * 18,
 | |
|       }, {
 | |
|         keyId: 4,
 | |
|         created_at: now - DAY
 | |
|       }];
 | |
| 
 | |
|       let count = 0;
 | |
|       window.textsecure.storage.protocol.removeSignedPreKey = function(keyId) {
 | |
|         if (keyId !== 2) {
 | |
|           throw new Error('Wrong keys were eliminated! ' + keyId);
 | |
|         }
 | |
| 
 | |
|         count++;
 | |
|       };
 | |
| 
 | |
|       return accountManager.cleanSignedPreKeys().then(function() {
 | |
|         assert.strictEqual(count, 1);
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('if some confirmed keys, keeps unconfirmed to addd up to three total', function() {
 | |
|       const now = Date.now();
 | |
|       signedPreKeys = [{
 | |
|         keyId: 1,
 | |
|         created_at: now - DAY * 21,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 2,
 | |
|         created_at: now - DAY * 14,
 | |
|         confirmed: true,
 | |
|       }, {
 | |
|         keyId: 3,
 | |
|         created_at: now - DAY * 12,
 | |
|       }, {
 | |
|         keyId: 4,
 | |
|         created_at: now - DAY * 8,
 | |
|       }];
 | |
| 
 | |
|       let count = 0;
 | |
|       window.textsecure.storage.protocol.removeSignedPreKey = function(keyId) {
 | |
|         if (keyId !== 3) {
 | |
|           throw new Error('Wrong keys were eliminated! ' + keyId);
 | |
|         }
 | |
| 
 | |
|         count++;
 | |
|       };
 | |
| 
 | |
|       return accountManager.cleanSignedPreKeys().then(function() {
 | |
|         assert.strictEqual(count, 1);
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| });
 |