public async Task CreateTokenAsync()
        {
            var user = DataHelper.GetUser("test");

            _userRepository.
            Setup(x => x.GetAsync(It.IsAny <Expression <Func <User, bool> > >())).Returns(() => Task.FromResult(user));

            _userRepository.Setup(x => x.GetClaims(It.IsAny <int>()))
            .Returns(new List <OperationClaim>()
            {
                new OperationClaim()
                {
                    Id = 1, Name = "test"
                }
            });

            _tokenHelper.
            Setup(x => x.CreateToken <DArchToken>(It.IsAny <User>(), It.IsAny <List <OperationClaim> >())).
            Returns(() => new DArchToken()
            {
                Expiration     = DateTime.Now.AddMinutes(10),
                ExternalUserId = "1111111",
                OnBehalfOf     = "true",
                Provider       = AuthenticationProviderType.Person,
                Token          = "User Token"
            });

            var service = new PersonAuthenticationProvider(
                AuthenticationProviderType.Person,
                _userRepository.Object,
                _mobileLoginRepository.Object,
                _tokenHelper.Object,
                _smsService.Object);

            var command = new VerifyOtpCommand()
            {
                Code            = 1,
                ExternalUserId  = "111",
                Provider        = AuthenticationProviderType.Person,
                ProviderSubType = "Person"
            };



            var result = await service.CreateToken(command);

            Assert.That(result.Token, Is.EqualTo("User Token"));
        }
        //[Test]
        public async Task Person_Authentication_Login()
        {
            var user = DataHelper.GetUser("test");

            _userRepository.
            Setup(x => x.GetAsync(It.IsAny <Expression <Func <User, bool> > >())).Returns(() => Task.FromResult(user));

            _userRepository.Setup(x => x.GetClaims(It.IsAny <int>()))
            .Returns(new List <OperationClaim>()
            {
                new OperationClaim()
                {
                    Id = 1, Name = "test"
                }
            });

            _tokenHelper.
            Setup(x => x.CreateToken <DArchToken>(It.IsAny <User>(), It.IsAny <List <OperationClaim> >())).
            Returns(() => new DArchToken()
            {
                Expiration     = DateTime.Now.AddMinutes(10),
                ExternalUserId = "1111111",
                OnBehalfOf     = "true",
                Provider       = AuthenticationProviderType.Person,
                Token          = "User Token"
            });

            var service = new PersonAuthenticationProvider(
                AuthenticationProviderType.Person,
                _userRepository.Object,
                _mobileLoginRepository.Object,
                _tokenHelper.Object,
                _smsService.Object);

            var command = new LoginUserCommand()
            {
                ExternalUserId = "12345678910",
                Provider       = AuthenticationProviderType.Person,
                MobilePhone    = user.MobilePhones,
                Password       = "******"
            };
            var result = await service.Login(command);

            Assert.That(result.Status, Is.EqualTo(LoginUserResult.LoginStatus.PhoneNumberRequired));
        }