public RegisterResult Register(RegisterCommand request) { var registerResult = RegisterResult.Unknown; var credential = request.Credential; credential.Password = GenerateSha256(credential.Password); try { var user = _credentialDataMapper.Find(x => x.Email.ToLower().CompareTo(credential.Email.ToLower()) == 0).FirstOrDefault(); if (user != null) { registerResult = RegisterResult.EmailInUse; } else { var credentialRoleEntity = new CredentialRoleEntity() { Credential = new CredentialEntity() { Email = credential.Email, Password = credential.Password, CredentialRoles = new HashSet <CredentialRoleEntity>() }, Role = new RoleEntity() { Name = Roles.Klant.ToString(), CredentialRoles = new HashSet <CredentialRoleEntity>() } }; credentialRoleEntity.Credential.CredentialRoles.Add(credentialRoleEntity); credentialRoleEntity.Role.CredentialRoles.Add(credentialRoleEntity); _credentialDataMapper.Insert(credentialRoleEntity.Credential); registerResult = RegisterResult.Ok; } } catch (Exception ex) { _logger.LogError("DB exception occured with email: {0}", credential?.Email); _logger.LogDebug( "DB exception occured with email {}, it threw exception: {}. Inner exception: {}", credential?.Email, ex.Message, ex.InnerException?.Message ); throw new DatabaseException("Something unexpected happened while inserting in the database"); } return(registerResult); }
public void Update_CredentialsWithMultipleRolesInDatabase() { // Arrange var dataMapper = new CredentialDataMapper(_context); CredentialEntity credential1 = new CredentialEntityBuilder().SetDummy().SetEmail("*****@*****.**").SetDummyRole("Gebruiker").Create(); CredentialEntity credential2 = new CredentialEntityBuilder().SetDummy().SetEmail("*****@*****.**").SetDummyRole("Klant").SetDummyRole("Sales").Create(); CredentialEntity credential3 = new CredentialEntityBuilder().SetDummy().SetEmail("*****@*****.**").SetDummyRole("Klant").SetDummyRole("Sales").Create(); credential1 = dataMapper.Insert(credential1); credential2 = dataMapper.Insert(credential2); credential3 = dataMapper.Insert(credential3); // Act credential2.CredentialRoles.Remove(credential2.CredentialRoles.First()); dataMapper.Update(credential2); var cat = credential3.CredentialRoles.ElementAt(0); credential3.CredentialRoles.Remove(cat); var newCat = new CredentialRoleEntity { Role = new RoleEntity { Name = "Metzger" } }; credential3.CredentialRoles.Add(newCat); dataMapper.Update(credential3); CredentialEntity result1 = dataMapper.Find(x => x.Email == "*****@*****.**").FirstOrDefault(); CredentialEntity result2 = dataMapper.Find(x => x.Email == "*****@*****.**").FirstOrDefault(); CredentialEntity result3 = dataMapper.Find(x => x.Email == "*****@*****.**").FirstOrDefault(); // Assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreEqual(4, _context.RoleEntities.Count()); Assert.AreEqual(1, result1.CredentialRoles.Count()); Assert.AreEqual(1, result2.CredentialRoles.Count()); Assert.AreEqual(2, result3.CredentialRoles.Count()); Assert.IsTrue(credential1.IsEqual(result1)); Assert.IsTrue(credential2.IsEqual(result2)); Assert.IsTrue(credential3.IsEqual(result3)); }
private CredentialEntity AddRole(CredentialEntity entity, Roles role) { var credentialRoleEntity = new CredentialRoleEntity() { Credential = entity, Role = new RoleEntity() { Name = role.ToString(), CredentialRoles = new HashSet <CredentialRoleEntity>() } }; credentialRoleEntity.Credential.CredentialRoles.Add(credentialRoleEntity); credentialRoleEntity.Role.CredentialRoles.Add(credentialRoleEntity); _credentialDataMapper.Update(entity); return(entity); }