public async void ProfileController_RegisterWithInValidData()
        {
            //Arange
            var model = new RegisterViewModel { Password = "******", PasswordAgain = "short", Username = "******" };

            _userManager.Setup(x => x.CreateAsync(It.IsAny<User>(), model.Password)).ReturnsAsync(IdentityResult.Failed("Error"));
            
            //Act
            var result = await _sut.Register(model) as ViewResult;

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.AreEqual(1, _sut.ModelState.Count);
        }
        public async void ProfileController_RegisterWithValidDataWithModelError()
        {
            //Arange
            var model = new RegisterViewModel { Password = "******", PasswordAgain = "test12345", Username = "******" };

            _sut.ModelState.AddModelError("error", "error");

            //Act
            var result = await _sut.Register(model) as ViewResult;

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.AreEqual(model, result.Model);
            Assert.AreEqual(1, _sut.ModelState.Count);
        }
        public async void ProfileController_RegisterWithValidData()
        {
            //Arange
            var model = new RegisterViewModel { Password = "******", PasswordAgain = "tester12345", Username = "******" };

            _userManager.Setup(x => x.CreateAsync(It.IsAny<User>(), It.IsAny<string>())).ReturnsAsync(IdentityResult.Success);
            
            //Act
            var result = await _sut.Register(model) as RedirectToRouteResult;

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.AreEqual(0, _sut.ModelState.Count);
            Assert.AreEqual("Start", result.RouteValues["action"]);
            Assert.AreEqual("Main", result.RouteValues["controller"]);
        }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            var user = new User() { UserName = model.Username, Email = model.EmailAdress };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, true, true);
                return RedirectToAction("Start", "Main");
            }
            else
            {
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error);
                }
            }

            return View(model);
        }