using System.Collections.Generic; using System.Threading.Tasks; using Bit.Core.Entities; using Bit.Core.Enums; using Bit.Core.Identity; using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture.Attributes; using NSubstitute; using Xunit; namespace Bit.Core.Test.Identity { public class U2fTokenProviderTests : BaseTokenProviderTests { public override TwoFactorProviderType TwoFactorProviderType => TwoFactorProviderType.U2f; public static IEnumerable CanGenerateTwoFactorTokenAsyncData() { return new[] { new object[] { new Dictionary { ["Something"] = "Hello" }, true, // canAccessPremium true, // expectedResponse }, new object[] { new Dictionary(), true, // canAccessPremium false, // expectedResponse }, new object[] { new Dictionary { ["Key"] = "Value" }, false, // canAccessPremium false, // expectedResponse }, }; } [Theory, BitMemberAutoData(nameof(CanGenerateTwoFactorTokenAsyncData))] public async Task CanGenerateTwoFactorTokenAsync_Success(Dictionary metaData, bool canAccessPremium, bool expectedResponse, User user, SutProvider sutProvider) { var userManager = SubstituteUserManager(); MockDatabase(user, metaData); AdditionalSetup(sutProvider, user) .CanAccessPremium(user) .Returns(canAccessPremium); var response = await sutProvider.Sut.CanGenerateTwoFactorTokenAsync(userManager, user); Assert.Equal(expectedResponse, response); } } }