public void TestSetup()
        {
            _logger = new Mock <ILogger <Pegasus.Controllers.ManageController> >();
            var authenticatorKeyModel = new AuthenticatorKeyModel
            {
                AuthenticatorUri = "https://validAuthenticator",
                SharedKey        = "asdf asdf asdf asdf"
            };

            _manageEndpoint = new Mock <IManageEndpoint>();
            _manageEndpoint.Setup(x => x.LoadSharedKeyAndQrCodeUriAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(authenticatorKeyModel));

            var identity = new Mock <IIdentity>()
            {
                Name = "*****@*****.**"
            };
            var user    = new ClaimsPrincipal(identity.Object);
            var context = new DefaultHttpContext {
                User = user
            };

            _controllerContext = new ControllerContext
            {
                HttpContext = context,
            };
        }
示例#2
0
        public async Task <AuthenticatorKeyModel> LoadSharedKeyAndQrCodeUri(string userId)
        {
            var model = new AuthenticatorKeyModel();
            var user  = await GetUser(userId, model);

            if (user == null)
            {
                return(LogErrorReturnModel(model));
            }

            return(await LoadSharedKeyAndQrCodeUriAsync(user));
        }
示例#3
0
        private async Task <AuthenticatorKeyModel> LoadSharedKeyAndQrCodeUriAsync(IdentityUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            var model = new AuthenticatorKeyModel();

            model.SharedKey = FormatKey(unformattedKey);

            var email = await _userManager.GetEmailAsync(user);

            model.AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey);

            return(model);
        }