added user_spec
parent
a04f395db9
commit
021c1f5aa0
@ -0,0 +1,109 @@
|
||||
import { UserStore } from '../../models/user'
|
||||
import bcrypt from 'bcrypt'
|
||||
|
||||
|
||||
const { BCRYPT_PASSWORD } = process.env
|
||||
const pepper = BCRYPT_PASSWORD
|
||||
|
||||
|
||||
const store = new UserStore()
|
||||
|
||||
const newUser = {
|
||||
id: 1,
|
||||
firstname: 'John',
|
||||
lastname: 'Doe',
|
||||
username: 'Jd',
|
||||
password: 'password'
|
||||
}
|
||||
|
||||
describe("User model", () => {
|
||||
it('Should have an index method', () => {
|
||||
expect(store.index).toBeDefined();
|
||||
});
|
||||
|
||||
it('Should have a read method', () => {
|
||||
expect(store.read).toBeDefined;
|
||||
});
|
||||
|
||||
it('Should have a create method', () => {
|
||||
expect(store.create).toBeDefined;
|
||||
});
|
||||
|
||||
it('Should have a update method', () => {
|
||||
expect(store.update).toBeDefined;
|
||||
});
|
||||
|
||||
it('Should have a delete method', () => {
|
||||
expect(store.delete).toBeDefined;
|
||||
});
|
||||
|
||||
it('Create method should create a new user', async () => {
|
||||
const result = await store.create(newUser);
|
||||
|
||||
expect(result.firstname).toEqual(newUser.firstname)
|
||||
expect(result.lastname).toEqual(newUser.lastname)
|
||||
expect(result.username).toEqual(newUser.username)
|
||||
expect(bcrypt.compareSync(newUser.password + pepper, result.password)).toBeTrue
|
||||
})
|
||||
|
||||
|
||||
|
||||
it('Index method should should return a list of users', async () => {
|
||||
|
||||
|
||||
const result = await store.index();
|
||||
expect(result[0].firstname).toEqual(newUser.firstname)
|
||||
expect(result[0].lastname).toEqual(newUser.lastname)
|
||||
expect(result[0].username).toEqual(newUser.username)
|
||||
expect(bcrypt.compareSync(newUser.password + pepper, result[0].password)).toBeTrue
|
||||
})
|
||||
|
||||
it('Read method should return user', async () => {
|
||||
const result = await store.read(1);
|
||||
|
||||
expect(result.firstname).toEqual(newUser.firstname)
|
||||
expect(result.lastname).toEqual(newUser.lastname)
|
||||
expect(result.username).toEqual(newUser.username)
|
||||
expect(bcrypt.compareSync(newUser.password + pepper, result.password)).toBeTrue
|
||||
})
|
||||
|
||||
it('Authenticate method', async () => {
|
||||
const authUser = {
|
||||
username: 'Jd',
|
||||
password: 'password'
|
||||
}
|
||||
const result = await store.authenticate(authUser.username, authUser.password);
|
||||
|
||||
if (result) {
|
||||
expect(result.firstname).toEqual(newUser.firstname)
|
||||
expect(result.lastname).toEqual(newUser.lastname)
|
||||
expect(result.username).toEqual(newUser.username)
|
||||
expect(bcrypt.compareSync(newUser.password + pepper, result.password)).toBeTrue
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
it('Update method should create a new user', async () => {
|
||||
const updatedUser = {
|
||||
id: 1,
|
||||
firstname: 'Sara',
|
||||
lastname: 'Doe',
|
||||
username: 'Sd',
|
||||
password: 'password123'
|
||||
}
|
||||
|
||||
const result = await store.update(updatedUser);
|
||||
|
||||
expect(result.firstname).toEqual(updatedUser.firstname)
|
||||
expect(result.lastname).toEqual(updatedUser.lastname)
|
||||
expect(result.username).toEqual(updatedUser.username)
|
||||
expect(bcrypt.compareSync(updatedUser.password + pepper, result.password)).toBeTrue
|
||||
})
|
||||
|
||||
it('Delete method should delete a user by Id', async () => {
|
||||
const result = await store.delete(newUser.id);
|
||||
const checkUsers = await store.index()
|
||||
|
||||
expect(checkUsers).toEqual([])
|
||||
})
|
||||
})
|
Loading…
Reference in New Issue