Skip to content

Commit

Permalink
(auth) Create Get User By Id endpoint
Browse files Browse the repository at this point in the history
- Create endpoint
- Write tests for the endpoint
[Delivers #165119461]
  • Loading branch information
Easybuoy committed Apr 4, 2019
1 parent 0033230 commit b0753eb
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 4 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
"nyc": {
"exclude": [
"server/app.js",
"server/config/keys.js"
"server/config/",
"server/build"
]
},
"author": "Ekunola Ezekiel",
Expand Down
64 changes: 64 additions & 0 deletions server/test/sales.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,4 +226,68 @@ describe('Get All Sale Records', () => {
done();
});
});

it('returns unauthorized because user is not logged in', (done) => {
chai.request(app).get('/api/v1/sales/2')
.end((error, res) => {
expect(res).to.have.status(401);
done();
});
});

it('returns details of a sale', (done) => {
chai.request(app).get('/api/v1/sales/')
.set('Authorization', storeownertoken)
.end((err, res) => {
expect(res).to.have.status(200);
expect(res.body.data).to.be.an('array');
const { sale_id } = res.body.data[0];
chai.request(app).get(`/api/v1/sales/${sale_id}`)
.set('Authorization', storeownertoken)
.end((error, data) => {
expect(data).to.have.status(200);
expect(data.body.data).to.be.an('array');
done();
});
});
});

it('return sale not found error', (done) => {
chai.request(app).get('/api/v1/sales/')
.set('Authorization', storeownertoken)
.end((err, res) => {
expect(res).to.have.status(200);
expect(res.body.data).to.be.an('array');
let { sale_id } = res.body.data[0];
sale_id = sale_id.substring(2);
sale_id = `93${sale_id}`;
chai.request(app).get(`/api/v1/sales/${sale_id}`)
.set('Authorization', storeownertoken)
.end((error, data) => {
expect(data).to.have.status(400);
expect(data.body).to.be.an('object');
expect(data.body.message).to.equal(`Sale with id ${sale_id} not found. Or Unauthorized Access`);
done();
});
});
});

it('return error fetching sale error', (done) => {
chai.request(app).get('/api/v1/sales')
.set('Authorization', storeownertoken)
.end((err, res) => {
expect(res).to.have.status(200);
expect(res.body.data).to.be.an('array');
let { id } = res.body.data[0];
id = `93${id}`;
chai.request(app).get(`/api/v1/sales/${id}`)
.set('Authorization', storeownertoken)
.end((error, data) => {
expect(data).to.have.status(400);
expect(data.body).to.be.an('object');
expect(data.body.message).to.equal('Error Fetching Sale Details, Please try again');
done();
});
});
});
});
42 changes: 39 additions & 3 deletions server/test/usersValidation.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ describe('Login Validation', () => {
});


describe('Login Validation', () => {
describe('Signup Validation', () => {
it('returns empty object because all validation is passed', (done) => {
const result = usersValidation.validateLoginInput(
const result = usersValidation.validateSignupInput(
{
email: 'example@gmail.com', password: '123456', name: 'Example', type: '2',
},
Expand All @@ -40,12 +40,48 @@ describe('Login Validation', () => {
});

it('returns object of validation required', (done) => {
const result = usersValidation.validateLoginInput({});
const result = usersValidation.validateSignupInput({});
expect(result.isValid).to.equal(false);
expect(Object.keys(result.errors).length).to.be.greaterThan(0);
expect(result.errors.email).to.equal('Email field is required');
expect(result.errors.password).to.equal('Password field is required');
expect(result.errors).to.be.an('object');
done();
});

it('returns object of validation required', (done) => {
const result = usersValidation.validateSignupInput({
name: 'eze1er', email: 'a@', password: '12', type: 4,
});
expect(result.isValid).to.equal(false);
expect(Object.keys(result.errors).length).to.be.greaterThan(0);
expect(result.errors.name).to.equal('Name cannot contain number(s)');
expect(result.errors.email).to.equal('Email is invalid');
expect(result.errors.password).to.equal('Password must be at least 6 characters');
expect(result.errors.type).to.equal('Invalid Type. Type cannot be greater than 2');
expect(result.errors).to.be.an('object');
done();
});
});

describe('MakeAdmin Validation', () => {
it('returns empty object because all validation is passed', (done) => {
const result = usersValidation.validateMakeAdminInput(
{
email: 'example@gmail.com',
},
);
expect(result.isValid).to.equal(true);
expect(Object.keys(result.errors).length).to.equal(0);
done();
});

it('returns object of validation required', (done) => {
const result = usersValidation.validateMakeAdminInput({});
expect(result.isValid).to.equal(false);
expect(Object.keys(result.errors).length).to.be.greaterThan(0);
expect(result.errors.email).to.equal('Email field is required');
expect(result.errors).to.be.an('object');
done();
});
});
11 changes: 11 additions & 0 deletions server/test/validation.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,17 @@ describe('Sales Validation', () => {
expect(result.errors).to.be.an('object');
done();
});

it('returns object of validation required', (done) => {
const result = salesValidation.validateSalesInput({
order: [{}],
});
expect(result.isValid).to.equal(false);
expect(Object.keys(result.errors).length).to.be.greaterThan(0);
expect(result.errors.order).to.equal('Invalid array of objects provided for order.');
expect(result.errors).to.be.an('object');
done();
});
});


Expand Down

0 comments on commit b0753eb

Please sign in to comment.