Fix names with spaces in letter-avatars
Seems like there is a possible problem when a name containing a space is passed to this function. using urlencode on the name should fix possible problems here. Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
This commit is contained in:
parent
112827423a
commit
1ee9874393
2 changed files with 42 additions and 2 deletions
|
@ -30,6 +30,7 @@ exports.generateAvatarURL = function (name, email = '', big = true) {
|
||||||
if (typeof email !== 'string') {
|
if (typeof email !== 'string') {
|
||||||
email = '' + name + '@example.com'
|
email = '' + name + '@example.com'
|
||||||
}
|
}
|
||||||
|
name=encodeURIComponent(name)
|
||||||
|
|
||||||
let hash = crypto.createHash('md5')
|
let hash = crypto.createHash('md5')
|
||||||
hash.update(email.toLowerCase())
|
hash.update(email.toLowerCase())
|
||||||
|
|
|
@ -3,11 +3,50 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
const avatars = require('../lib/letter-avatars')
|
const mock = require('mock-require')
|
||||||
|
|
||||||
|
describe('generateAvatarURL() gravatar enabled', function () {
|
||||||
|
let avatars
|
||||||
|
beforeEach(function () {
|
||||||
|
// Reset config to make sure we don't influence other tests
|
||||||
|
let testconfig = {
|
||||||
|
allowGravatar: true,
|
||||||
|
serverURL: 'http://localhost:3000',
|
||||||
|
port: 3000
|
||||||
|
}
|
||||||
|
mock('../lib/config', testconfig)
|
||||||
|
avatars = mock.reRequire('../lib/letter-avatars')
|
||||||
|
})
|
||||||
|
|
||||||
describe('generateAvatarURL()', function () {
|
|
||||||
it('should return correct urls', function () {
|
it('should return correct urls', function () {
|
||||||
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', true), 'https://www.gravatar.com/avatar/d41b5f3508cc3f31865566a47dd0336b?s=400')
|
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', true), 'https://www.gravatar.com/avatar/d41b5f3508cc3f31865566a47dd0336b?s=400')
|
||||||
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', false), 'https://www.gravatar.com/avatar/d41b5f3508cc3f31865566a47dd0336b?s=96')
|
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', false), 'https://www.gravatar.com/avatar/d41b5f3508cc3f31865566a47dd0336b?s=96')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should return correct urls for names with spaces', function () {
|
||||||
|
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels'), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('generateAvatarURL() gravatar disabled', function () {
|
||||||
|
let avatars
|
||||||
|
beforeEach(function () {
|
||||||
|
// Reset config to make sure we don't influence other tests
|
||||||
|
let testconfig = {
|
||||||
|
allowGravatar: false,
|
||||||
|
serverURL: 'http://localhost:3000',
|
||||||
|
port: 3000
|
||||||
|
}
|
||||||
|
mock('../lib/config', testconfig)
|
||||||
|
avatars = mock.reRequire('../lib/letter-avatars')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return correct urls', function () {
|
||||||
|
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', true), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
|
||||||
|
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', false), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return correct urls for names with spaces', function () {
|
||||||
|
assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels'), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue