public async Task Add_CpfInUse_Exception() { var model = new NewResellerModel() { CPF = "11144477735", Name = "name", Email = "*****@*****.**", Password = "******" }; _repository.Setup(m => m.Retrieve(x => x.CPF == model.CPF.ApplyCPFFormat())).Returns(new[] { _validReseller }.AsQueryable); Exception _ex = new Exception(); try { await _service.Add(model); } catch (Exception ex) { _repository.Verify(x => x.Add(It.IsAny <Reseller>()), Times.Never); _ex = ex; } Assert.Equal(typeof(CashbackServiceException), _ex.GetType()); Assert.Equal(Messages.ResellerCPFInUse, _ex.Message); }
public async Task <Reseller> Add(NewResellerModel model) { Validate(model); var reseller = TinyMapper.Map <Reseller>(model); reseller.Id = Guid.NewGuid(); reseller.CPF = model.CPF.ApplyCPFFormat(); reseller.Password = Hasher.CreatePasswordHash(model.Email, model.Password); await _resellerRepository.Add(reseller); _logger.LogDebug($"[ResellerService/Add] {model.Email} adicionado"); return(reseller); }
public async Task Post_InvalidValues_BadRequest() { var request = "/api/v1/reseller"; var cpf = "aaa"; var model = new NewResellerModel() { CPF = cpf, Name = $"Test {cpf}", Email = $"{cpf}@test.com", Password = "******" }; var response = await _httpClient.PostAsync(request, _fixture.AsStringContent(model)); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Post_ValidValues_Success() { var request = "/api/v1/reseller"; var cpf = GenerateCPF(); var model = new NewResellerModel() { CPF = cpf, Name = $"Test {cpf}", Email = $"{cpf}@test.com", Password = "******" }; var response = await _httpClient.PostAsync(request, _fixture.AsStringContent(model)); response.EnsureSuccessStatusCode(); }
private void Validate(NewResellerModel model) { if (model == null) { throw new CashbackServiceException(Messages.NullObject); } if (_resellerRepository.Retrieve(x => x.Email == model.Email).Any()) { throw new CashbackServiceException(Messages.ResellerEmailInUse); } if (!Validators.EmailIsValid(model.Email)) { throw new CashbackServiceException(Messages.EmailInvalid); } if (!Validators.CPFIsValid(model.CPF)) { throw new CashbackServiceException(Messages.CPFInvalid); } if (_resellerRepository.Retrieve(x => x.CPF == model.CPF.ApplyCPFFormat()).Any()) { throw new CashbackServiceException(Messages.ResellerCPFInUse); } if (string.IsNullOrEmpty(model.Name)) { throw new CashbackServiceException(Messages.NameIsObrigatory); } if (string.IsNullOrEmpty(model.Password)) { throw new CashbackServiceException(Messages.PasswordIsObrigatory); } if (model.Name.Length > 100) { throw new CashbackServiceException(Messages.NameShouldBeLessThan100Chars); } }
public async Task Add_InvalidEmail_Exception(string email) { try { var model = new NewResellerModel() { CPF = "11144477735", Name = "Name X", Email = email, Password = "******" }; await _service.Add(model); } catch (Exception ex) { _repository.Verify(x => x.Add(It.IsAny <Reseller>()), Times.Never); Assert.Equal(typeof(CashbackServiceException), ex.GetType()); Assert.Equal(Messages.EmailInvalid, ex.Message); } }
public async Task Add_InvalidCPF_Exception(string cpf) { try { var model = new NewResellerModel() { CPF = cpf, Name = "Name X", Email = $"*****@*****.**", Password = "******" }; await _service.Add(model); } catch (Exception ex) { _repository.Verify(x => x.Add(It.IsAny <Reseller>()), Times.Never); Assert.Equal(typeof(CashbackServiceException), ex.GetType()); Assert.Equal(Messages.CPFInvalid, ex.Message); } }
public async Task <IActionResult> Post([FromBody] NewResellerModel model) { try { _logger.LogInformation("NewReseller"); var item = await _resellerService.Add(model); return(StatusCode(StatusCodes.Status201Created, TinyMapper.Map <ResellerModel>(item))); } catch (CashbackServiceException ex) { _logger.LogWarning($"BadRequest - {ex.Message}"); return(BadRequest(new { message = ex.Message })); } catch (Exception ex) { _logger.LogError($"Error - {ex.Message}"); return(StatusCode(StatusCodes.Status500InternalServerError, new { message = ex.Message })); } }
public async Task Add_ValidData_SaveAndReturn() { var model = new NewResellerModel() { CPF = "11144477735", Name = "name", Email = "*****@*****.**", Password = "******" }; _repository.Setup(x => x.Retrieve(It.IsAny <Expression <Func <Reseller, bool> > >())); Exception _ex = new Exception(); var result = await _service.Add(model); _repository.Verify(x => x.Add(It.IsAny <Reseller>()), Times.Once); Assert.Equal(model.Email, result.Email); Assert.Equal(model.Name, result.Name); Assert.Equal(model.CPF.ApplyCPFFormat(), result.CPF); Assert.NotEqual(Guid.Empty, result.Id); }
public async Task Add_PasswordEmpty_Exception(string password) { Exception _ex = new Exception(); try { var model = new NewResellerModel() { CPF = "11144477735", Name = "name", Email = "*****@*****.**", Password = password }; await _service.Add(model); } catch (Exception ex) { _repository.Verify(x => x.Add(It.IsAny <Reseller>()), Times.Never); _ex = ex; } Assert.Equal(typeof(CashbackServiceException), _ex.GetType()); Assert.Equal(Messages.PasswordIsObrigatory, _ex.Message); }
public async Task Add_NameInvalid_Exception() { Exception _ex = new Exception(); try { var model = new NewResellerModel() { CPF = "11144477735", Name = new string('A', 101), Email = "*****@*****.**", Password = "******" }; await _service.Add(model); } catch (Exception ex) { _repository.Verify(x => x.Add(It.IsAny <Reseller>()), Times.Never); _ex = ex; } Assert.Equal(typeof(CashbackServiceException), _ex.GetType()); Assert.Equal(Messages.NameShouldBeLessThan100Chars, _ex.Message); }