diff --git a/addons/mail/static/src/js/utils.js b/addons/mail/static/src/js/utils.js index b93b115ebe91a29632634348e5ec830f843ab6e2..164c3765264f690f2640fff7ffe3ba91a6738fa4 100644 --- a/addons/mail/static/src/js/utils.js +++ b/addons/mail/static/src/js/utils.js @@ -65,7 +65,7 @@ var _escapeEntities = (function () { // Suggested URL Javascript regex of http://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url // Adapted to make http(s):// not required if (and only if) www. is given. So `should.notmatch` does not match. // And further extended to include Latin-1 Supplement, Latin Extended-A, Latin Extended-B and Latin Extended Additional. -var urlRegexp = /\b(?:https?:\/\/\d{1,3}(?:\.\d{1,3}){3}|(?:https?:\/\/|(?:www\.))[-a-z0-9@:%_+~#=\u00C0-\u024F\u1E00-\u1EFF]{2,256}\.[a-z]{2,13})\b(?:[-a-z0-9@:%_+~#?&[\]^|{}`\\'$//=\u00C0-\u024F\u1E00-\u1EFF]|,(?!$| )|\.(?!$| |\.)|;(?!$| ))*/gi; +var urlRegexp = /\b(?:https?:\/\/\d{1,3}(?:\.\d{1,3}){3}|(?:https?:\/\/|(?:www\.))[-a-z0-9@:%._+~#=\u00C0-\u024F\u1E00-\u1EFF]{2,256}\.[a-z]{2,13})\b(?:[-a-z0-9@:%_+~#?&[\]^|{}`\\'$//=\u00C0-\u024F\u1E00-\u1EFF]|,(?!$| )|\.(?!$| |\.)|;(?!$| ))*/gi; /** * @param {string} text * @param {Object} [attrs={}] diff --git a/addons/mail/static/tests/qunit_suite_tests/utils/mail_utils_tests.js b/addons/mail/static/tests/qunit_suite_tests/utils/mail_utils_tests.js index 11a63975ede922f9f84a6b4b98b3d045fff26251..9d1f439605e41714bfeba41a86e819394f6aef20 100644 --- a/addons/mail/static/tests/qunit_suite_tests/utils/mail_utils_tests.js +++ b/addons/mail/static/tests/qunit_suite_tests/utils/mail_utils_tests.js @@ -8,7 +8,7 @@ QUnit.module('mail', {}, function () { QUnit.module('Mail utils'); QUnit.test('add_link utility function', function (assert) { - assert.expect(19); + assert.expect(27); var testInputs = { 'http://admin:password@example.com:8/%2020': true, @@ -22,6 +22,14 @@ QUnit.test('add_link utility function', function (assert) { 'https://www.transifex.com/odoo/odoo-11/translate/#fr/$/119303430?q=text%3ATartiflette': true, 'https://tenor.com/view/chỗgiặt-dog-smile-gif-13860250': true, 'http://www.boîtenoire.be': true, + // Subdomain different than `www` with long domain name + 'https://xyz.veryveryveryveryverylongdomainname.com/example': true, + // Two subdomains + 'https://abc.xyz.veryveryveryveryverylongdomainname.com/example': true, + // Long domain name with www + 'https://www.veryveryveryveryverylongdomainname.com/example': true, + // Subdomain with numbers + 'https://www.45017478-master-all.runbot134.odoo.com/web': true, }; _.each(testInputs, function (willLinkify, content) {