2022-06-29 19:46:41 -04:00
|
|
|
|
using System.Text.Json;
|
2022-05-10 17:12:09 -04:00
|
|
|
|
using AutoFixture;
|
|
|
|
|
|
using Bit.Core.Entities;
|
|
|
|
|
|
using Bit.Core.Models.Business;
|
2019-07-05 22:35:54 -05:00
|
|
|
|
using Bit.Core.Services;
|
2021-02-22 15:35:16 -06:00
|
|
|
|
using Bit.Core.Settings;
|
2022-05-10 17:12:09 -04:00
|
|
|
|
using Bit.Core.Test.AutoFixture;
|
|
|
|
|
|
using Bit.Test.Common.AutoFixture;
|
|
|
|
|
|
using Bit.Test.Common.AutoFixture.Attributes;
|
2019-07-05 22:35:54 -05:00
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
2022-08-29 15:53:48 -04:00
|
|
|
|
namespace Bit.Core.Test.Services
|
2019-07-05 22:35:54 -05:00
|
|
|
|
{
|
2022-08-29 15:53:48 -04:00
|
|
|
|
[SutProviderCustomize]
|
|
|
|
|
|
public class LicensingServiceTests
|
2019-07-05 22:35:54 -05:00
|
|
|
|
{
|
2022-08-29 15:53:48 -04:00
|
|
|
|
private static string licenseFilePath(Guid orgId) =>
|
|
|
|
|
|
Path.Combine(OrganizationLicenseDirectory.Value, $"{orgId}.json");
|
|
|
|
|
|
private static string LicenseDirectory => Path.GetDirectoryName(OrganizationLicenseDirectory.Value);
|
|
|
|
|
|
private static Lazy<string> OrganizationLicenseDirectory => new(() =>
|
2019-07-05 22:35:54 -05:00
|
|
|
|
{
|
2022-08-29 15:53:48 -04:00
|
|
|
|
var directory = Path.Combine(Path.GetTempPath(), "organization");
|
|
|
|
|
|
if (!Directory.Exists(directory))
|
|
|
|
|
|
{
|
|
|
|
|
|
Directory.CreateDirectory(directory);
|
|
|
|
|
|
}
|
|
|
|
|
|
return directory;
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
public static SutProvider<LicensingService> GetSutProvider()
|
|
|
|
|
|
{
|
|
|
|
|
|
var fixture = new Fixture().WithAutoNSubstitutions();
|
2019-07-05 22:35:54 -05:00
|
|
|
|
|
2022-08-29 15:53:48 -04:00
|
|
|
|
var settings = fixture.Create<IGlobalSettings>();
|
|
|
|
|
|
settings.LicenseDirectory = LicenseDirectory;
|
|
|
|
|
|
settings.SelfHosted = true;
|
2022-08-29 14:53:16 -04:00
|
|
|
|
|
2022-08-29 15:53:48 -04:00
|
|
|
|
return new SutProvider<LicensingService>(fixture)
|
|
|
|
|
|
.SetDependency(settings)
|
|
|
|
|
|
.Create();
|
2022-08-29 14:53:16 -04:00
|
|
|
|
}
|
2022-08-29 15:53:48 -04:00
|
|
|
|
|
|
|
|
|
|
[Theory, BitAutoData, OrganizationLicenseCustomize]
|
|
|
|
|
|
public async Task ReadOrganizationLicense(Organization organization, OrganizationLicense license)
|
2019-07-05 22:35:54 -05:00
|
|
|
|
{
|
2022-08-29 15:53:48 -04:00
|
|
|
|
var sutProvider = GetSutProvider();
|
|
|
|
|
|
|
|
|
|
|
|
File.WriteAllText(licenseFilePath(organization.Id), JsonSerializer.Serialize(license));
|
|
|
|
|
|
|
|
|
|
|
|
var actual = await sutProvider.Sut.ReadOrganizationLicenseAsync(organization);
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
Assert.Equal(JsonSerializer.Serialize(license), JsonSerializer.Serialize(actual));
|
|
|
|
|
|
}
|
|
|
|
|
|
finally
|
|
|
|
|
|
{
|
|
|
|
|
|
Directory.Delete(OrganizationLicenseDirectory.Value, true);
|
|
|
|
|
|
}
|
2019-07-05 22:35:54 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|