Esempio n. 1
0
        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);
        }