Skip to content

Commit

Permalink
fix(emails): registration tests, email no longer passed-in, API tests…
Browse files Browse the repository at this point in the history
… (confirm email for test accounts)
  • Loading branch information
julianlam committed Jul 30, 2021
1 parent e726048 commit 6694bdd
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 63 deletions.
3 changes: 3 additions & 0 deletions test/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ describe('API', async () => {
// Create sample users
const adminUid = await user.create({ username: 'admin', password: '123456', email: 'test@example.org' });
const unprivUid = await user.create({ username: 'unpriv', password: '123456', email: 'unpriv@example.org' });
await user.email.confirmByUid(adminUid);
await user.email.confirmByUid(unprivUid);

for (let x = 0; x < 4; x++) {
// eslint-disable-next-line no-await-in-loop
await user.create({ username: 'deleteme', password: '123456' }); // for testing of DELETE /users (uids 5, 6) and DELETE /user/:uid/account (uid 7)
Expand Down
94 changes: 31 additions & 63 deletions test/authentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,36 +44,6 @@ describe('authentication', () => {
}
const loginUserPromisified = util.promisify(loginUser);

function registerUser(email, username, password, callback) {
const jar = request.jar();
request({
url: `${nconf.get('url')}/api/config`,
json: true,
jar: jar,
}, (err, response, body) => {
if (err) {
return callback(err);
}

request.post(`${nconf.get('url')}/register`, {
form: {
email: email,
username: username,
password: password,
'password-confirm': password,
gdpr_consent: true,
},
json: true,
jar: jar,
headers: {
'x-csrf-token': body.csrf_token,
},
}, (err, response, body) => {
callback(err, response, body, jar);
});
});
}

const jar = request.jar();
let regularUid;
before((done) => {
Expand All @@ -88,8 +58,6 @@ describe('authentication', () => {
helpers.registerUser({
username: 'a',
password: '123456',
'password-confirm': '123456',
email: 'should@error1.com',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
Expand All @@ -102,8 +70,6 @@ describe('authentication', () => {
helpers.registerUser({
username: '----a-----',
password: '123456',
'password-confirm': '123456',
email: 'should@error2.com',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
Expand All @@ -116,8 +82,6 @@ describe('authentication', () => {
helpers.registerUser({
username: ' a',
password: '123456',
'password-confirm': '123456',
email: 'should@error3.com',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
Expand All @@ -130,8 +94,6 @@ describe('authentication', () => {
helpers.registerUser({
username: 'a ',
password: '123456',
'password-confirm': '123456',
email: 'should@error4.com',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
Expand All @@ -140,7 +102,6 @@ describe('authentication', () => {
});
});


it('should register and login a user', (done) => {
request({
url: `${nconf.get('url')}/api/config`,
Expand Down Expand Up @@ -360,7 +321,10 @@ describe('authentication', () => {

it('should fail to register if registraton is disabled', (done) => {
meta.config.registrationType = 'disabled';
registerUser('some@user.com', 'someuser', 'somepassword', (err, response, body) => {
helpers.registerUser({
username: 'someuser',
password: 'somepassword',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 403);
assert.equal(body, 'Forbidden');
Expand All @@ -370,7 +334,10 @@ describe('authentication', () => {

it('should return error if invitation is not valid', (done) => {
meta.config.registrationType = 'invite-only';
registerUser('some@user.com', 'someuser', 'somepassword', (err, response, body) => {
helpers.registerUser({
username: 'someuser',
password: 'somepassword',
}, (err, jar, response, body) => {
meta.config.registrationType = 'normal';
assert.ifError(err);
assert.equal(response.statusCode, 400);
Expand All @@ -379,21 +346,18 @@ describe('authentication', () => {
});
});

it('should fail to register if email is falsy', (done) => {
registerUser('', 'someuser', 'somepassword', (err, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
assert.equal(body, '[[error:invalid-email]]');
done();
});
});

it('should fail to register if username is falsy or too short', (done) => {
registerUser('some@user.com', '', 'somepassword', (err, response, body) => {
helpers.registerUser({
username: '',
password: 'somepassword',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
assert.equal(body, '[[error:username-too-short]]');
registerUser('some@user.com', 'a', 'somepassword', (err, response, body) => {
helpers.registerUser({
username: 'a',
password: 'somepassword',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
assert.equal(body, '[[error:username-too-short]]');
Expand All @@ -403,7 +367,10 @@ describe('authentication', () => {
});

it('should fail to register if username is too long', (done) => {
registerUser('some@user.com', 'thisisareallylongusername', '123456', (err, response, body) => {
helpers.registerUser({
username: 'thisisareallylongusername',
password: '123456',
}, (err, jar, response, body) => {
assert.ifError(err);
assert.equal(response.statusCode, 400);
assert.equal(body, '[[error:username-too-long]]');
Expand All @@ -413,7 +380,12 @@ describe('authentication', () => {

it('should queue user if ip is used before', (done) => {
meta.config.registrationApprovalType = 'admin-approval-ip';
registerUser('another@user.com', 'anotheruser', 'anotherpwd', (err, response, body) => {
helpers.registerUser({
email: 'another@user.com',
username: 'anotheruser',
password: 'anotherpwd',
gdpr_consent: 1,
}, (err, jar, response, body) => {
meta.config.registrationApprovalType = 'normal';
assert.ifError(err);
assert.equal(response.statusCode, 200);
Expand All @@ -423,15 +395,11 @@ describe('authentication', () => {
});


it('should be able to login with email', (done) => {
user.create({ username: 'ginger', password: '123456', email: 'ginger@nodebb.org' }, (err) => {
assert.ifError(err);
loginUser('ginger@nodebb.org', '123456', (err, response) => {
assert.ifError(err);
assert.equal(response.statusCode, 200);
done();
});
});
it('should be able to login with email', async () => {
const uid = await user.create({ username: 'ginger', password: '123456', email: 'ginger@nodebb.org' });
await user.email.confirmByUid(uid);
const response = await loginUserPromisified('ginger@nodebb.org', '123456');
assert.equal(response.statusCode, 200);
});

it('should fail to login if login type is username and an email is sent', (done) => {
Expand Down
4 changes: 4 additions & 0 deletions test/helpers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ helpers.registerUser = function (data, callback) {
return callback(err);
}

if (!data.hasOwnProperty('password-confirm')) {
data['password-confirm'] = data.password;
}

request.post(`${nconf.get('url')}/register`, {
form: data,
json: true,
Expand Down

0 comments on commit 6694bdd

Please sign in to comment.