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 <SFwToken>(It.IsAny <User>(), It.IsAny <List <OperationClaim> >())).
            Returns(() => new SFwToken()
            {
                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"));
        }
        public async Task <IDataResult <DArchToken> > Handle(VerifyOtpCommand request, CancellationToken cancellationToken)
        {
            var provider = _coordinator.SelectProvider(request.Provider);

            return(await provider.Verify(request));
        }