public async Task ConfirmAuthenticatorCode_WhenValidUserIdAndCodeRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.ConfirmAuthenticatorCode(_testUser.Id, "999999");

            Assert.True(avatar.Succeeded);
        }
        public async Task Disable2FA_WhenValidUserIdAndCodeRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Disable2FA(_testUser2FA.Id);

            Assert.True(avatar.Success);
        }
        public async Task ReportError_WhenNotExistsUserIdRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.GenerateAuthenticatorSharedKey(Guid.NewGuid().ToString());

            Assert.Null(avatar.GeneratedCode);
            Assert.Equal("Specified user does not exist!", avatar.Error.Description);
        }
        public async Task ReportError_WhenNullUserIdRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.GenerateAuthenticatorSharedKey(null);

            Assert.Null(avatar.GeneratedCode);
            Assert.Equal("You must provide a user id to generate the shared key!", avatar.Error.Description);
        }
        public async Task ReportDisable2FAError_WhenResetKeysFails()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Disable2FA(_testUserFail2FAK.Id);

            Assert.False(avatar.Success);
            Assert.Equal("FailReset", avatar.Errors.First().Description);
        }
        public async Task ReportDisable2FAError_WhenUserNotEnabled2FA()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Disable2FA(_testUser.Id);

            Assert.False(avatar.Success);
            Assert.Equal("Specified user is not enrolled for 2FA!", avatar.Errors.First().Description);
        }
        public async Task ReportDisable2FAError_WhenNonExistingUserIdAndValidCodeRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Disable2FA(Guid.NewGuid().ToString());

            Assert.False(avatar.Success);
            Assert.Equal("Specified user does not exist!", avatar.Errors.First().Description);
        }
        public async Task ReportDisable2FAError_WhenNullUserIdAndValidCodeRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Disable2FA(null);

            Assert.False(avatar.Success);
            Assert.Equal("You must provide a user id to enable 2FA!", avatar.Errors.First().Description);
        }
        public async Task ReportEnable2FAError_WhenEnableFails()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Enable2FA(_testUserFail.Id, "999999");

            Assert.False(avatar.Succeeded);
            Assert.Equal("Fail2FA", avatar.Errors.First().Description);
        }
        public async Task Report2FAEnableError_WhenValidUserIdAndInvalidCodeRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.Enable2FA(_testUser.Id, "123456");

            Assert.False(avatar.Succeeded);
            Assert.Equal("Authenticator code could not be validated!", avatar.Errors.First().Description);
        }
        public async Task ReportAuthenticatorError_WhenNullUserIdAndValidCodeRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.ConfirmAuthenticatorCode(null, "999999");

            Assert.False(avatar.Succeeded);
            Assert.Equal("You must provide a user id  and authenticator token to confirm authenticator code!", avatar.Errors.First().Description);
        }
        public async Task GenerateAuthenticatorSharedKey_WhenValidUserIdRecieved()
        {
            var usrmgr = MockUserManager();
            var am     = new UserAuthenticatorManager(new NullLogger <UserAuthenticatorManager>(), usrmgr.Object);
            var avatar = await am.GenerateAuthenticatorSharedKey(_testUser.Id);

            Assert.NotNull(avatar.GeneratedCode);
            Assert.NotNull(avatar.GeneratedCode.SharedKey);
            Assert.NotNull(avatar.GeneratedCode.QrCodeUri);
            Assert.Equal("anew code", avatar.GeneratedCode.SharedKey);
            Assert.Equal("otpauth://totp/HoundDog:[email protected]?secret=ANewCode&issuer=HoundDog&digits=6", avatar.GeneratedCode.QrCodeUri);
        }