UNPKG

@raphaeldeveloper/whoiam.domain

Version:

Project with domain rules about user authentication.

72 lines (54 loc) 2.78 kB
const test = require('tape'); const CreateUser = require('../../UserAccount/CreateUser'); const User = require('../../UserAccount/User'); const UserAccountRepositoryStub = require('./UserAccountRepositoryStub'); test('Should be possible to create user', (t) => { let user = new User('userName', 'user@email.com', 'password'); let userAccountRepository = new UserAccountRepositoryStub(); let createUser = new CreateUser(userAccountRepository); createUser.do(user); t.assert(userAccountRepository.getByUserName(user.userName) !== null, 'User was created'); t.end(); }); test('Should not be possible to create user without userName', (t) => { let user = new User(); let userAccountRepository = new UserAccountRepositoryStub(); let createUser = new CreateUser(userAccountRepository); createUser.do(user); t.assert(userAccountRepository.getAll().length === 0, 'User was not created'); t.end(); }); test('Should not be possible to create user without email', (t) => { let user = new User('userName'); let userAccountRepository = new UserAccountRepositoryStub(); let createUser = new CreateUser(userAccountRepository); createUser.do(user); t.assert(userAccountRepository.getAll().length === 0, 'User was not created'); t.end(); }); test('Should not be possible to create user without password', (t) => { let user = new User('userName', 'user@email.com'); let userAccountRepository = new UserAccountRepositoryStub(); let createUser = new CreateUser(userAccountRepository); createUser.do(user); t.assert(userAccountRepository.getAll().length === 0, 'User was not created'); t.end(); }); test('Should not be possible to create user if userName is already used', (t) => { let user = new User('userName', 'user@email.com', 'password'); let userAccountRepository = new UserAccountRepositoryStub(); let createUser = new CreateUser(userAccountRepository); userAccountRepository.insert(new User('userName', 'user@email.com', 'password')); createUser.do(user); t.assert(userAccountRepository.getAll().length === 1, 'User was not created'); t.end(); }); test('Should not be possible to create user if email is already used', (t) => { let user = new User('userName', 'user@email.com', 'password'); let userAccountRepository = new UserAccountRepositoryStub(); let createUser = new CreateUser(userAccountRepository); userAccountRepository.insert(new User('userName2', 'user@email.com', 'password')); createUser.do(user); t.assert(userAccountRepository.getAll().length === 1, 'User was not created'); t.end(); });