mirror of
https://github.com/moparisthebest/mail
synced 2024-11-22 17:02:17 -05:00
fix whitelist filtering in email dao
This commit is contained in:
parent
58ed8928e6
commit
a32e7ad8c9
@ -295,10 +295,13 @@ define(function(require) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ignore non-whiteout mails
|
// ignore non-whitelisted mails
|
||||||
headers = _.without(headers, _.filter(headers, function(header) {
|
var nonWhitelisted = _.filter(headers, function(header) {
|
||||||
return header.subject.indexOf(str.subjectPrefix) === -1;
|
return header.subject.indexOf(str.subjectPrefix) === -1;
|
||||||
}));
|
});
|
||||||
|
nonWhitelisted.forEach(function(i) {
|
||||||
|
headers.splice(headers.indexOf(i), 1);
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* delta3: memory > imap => we deleted messages directly from the remote, remove from memory and storage
|
* delta3: memory > imap => we deleted messages directly from the remote, remove from memory and storage
|
||||||
|
@ -14,7 +14,8 @@ define(function(require) {
|
|||||||
var dao, keychainStub, imapClientStub, smtpClientStub, pgpStub, devicestorageStub;
|
var dao, keychainStub, imapClientStub, smtpClientStub, pgpStub, devicestorageStub;
|
||||||
|
|
||||||
var emailAddress, passphrase, asymKeySize, mockkeyId, dummyEncryptedMail,
|
var emailAddress, passphrase, asymKeySize, mockkeyId, dummyEncryptedMail,
|
||||||
dummyDecryptedMail, mockKeyPair, account, publicKey, verificationMail, verificationUuid;
|
dummyDecryptedMail, mockKeyPair, account, publicKey, verificationMail, verificationUuid,
|
||||||
|
nonWhitelistedMail;
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
emailAddress = 'asdf@asdf.com';
|
emailAddress = 'asdf@asdf.com';
|
||||||
@ -56,6 +57,17 @@ define(function(require) {
|
|||||||
subject: '[whiteout] qweasd',
|
subject: '[whiteout] qweasd',
|
||||||
body: 'asd'
|
body: 'asd'
|
||||||
};
|
};
|
||||||
|
nonWhitelistedMail = {
|
||||||
|
uid: 1234,
|
||||||
|
from: [{
|
||||||
|
address: 'asd@asd.de'
|
||||||
|
}],
|
||||||
|
to: [{
|
||||||
|
address: 'qwe@qwe.de'
|
||||||
|
}],
|
||||||
|
subject: 'qweasd',
|
||||||
|
body: 'asd'
|
||||||
|
};
|
||||||
mockKeyPair = {
|
mockKeyPair = {
|
||||||
publicKey: {
|
publicKey: {
|
||||||
_id: mockkeyId,
|
_id: mockkeyId,
|
||||||
@ -1030,6 +1042,45 @@ define(function(require) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not fetch non-whitelisted mails', function(done) {
|
||||||
|
var invocations, folder, localListStub, imapListStub, imapGetStub, localStoreStub;
|
||||||
|
|
||||||
|
invocations = 0;
|
||||||
|
folder = 'FOLDAAAA';
|
||||||
|
dao._account.folders = [{
|
||||||
|
type: 'Folder',
|
||||||
|
path: folder,
|
||||||
|
messages: []
|
||||||
|
}];
|
||||||
|
|
||||||
|
localListStub = sinon.stub(dao, '_localListMessages').yields(null, []);
|
||||||
|
imapListStub = sinon.stub(dao, '_imapListMessages').yields(null, [nonWhitelistedMail]);
|
||||||
|
imapGetStub = sinon.stub(dao, '_imapGetMessage').yields(null, nonWhitelistedMail);
|
||||||
|
localStoreStub = sinon.stub(dao, '_localStoreMessages').yields();
|
||||||
|
|
||||||
|
dao.sync({
|
||||||
|
folder: folder
|
||||||
|
}, function(err) {
|
||||||
|
expect(err).to.not.exist;
|
||||||
|
|
||||||
|
if (invocations === 0) {
|
||||||
|
expect(dao._account.busy).to.be.true;
|
||||||
|
invocations++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(dao._account.busy).to.be.false;
|
||||||
|
expect(dao._account.folders[0].messages).to.be.empty;
|
||||||
|
expect(localListStub.calledOnce).to.be.true;
|
||||||
|
expect(imapListStub.calledOnce).to.be.true;
|
||||||
|
expect(imapGetStub.called).to.be.false;
|
||||||
|
expect(localStoreStub.called).to.be.false;
|
||||||
|
expect(keychainStub.getReceiverPublicKey.called).to.be.false;
|
||||||
|
expect(pgpStub.decrypt.called).to.be.false;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should error while decrypting fetch messages from the remote', function(done) {
|
it('should error while decrypting fetch messages from the remote', function(done) {
|
||||||
var invocations, folder, localListStub, imapListStub, imapGetStub, localStoreStub;
|
var invocations, folder, localListStub, imapListStub, imapGetStub, localStoreStub;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user