public void MapAnLoginToAParent()
        {
            //Arrange
            var parent = SharedArrange.SomeParent();
            var inviteId = Guid.NewGuid();
            parent.InvitationId = inviteId;

            context.Parents.Add(parent);
            context.SaveChanges();

            var command = new MapLoginToParent
            {
                InvitationId = inviteId,
                UserId = "abcde"
            };
            //Act
            command.Execute();
            //Assert
            Assert.IsTrue(RunDatabaseAsserts());

            //Teardown
        }
        public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model,
            string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Index", "Manage");
            }

            //If invide id is gone then something went wrong, logout.
            var inviteId = ControllerContext.HttpContext.Session["inviteId"];
            if (inviteId == null)
            {
                return LogOff();
            }

            if (ModelState.IsValid && inviteId != null)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();
                if (info == null)
                {
                    return View("ExternalLoginFailure");
                }
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };// adds record to AspNetUsers
    
                //-----
                var result = await UserManager.CreateAsync(user);
                if (result.Succeeded)
                {

                    result = await UserManager.AddLoginAsync(user.Id, info.Login);// adds record to [AspNetUserLogins]
                    if (result.Succeeded)
                    {
                        //Map parent to this user.
                        var command = new MapLoginToParent
                        {
                            InvitationId = Guid.Parse(inviteId.ToString()),
                            UserId = user.Id
                        };
                        command.Execute();

                        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                        return RedirectToLocal(returnUrl);
                    }
                    AddErrors(result);
                }
                //----

            }

            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }