1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-30 15:42:48 -05:00

Remove the u2f lib (#1820)

This commit is contained in:
Oscar Hinton
2022-01-24 12:14:04 +01:00
committed by GitHub
parent 5268f2781e
commit ac8ca46f0f
44 changed files with 3489 additions and 1247 deletions

View File

@ -88,7 +88,6 @@ namespace Bit.Core.Test.AutoFixture.EntityFrameworkRepositoryFixtures
cfg.AddProfile<SsoUserMapperProfile>();
cfg.AddProfile<TaxRateMapperProfile>();
cfg.AddProfile<TransactionMapperProfile>();
cfg.AddProfile<U2fMapperProfile>();
cfg.AddProfile<UserMapperProfile>();
})
.CreateMapper()));

View File

@ -1,62 +0,0 @@
using System;
using AutoFixture;
using AutoFixture.Kernel;
using Bit.Core.Entities;
using Bit.Core.Test.AutoFixture.EntityFrameworkRepositoryFixtures;
using Bit.Core.Test.AutoFixture.Relays;
using Bit.Core.Test.AutoFixture.UserFixtures;
using Bit.Infrastructure.EntityFramework.Repositories;
using Bit.Test.Common.AutoFixture;
using Bit.Test.Common.AutoFixture.Attributes;
namespace Bit.Core.Test.AutoFixture.U2fFixtures
{
internal class U2fBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
var type = request as Type;
if (type == null || type != typeof(U2f))
{
return new NoSpecimen();
}
var fixture = new Fixture();
fixture.Customizations.Add(new MaxLengthStringRelay());
var obj = fixture.WithAutoNSubstitutions().Create<U2f>();
return obj;
}
}
internal class EfU2f : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customizations.Add(new IgnoreVirtualMembersCustomization());
fixture.Customizations.Add(new GlobalSettingsBuilder());
fixture.Customizations.Add(new U2fBuilder());
fixture.Customizations.Add(new UserBuilder());
fixture.Customizations.Add(new EfRepositoryListBuilder<U2fRepository>());
fixture.Customizations.Add(new EfRepositoryListBuilder<UserRepository>());
}
}
internal class EfU2fAutoDataAttribute : CustomAutoDataAttribute
{
public EfU2fAutoDataAttribute() : base(new SutProviderCustomization(), new EfU2f())
{ }
}
internal class InlineEfU2fAutoDataAttribute : InlineCustomAutoDataAttribute
{
public InlineEfU2fAutoDataAttribute(params object[] values) : base(new[] { typeof(SutProviderCustomization),
typeof(EfU2f) }, values)
{ }
}
}

View File

@ -1,62 +0,0 @@
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<U2fTokenProvider>
{
public override TwoFactorProviderType TwoFactorProviderType => TwoFactorProviderType.U2f;
public static IEnumerable<object[]> CanGenerateTwoFactorTokenAsyncData()
{
return new[]
{
new object[]
{
new Dictionary<string, object>
{
["Something"] = "Hello"
},
true, // canAccessPremium
true, // expectedResponse
},
new object[]
{
new Dictionary<string, object>(),
true, // canAccessPremium
false, // expectedResponse
},
new object[]
{
new Dictionary<string, object>
{
["Key"] = "Value"
},
false, // canAccessPremium
false, // expectedResponse
},
};
}
[Theory, BitMemberAutoData(nameof(CanGenerateTwoFactorTokenAsyncData))]
public async Task CanGenerateTwoFactorTokenAsync_Success(Dictionary<string, object> metaData, bool canAccessPremium,
bool expectedResponse, User user, SutProvider<U2fTokenProvider> 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);
}
}
}

View File

@ -1,22 +0,0 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Bit.Core.Entities;
namespace Bit.Core.Test.Repositories.EntityFramework.EqualityComparers
{
public class U2fCompare : IEqualityComparer<U2f>
{
public bool Equals(U2f x, U2f y)
{
return x.KeyHandle == y.KeyHandle &&
x.Challenge == y.Challenge &&
x.AppId == y.AppId &&
x.Version == y.Version;
}
public int GetHashCode([DisallowNull] U2f obj)
{
return base.GetHashCode();
}
}
}

View File

@ -1,54 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using Bit.Core.Entities;
using Bit.Core.Test.AutoFixture.Attributes;
using Bit.Core.Test.AutoFixture.U2fFixtures;
using Bit.Core.Test.Repositories.EntityFramework.EqualityComparers;
using Xunit;
using EfRepo = Bit.Infrastructure.EntityFramework.Repositories;
using SqlRepo = Bit.Infrastructure.Dapper.Repositories;
namespace Bit.Core.Test.Repositories.EntityFramework
{
public class U2fRepositoryTests
{
[CiSkippedTheory, EfU2fAutoData]
public async void CreateAsync_Works_DataMatches(
U2f u2f,
User user,
U2fCompare equalityComparer,
List<EfRepo.U2fRepository> suts,
List<EfRepo.UserRepository> efUserRepos,
SqlRepo.U2fRepository sqlU2fRepo,
SqlRepo.UserRepository sqlUserRepo
)
{
var savedU2fs = new List<U2f>();
foreach (var sut in suts)
{
var i = suts.IndexOf(sut);
var efUser = await efUserRepos[i].CreateAsync(user);
sut.ClearChangeTracking();
u2f.UserId = efUser.Id;
var postEfU2f = await sut.CreateAsync(u2f);
sut.ClearChangeTracking();
var savedU2f = await sut.GetByIdAsync(postEfU2f.Id);
savedU2fs.Add(savedU2f);
}
var sqlUser = await sqlUserRepo.CreateAsync(user);
u2f.UserId = sqlUser.Id;
var sqlU2f = await sqlU2fRepo.CreateAsync(u2f);
var savedSqlU2f = await sqlU2fRepo.GetByIdAsync(sqlU2f.Id);
savedU2fs.Add(savedSqlU2f);
var distinctItems = savedU2fs.Distinct(equalityComparer);
Assert.True(!distinctItems.Skip(1).Any());
}
}
}

View File

@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using AutoFixture;
using Bit.Core.Entities;
@ -11,7 +12,6 @@ using Bit.Core.Test.AutoFixture.CipherFixtures;
using Bit.Test.Common.AutoFixture;
using Bit.Test.Common.AutoFixture.Attributes;
using NSubstitute;
using U2F.Core.Utils;
using Xunit;
namespace Bit.Core.Test.Services
@ -35,7 +35,8 @@ namespace Bit.Core.Test.Services
{
var sutProvider = GetSutProvider(tempDirectory);
await sutProvider.Sut.UploadNewAttachmentAsync(new MemoryStream(stream.GetBytes()), cipher, attachmentData);
await sutProvider.Sut.UploadNewAttachmentAsync(new MemoryStream(Encoding.UTF8.GetBytes(stream)),
cipher, attachmentData);
AssertFileCreation($"{tempDirectory}/{cipher.Id}/{attachmentData.AttachmentId}", stream);
}
@ -51,8 +52,8 @@ namespace Bit.Core.Test.Services
{
var sutProvider = GetSutProvider(tempDirectory);
await sutProvider.Sut.UploadShareAttachmentAsync(new MemoryStream(stream.GetBytes()), cipher.Id,
cipher.OrganizationId.Value, attachmentData);
await sutProvider.Sut.UploadShareAttachmentAsync(new MemoryStream(Encoding.UTF8.GetBytes(stream)),
cipher.Id, cipher.OrganizationId.Value, attachmentData);
AssertFileCreation($"{tempDirectory}/temp/{cipher.Id}/{cipher.OrganizationId}/{attachmentData.AttachmentId}", stream);
}