Skip to content

Commit

Permalink
feat(test): testing login middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
serge1peshcoff committed Feb 6, 2020
1 parent 7f16cff commit 37464d6
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 1 deletion.
73 changes: 73 additions & 0 deletions test/api/logged-in.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
const { startServer, stopServer } = require('../../lib/server.js');
const { request } = require('../scripts/helpers');
const generator = require('../scripts/generator');

describe('Logged in middleware', () => {
beforeAll(async () => {
await startServer();
});

afterAll(async () => {
await stopServer();
});

afterEach(async () => {
await generator.clearAll();
});

test('should fail if the token is not provided', async () => {
const res = await request({
uri: '/members/me',
method: 'GET'
});

expect(res.statusCode).toEqual(401);
expect(res.body.success).toEqual(false);
expect(res.body).not.toHaveProperty('data');
expect(res.body).toHaveProperty('message');
});

test('should fail if the token is invalid', async () => {
const res = await request({
uri: '/members/me',
method: 'GET',
headers: { 'X-Auth-Token': 'blablabla' },
});

expect(res.statusCode).toEqual(401);
expect(res.body.success).toEqual(false);
expect(res.body).not.toHaveProperty('data');
expect(res.body).toHaveProperty('message');
});

test('should fail if the token expires', async () => {
const user = await generator.createUser({ password: 'test', mail_confirmed_at: null });
const token = await generator.createAccessToken({ expires_at: new Date() }, user);
const res = await request({
uri: '/members/me',
method: 'GET',
headers: { 'X-Auth-Token': token.value },
});

expect(res.statusCode).toEqual(401);
expect(res.body.success).toEqual(false);
expect(res.body).not.toHaveProperty('data');
expect(res.body).toHaveProperty('message');
});

test('should succeed if everything is okay', async () => {
const user = await generator.createUser({ password: 'test', mail_confirmed_at: new Date() });
const token = await generator.createAccessToken({}, user);

const res = await request({
uri: '/members/me',
method: 'GET',
headers: { 'X-Auth-Token': token.value }
});

expect(res.statusCode).toEqual(200);
expect(res.body.success).toEqual(true);
expect(res.body).toHaveProperty('data');
expect(res.body).not.toHaveProperty('errors');
});
});
13 changes: 12 additions & 1 deletion test/scripts/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,22 @@ exports.generateRefreshToken = (options = {}, user) => {
return options;
};


exports.createRefreshToken = (options = {}, user = null) => {
return RefreshToken.create(exports.generateRefreshToken(options, user));
};

exports.generateAccessToken = (options = {}, user) => {
if (notSet(options.value)) options.value = faker.random.alphaNumeric(16);
if (notSet(options.expires_at)) options.expires_at = faker.date.future();
if (user) options.user_id = user.id;

return options;
};

exports.createAccessToken = (options = {}, user = null) => {
return AccessToken.create(exports.generateAccessToken(options, user));
};

exports.clearAll = async () => {
await AccessToken.destroy({ where: {}, truncate: { cascade: true } });
await RefreshToken.destroy({ where: {}, truncate: { cascade: true } });
Expand Down

0 comments on commit 37464d6

Please sign in to comment.