Fix user join ban check for users with blank names (but clean IPs)
This commit is contained in:
parent
f6500ff745
commit
a594b19745
4 changed files with 143 additions and 5 deletions
130
integration_test/regressions/checkban-blank-name.js
Normal file
130
integration_test/regressions/checkban-blank-name.js
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
const assert = require('assert');
|
||||
const KickbanModule = require('../../lib/channel/kickban');
|
||||
const db = require('../../lib/database');
|
||||
const dbChannels = require('../../lib/database/channels');
|
||||
const Promise = require('bluebird');
|
||||
const Config = require('../../lib/config');
|
||||
const ChannelModule = require('../../lib/channel/module');
|
||||
const Flags = require('../../lib/flags');
|
||||
const TestConfig = require('../../integration-test-config.json');
|
||||
require('../../lib/counters');
|
||||
|
||||
function randomString(length) {
|
||||
const chars = 'abcdefgihkmnpqrstuvwxyz0123456789';
|
||||
let str = '';
|
||||
for (let i = 0; i < length; i++) {
|
||||
str += chars[Math.floor(Math.random() * chars.length)];
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
Config.set('mysql.password', TestConfig.mysql.password);
|
||||
db.init();
|
||||
|
||||
describe('onPreUserJoin Ban Check', () => {
|
||||
const channelName = `test_${randomString(20)}`;
|
||||
const bannedIP = '1.1.1.1';
|
||||
const bannedName = 'troll';
|
||||
const mockChannel = {
|
||||
name: channelName,
|
||||
modules: {},
|
||||
is(flag) {
|
||||
return flag === Flags.C_REGISTERED;
|
||||
}
|
||||
};
|
||||
const module = new KickbanModule(mockChannel);
|
||||
before(done => {
|
||||
dbChannels.ban(channelName, bannedIP, bannedName, '', '', () => {
|
||||
dbChannels.ban(channelName, bannedIP, '', '', '', () => {
|
||||
dbChannels.ban(channelName, '*', bannedName, '', '', () => {
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
after(done => {
|
||||
dbChannels.deleteBans(channelName, null, () => {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles a banned IP with a different name', done => {
|
||||
const user = {
|
||||
getName() {
|
||||
return 'anotherTroll';
|
||||
},
|
||||
|
||||
realip: bannedIP
|
||||
};
|
||||
|
||||
module.onUserPreJoin(user, null, (error, res) => {
|
||||
assert.equal(error, null, `Unexpected error: ${error}`);
|
||||
assert.equal(res, ChannelModule.DENY, 'Expected user to be banned');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles a banned name with a different IP', done => {
|
||||
const user = {
|
||||
getName() {
|
||||
return 'troll';
|
||||
},
|
||||
|
||||
realip: '5.5.5.5'
|
||||
};
|
||||
|
||||
module.onUserPreJoin(user, null, (error, res) => {
|
||||
assert.equal(error, null, `Unexpected error: ${error}`);
|
||||
assert.equal(res, ChannelModule.DENY, 'Expected user to be banned');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles a banned IP with a blank name', done => {
|
||||
const user = {
|
||||
getName() {
|
||||
return '';
|
||||
},
|
||||
|
||||
realip: bannedIP
|
||||
};
|
||||
|
||||
module.onUserPreJoin(user, null, (error, res) => {
|
||||
assert.equal(error, null, `Unexpected error: ${error}`);
|
||||
assert.equal(res, ChannelModule.DENY, 'Expected user to be banned');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles a non-banned IP with a blank name', done => {
|
||||
const user = {
|
||||
getName() {
|
||||
return '';
|
||||
},
|
||||
|
||||
realip: '5.5.5.5'
|
||||
};
|
||||
|
||||
module.onUserPreJoin(user, null, (error, res) => {
|
||||
assert.equal(error, null, `Unexpected error: ${error}`);
|
||||
assert.equal(res, ChannelModule.PASSTHROUGH, 'Expected user not to be banned');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles a non-banned IP with a non-banned name', done => {
|
||||
const user = {
|
||||
getName() {
|
||||
return 'some_user';
|
||||
},
|
||||
|
||||
realip: '5.5.5.5'
|
||||
};
|
||||
|
||||
module.onUserPreJoin(user, null, (error, res) => {
|
||||
assert.equal(error, null, `Unexpected error: ${error}`);
|
||||
assert.equal(res, ChannelModule.PASSTHROUGH, 'Expected user not to be banned');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue