Created
May 21, 2013 04:31
-
-
Save callahad/5617492 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* This Source Code Form is subject to the terms of the Mozilla Public | |
* License, v. 2.0. If a copy of the MPL was not distributed with this | |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
const | |
assert = require('assert'), | |
gmailEq = require('../lib/gmail_compare.js'), | |
vows = require('vows'); | |
var suite = vows.describe('Gmail Equivalence'); | |
suite.addBatch({ | |
'Identical valid addresses are equivalent': function() { | |
assert.isTrue(gmailEq('[email protected]', '[email protected]')); | |
}, | |
'Identical invalid addresses are not equivalent': function() { | |
assert.isFalse(gmailEq('alice-at-gmail.com', 'alice-at-gmail.com')); | |
assert.isFalse(gmailEq('alice@@gmail.com', 'alice@@gmail.com')); | |
assert.isFalse(gmailEq('', '')); | |
assert.isFalse(gmailEq(false, false)); | |
assert.isFalse(gmailEq(undefined, undefined)); | |
}, | |
'Case is ignored': function() { | |
assert.isTrue(gmailEq('[email protected]', '[email protected]')); | |
}, | |
'Dots are ignored': { | |
'in the local part': function() { | |
assert.isTrue(gmailEq('[email protected]', '[email protected]')); | |
}, | |
'but not on the right hand side': function() { | |
assert.isFalse(gmailEq('[email protected]', '[email protected]')); | |
}, | |
}, | |
'Plus addresses are ignored': function() { | |
assert.isTrue(gmailEq('[email protected]', '[email protected]')); | |
}, | |
'Gmail and Googlemail are interchangable': function() { | |
assert.isTrue(gmailEq('[email protected]', '[email protected]')); | |
} | |
}); | |
if (process.argv[1] === __filename) { | |
suite.run(); | |
} else { | |
suite.export(module); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* This Source Code Form is subject to the terms of the Mozilla Public | |
* License, v. 2.0. If a copy of the MPL was not distributed with this | |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
const | |
valid = require('./validation/email.js'); | |
function gmailUser(s) { | |
// Normalize case | |
s = s.toLowerCase(); | |
var parts = s.split('@'); | |
var lhs = parts[0]; | |
var rhs = parts[1]; | |
// Ignore dots | |
lhs = lhs.replace(/\./g, ''); | |
// Trim plus addresses | |
if (lhs.indexOf('+') > -1) { | |
lhs = lhs.slice(0, lhs.indexOf('+')); | |
} | |
// Normalize googlemail.com to gmail.com | |
if (rhs === 'googlemail.com') { | |
rhs = 'gmail.com'; | |
} | |
return lhs + '@' + rhs; | |
} | |
module.exports = function (a, b) { | |
// Both arguments must be valid email addresses | |
if (!valid(a) || !valid(b)) { | |
return false; | |
} | |
a = gmailUser(a); | |
b = gmailUser(b); | |
return a === b; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment