diff --git a/src/Core/Properties/Resources.Designer.cs b/src/Core/Properties/Resources.Designer.cs index 57a5e5b702..e39a1c63c8 100644 --- a/src/Core/Properties/Resources.Designer.cs +++ b/src/Core/Properties/Resources.Designer.cs @@ -207,7 +207,7 @@ namespace Microsoft.Extensions.Identity.Core => GetString("MustCallAddIdentity"); /// - /// No IUserTokenProvider named '{0}' is registered. + /// No IUserTwoFactorTokenProvider<{0}> named '{1}' is registered. /// internal static string NoTokenProvider { @@ -215,10 +215,10 @@ namespace Microsoft.Extensions.Identity.Core } /// - /// No IUserTokenProvider named '{0}' is registered. + /// No IUserTwoFactorTokenProvider<{0}> named '{1}' is registered. /// - internal static string FormatNoTokenProvider(object p0) - => string.Format(CultureInfo.CurrentCulture, GetString("NoTokenProvider"), p0); + internal static string FormatNoTokenProvider(object p0, object p1) + => string.Format(CultureInfo.CurrentCulture, GetString("NoTokenProvider"), p0, p1); /// /// User security stamp cannot be null. diff --git a/src/Core/Resources.resx b/src/Core/Resources.resx index f221b9ec6a..5b63832c57 100644 --- a/src/Core/Resources.resx +++ b/src/Core/Resources.resx @@ -174,8 +174,8 @@ Error when AddIdentity is not called - No IUserTokenProvider named '{0}' is registered. - Error when there is no IUserTokenProvider + No IUserTwoFactorTokenProvider<{0}> named '{1}' is registered. + Error when there is no IUserTwoFactorTokenProvider User security stamp cannot be null. diff --git a/src/Core/UserManager.cs b/src/Core/UserManager.cs index 7e5b6832fa..ff5ac02ab8 100644 --- a/src/Core/UserManager.cs +++ b/src/Core/UserManager.cs @@ -1702,7 +1702,7 @@ namespace Microsoft.AspNetCore.Identity if (!_tokenProviders.ContainsKey(tokenProvider)) { - throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Resources.NoTokenProvider, tokenProvider)); + throw new NotSupportedException(Resources.FormatNoTokenProvider(nameof(TUser), tokenProvider)); } // Make sure the token is valid var result = await _tokenProviders[tokenProvider].ValidateAsync(purpose, token, this, user); @@ -1737,7 +1737,7 @@ namespace Microsoft.AspNetCore.Identity } if (!_tokenProviders.ContainsKey(tokenProvider)) { - throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Resources.NoTokenProvider, tokenProvider)); + throw new NotSupportedException(Resources.FormatNoTokenProvider(nameof(TUser), tokenProvider)); } return _tokenProviders[tokenProvider].GenerateAsync(purpose, this, user); @@ -1804,8 +1804,7 @@ namespace Microsoft.AspNetCore.Identity } if (!_tokenProviders.ContainsKey(tokenProvider)) { - throw new NotSupportedException(String.Format(CultureInfo.CurrentCulture, - Resources.NoTokenProvider, tokenProvider)); + throw new NotSupportedException(Resources.FormatNoTokenProvider(nameof(TUser), tokenProvider)); } // Make sure the token is valid @@ -1835,8 +1834,7 @@ namespace Microsoft.AspNetCore.Identity } if (!_tokenProviders.ContainsKey(tokenProvider)) { - throw new NotSupportedException(String.Format(CultureInfo.CurrentCulture, - Resources.NoTokenProvider, tokenProvider)); + throw new NotSupportedException(Resources.FormatNoTokenProvider(nameof(TUser), tokenProvider)); } return _tokenProviders[tokenProvider].GenerateAsync("TwoFactor", this, user); diff --git a/src/Specification.Tests/UserManagerSpecificationTests.cs b/src/Specification.Tests/UserManagerSpecificationTests.cs index 69b9bbfda7..ac8bc417b8 100644 --- a/src/Specification.Tests/UserManagerSpecificationTests.cs +++ b/src/Specification.Tests/UserManagerSpecificationTests.cs @@ -1885,14 +1885,19 @@ namespace Microsoft.AspNetCore.Identity.Test var manager = CreateManager(); var user = CreateTestUser(); IdentityResultAssert.IsSuccess(await manager.CreateAsync(user)); - const string error = "No IUserTokenProvider named 'bogus' is registered."; - var ex = await - Assert.ThrowsAsync( - () => manager.GenerateTwoFactorTokenAsync(user, "bogus")); + var error = $"No IUserTwoFactorTokenProvider<{nameof(TUser)}> named 'bogus' is registered."; + var ex = await Assert.ThrowsAsync( + () => manager.GenerateTwoFactorTokenAsync(user, "bogus")); Assert.Equal(error, ex.Message); ex = await Assert.ThrowsAsync( () => manager.VerifyTwoFactorTokenAsync(user, "bogus", "bogus")); Assert.Equal(error, ex.Message); + ex = await Assert.ThrowsAsync( + () => manager.VerifyUserTokenAsync(user, "bogus", "bogus", "bogus")); + Assert.Equal(error, ex.Message); + ex = await Assert.ThrowsAsync( + () => manager.GenerateUserTokenAsync(user, "bogus", "bogus")); + Assert.Equal(error, ex.Message); } ///