public async Task <IActionResult> VerificationCodeSubmit([FromBody] VerificationCodeSubmitData data)
        {
            var jwt = await _cognizantIdentity.SubmitVerificationCodeAsync(data);

            if (jwt != null)
            {
                AddJwtToCookie(jwt);
                return(Ok(jwt));
            }
            return(Unauthorized());
        }
        public async Task <string> SubmitVerificationCodeAsync(VerificationCodeSubmitData data)
        {
            string loginEmail        = data.FacebookEmail != null ? data.FacebookEmail : data.GoogleEmail;
            UnauthorizedUserDto user = _userlogic.GetUnauthorizedUser(loginEmail);

            if (user.VerificationCode != data.VerificationCode)
            {
                return(null);
            }

            string originalLoginEmail = GetOriginalLoginEmail(loginEmail);

            _userlogic.VerifyUser(data.FacebookEmail != null, originalLoginEmail);

            var localUser   = _userRepository.GetUserByEmail(EmailType.LOGIN, originalLoginEmail);
            var jwtIdentity = _jwtFactory.GenerateClaimsIdentity(localUser.UserName, localUser.Id);
            var jwt         = await _jwtFactory.GenerateEncodedToken(localUser.UserName, jwtIdentity);

            return(jwt);
        }
        public async Task SubmitVerificationCode_FacebookEmail_ReturnsNotNull()
        {
            string token            = "token";
            string facebookEmail    = "*****@*****.**";
            int    verificationCode = 1;
            User   user             = new User
            {
                UserName       = facebookEmail,
                CognizantEmail = "*****@*****.**"
            };
            UserDto userDto = new UserDto
            {
                Email          = facebookEmail,
                CognizantEmail = "*****@*****.**"
            };
            UnauthorizedUserDto unauthorizedUser = new UnauthorizedUserDto
            {
                VerificationCode = verificationCode,
                Email            = facebookEmail
            };

            sgSettings.SetupGet(x => x.Value).Returns(new SendGridSettings {
                APIKey = "key"
            });
            userRepository.Setup(x => x.GetUserByEmail(EmailType.LOGIN, facebookEmail)).Returns(user);
            userLogic.Setup(x => x.GetUserByEmail(EmailType.FACEBOOK, facebookEmail)).Returns(userDto);
            userLogic.Setup(x => x.GetUnauthorizedUser(facebookEmail)).Returns(unauthorizedUser);
            jwtFactory.Setup(x => x.GenerateEncodedToken(facebookEmail, It.IsAny <System.Security.Claims.ClaimsIdentity>())).Returns(Task.FromResult(token));

            var cognizantIdentity = new CognizantIdentity(userLogic.Object, sgSettings.Object, userRepository.Object, jwtFactory.Object);

            var codeData = new VerificationCodeSubmitData {
                FacebookEmail = facebookEmail, VerificationCode = verificationCode
            };

            Assert.AreEqual(await cognizantIdentity.SubmitVerificationCodeAsync(codeData), token);
        }