Merge remote-tracking branch 'remotes/origin/feature/wizard/migration' into develop

This commit is contained in:
diana-vahomskaya 2021-07-27 17:39:29 +03:00
commit 3131c27d26
19 changed files with 1000 additions and 46 deletions

View File

@ -61,11 +61,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Web.Api", "web\ASC.Web.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Web.Studio", "web\ASC.Web.Studio\ASC.Web.Studio.csproj", "{9BF17F6E-04A9-4597-9273-21AD09600329}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASC.Common.Tests", "common\Tests\ASC.Common.Tests\ASC.Common.Tests.csproj", "{E6DEAA28-9A73-470A-8F17-3E72B1E8D208}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Common.Tests", "common\Tests\ASC.Common.Tests\ASC.Common.Tests.csproj", "{E6DEAA28-9A73-470A-8F17-3E72B1E8D208}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASC.Core.Common.Tests", "common\Tests\ASC.Core.Common.Tests\ASC.Core.Common.Tests.csproj", "{EF613F37-CFA9-4631-AA6E-512262FABC8E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Core.Common.Tests", "common\Tests\ASC.Core.Common.Tests\ASC.Core.Common.Tests.csproj", "{EF613F37-CFA9-4631-AA6E-512262FABC8E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASC.Notify.Textile.Tests", "common\Tests\ASC.Notify.Textile.Tests\ASC.Notify.Textile.Tests.csproj", "{8FAD3D1B-3ADC-470C-9933-CAE1B95A8599}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Notify.Textile.Tests", "common\Tests\ASC.Notify.Textile.Tests\ASC.Notify.Textile.Tests.csproj", "{8FAD3D1B-3ADC-470C-9933-CAE1B95A8599}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASC.Web.Api.Tests", "common\Tests\ASC.Web.Api.Tests\ASC.Web.Api.Tests.csproj", "{14823E93-C749-4069-9E0A-95E63DE0B254}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -201,6 +203,10 @@ Global
{8FAD3D1B-3ADC-470C-9933-CAE1B95A8599}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FAD3D1B-3ADC-470C-9933-CAE1B95A8599}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FAD3D1B-3ADC-470C-9933-CAE1B95A8599}.Release|Any CPU.Build.0 = Release|Any CPU
{14823E93-C749-4069-9E0A-95E63DE0B254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{14823E93-C749-4069-9E0A-95E63DE0B254}.Debug|Any CPU.Build.0 = Debug|Any CPU
{14823E93-C749-4069-9E0A-95E63DE0B254}.Release|Any CPU.ActiveCfg = Release|Any CPU
{14823E93-C749-4069-9E0A-95E63DE0B254}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -23,8 +23,13 @@ namespace ASC.Core.Common.EF.Model
.Add(MySqlAddWebstudioSettings, Provider.MySql)
.Add(PgSqlAddWebstudioSettings, Provider.Postgre)
.HasData(
new DbWebstudioSettings { TenantId = 1, Id = Guid.Parse("9a925891-1f92-4ed7-b277-d6f649739f06"), UserId = Guid.Parse("00000000-0000-0000-0000-000000000000"), Data = "{'Completed':false}" }
);
new DbWebstudioSettings
{
TenantId = 1,
Id = Guid.Parse("9a925891-1f92-4ed7-b277-d6f649739f06"),
UserId = Guid.Parse("00000000-0000-0000-0000-000000000000"),
Data = "{\"Completed\":false}"
});
return modelBuilder;
}

View File

@ -30,8 +30,19 @@ namespace ASC.Core.Common.EF
.Add(MySqlAddDbQuota, Provider.MySql)
.Add(PgSqlAddDbQuota, Provider.Postgre)
.HasData(
new DbQuota { Tenant = -1, Name = "default", Description = null, MaxFileSize = 102400, MaxTotalSize = 10995116277760, ActiveUsers = 10000, Features = "domain,audit,controlpanel,healthcheck,ldap,sso,whitelabel,branding,ssbranding,update,support,portals:10000,discencryption,privacyroom,restore", Price = decimal.Parse("0,00"), Price2 = decimal.Parse("0,00"), AvangateId = "0", Visible = false }
);
new DbQuota
{
Tenant = -1,
Name = "default",
Description = null,
MaxFileSize = 102400,
MaxTotalSize = 10995116277760,
ActiveUsers = 10000,
Features = "domain,audit,controlpanel,healthcheck,ldap,sso,whitelabel,branding,ssbranding,update,support,portals:10000,discencryption,privacyroom,restore",
Price = decimal.Parse("0,00"),
Price2 = decimal.Parse("0,00"),
AvangateId = "0", Visible = false
});
return modelBuilder;
}

View File

@ -28,8 +28,7 @@ namespace ASC.Core.Common.EF
{
Tenant = 1,
UserId = Guid.Parse("66faa6e4-f133-11ea-b126-00ffeec8b4ef"),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
PwdHash = "jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=",
LastModified = DateTime.UtcNow
});

View File

@ -586,8 +586,7 @@ namespace ASC.Core.Common.Migrations.MySql.TenantDbContextMySql
{
UserId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
LastModified = new DateTime(2021, 3, 9, 9, 51, 15, 581, DateTimeKind.Utc).AddTicks(9172),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
PwdHash = "jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=",
Tenant = 1
});
});

View File

@ -230,8 +230,8 @@ namespace ASC.Core.Common.Migrations.MySql.TenantDbContextMySql
migrationBuilder.InsertData(
table: "core_usersecurity",
columns: new[] { "userid", "pwdhash", "pwdhashsha512", "tenant" },
values: new object[] { "66faa6e4-f133-11ea-b126-00ffeec8b4ef", "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=", "USubvPlB+ogq0Q1trcSupg==", 1 });
columns: new[] { "userid", "pwdhash", "tenant" },
values: new object[] { "66faa6e4-f133-11ea-b126-00ffeec8b4ef", "jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=", 1 });
migrationBuilder.CreateIndex(
name: "email",

View File

@ -493,22 +493,6 @@ namespace ASC.Core.Common.Migrations.MySql.TenantDbContextMySql
Tenant = 1,
UserName = "administrator",
WorkFromDate = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(8614)
},
new
{
Id = "005bb3ff-7de3-47d2-9b3d-61b9ec8a76a5",
ActivationStatus = 0,
CreateOn = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Email = "test@gmail.com",
FirstName = "Test",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9616),
LastName = "User",
PhoneActivation = 0,
Removed = false,
Status = 1,
Tenant = 1,
UserName = "TestUser",
WorkFromDate = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9613)
});
});
@ -600,16 +584,7 @@ namespace ASC.Core.Common.Migrations.MySql.TenantDbContextMySql
{
UserId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 101, DateTimeKind.Utc).AddTicks(8498),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
Tenant = 1
},
new
{
UserId = "005bb3ff-7de3-47d2-9b3d-61b9ec8a76a5",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 101, DateTimeKind.Utc).AddTicks(8834),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
PwdHash = "jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=",
Tenant = 1
});
});

View File

@ -1457,8 +1457,7 @@ namespace ASC.Core.Common.Migrations.MySql.UserDbContextMySql
{
UserId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
LastModified = new DateTime(2021, 3, 9, 9, 52, 55, 781, DateTimeKind.Utc).AddTicks(9061),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
PwdHash = "jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=",
Tenant = 1
});
});

View File

@ -1455,8 +1455,7 @@ namespace ASC.Core.Common.Migrations.MySql.UserDbContextMySql
{
UserId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
LastModified = new DateTime(2021, 3, 9, 9, 52, 55, 781, DateTimeKind.Utc).AddTicks(9061),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
PwdHash = "jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=",
Tenant = 1
});
});

View File

@ -77,7 +77,7 @@ namespace ASC.Core.Common.Migrations.MySql.WebstudioDbContextMySql
TenantId = 1,
Id = "9a925891-1f92-4ed7-b277-d6f649739f06",
UserId = "00000000-0000-0000-0000-000000000000",
Data = "{'Completed':false}"
Data = "{\"Completed\":false}"
});
});

View File

@ -60,7 +60,7 @@ namespace ASC.Core.Common.Migrations.MySql.WebstudioDbContextMySql
migrationBuilder.InsertData(
table: "webstudio_settings",
columns: new[] { "ID", "TenantID", "UserID", "Data" },
values: new object[] { "9a925891-1f92-4ed7-b277-d6f649739f06", 1, "00000000-0000-0000-0000-000000000000", "{'Completed':false}" });
values: new object[] { "9a925891-1f92-4ed7-b277-d6f649739f06", 1, "00000000-0000-0000-0000-000000000000", "{\"Completed\":false}" });
migrationBuilder.CreateIndex(
name: "ID",

View File

@ -75,7 +75,7 @@ namespace ASC.Core.Common.Migrations.MySql.WebstudioDbContextMySql
TenantId = 1,
Id = "9a925891-1f92-4ed7-b277-d6f649739f06",
UserId = "00000000-0000-0000-0000-000000000000",
Data = "{'Completed':false}"
Data = "{\"Completed\":false}"
});
});

View File

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
<PackageReference Include="NUnit" Version="3.13.1" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Include="coverlet.collector" Version="3.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\web\ASC.Web.Api\ASC.Web.Api.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="..\..\products\ASC.Files\Tests\TestMigrations\" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,107 @@
using System;
using System.IO;
using System.Reflection;
using ASC.Api.Settings;
using ASC.Common.Logging;
using ASC.Core;
using ASC.Core.Common.EF;
using ASC.Core.Common.EF.Context;
using ASC.Core.Common.EF.Model;
using ASC.Core.Common.Settings;
using ASC.Core.Tenants;
using ASC.Web.Api.Controllers;
using ASC.Web.Core.Utility.Settings;
using ASC.Web.Studio.UserControls.FirstTime;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using NUnit.Framework;
namespace ASC.Web.Api.Tests
{
[SetUpFixture]
public class MySetUpClass
{
protected IServiceScope Scope { get; set; }
[OneTimeSetUp]
public void CreateDb()
{
var host = Program.CreateHostBuilder(new string[] {
"--pathToConf", Path.Combine("..", "..", "..", "..","..", "..", "config"),
"--ConnectionStrings:default:connectionString", BaseApiTests.TestConnection,
"--migration:enabled", "true",
"--core:products:folder", Path.Combine("..", "..", "..", "..","..", "..", "products")}).Build();
Migrate(host.Services);
Migrate(host.Services, Assembly.GetExecutingAssembly().GetName().Name);
Scope = host.Services.CreateScope();
}
[OneTimeTearDown]
public void DropDb()
{
var context = Scope.ServiceProvider.GetService<DbContextManager<TenantDbContext>>();
context.Value.Database.EnsureDeleted();
}
private void Migrate(IServiceProvider serviceProvider, string testAssembly = null)
{
using var scope = serviceProvider.CreateScope();
if (!string.IsNullOrEmpty(testAssembly))
{
var configuration = scope.ServiceProvider.GetService<IConfiguration>();
configuration["testAssembly"] = testAssembly;
}
using var db = scope.ServiceProvider.GetService<DbContextManager<TenantDbContext>>();
db.Value.Migrate();
}
}
class BaseApiTests
{
protected ILog Log { get; set; }
protected UserManager UserManager { get; set; }
protected Tenant CurrentTenant { get; set; }
protected SecurityContext SecurityContext { get; set; }
protected UserOptions UserOptions { get; set; }
protected IServiceScope scope { get; set; }
protected SettingsManager settingsManager { get; set; }
protected DbWebstudioSettings dbWebStudioSettings { get; set; }
protected FirstTimeTenantSettings firstTimeTenantSettings { get; set; }
public const string TestConnection = "Server=localhost;Database=onlyoffice_test;User ID=root;Password=root;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;AllowPublicKeyRetrieval=True";
public virtual void SetUp()
{
var host = Program.CreateHostBuilder(new string[] {
"--pathToConf" , Path.Combine("..", "..", "..", "..","..", "..", "config"),
"--ConnectionStrings:default:connectionString", TestConnection,
"--migration:enabled", "true" }).Build();
scope = host.Services.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var tenant = tenantManager.GetTenant(1);
tenantManager.SetCurrentTenant(tenant);
CurrentTenant = tenant;
firstTimeTenantSettings = scope.ServiceProvider.GetService<FirstTimeTenantSettings>();
settingsManager = scope.ServiceProvider.GetService<SettingsManager>();
dbWebStudioSettings = scope.ServiceProvider.GetService<DbWebstudioSettings>();
UserManager = scope.ServiceProvider.GetService<UserManager>();
SecurityContext = scope.ServiceProvider.GetService<SecurityContext>();
UserOptions = scope.ServiceProvider.GetService<IOptions<UserOptions>>().Value;
Log = scope.ServiceProvider.GetService<IOptionsMonitor<ILog>>().CurrentValue;
SecurityContext.AuthenticateMe(CurrentTenant.OwnerId);
}
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace ASC.Web.Api.Tests.Infrastructure
{
class ApiTestsData
{
public static IEnumerable<TestCaseData> UserForWizard()
{
yield return new TestCaseData("testuser@onlyoffice.com", "00000000", "en-US", "UTC", "", "", false);
}
public static IEnumerable<TestCaseData> WebStudioSettingsData()
{
yield return new TestCaseData(1, Guid.Parse("00000000-0000-0000-0000-000000000000"), "{\"Completed\":false}");
}
}
}

View File

@ -0,0 +1,656 @@
// <auto-generated />
using System;
using ASC.Core.Common.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace ASC.Core.Common.Migrations.MySql.TenantDbContextMySql
{
[DbContext(typeof(MySqlTenantDbContext))]
[Migration("20210309174659_TestMigration")]
partial class TestMigration
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.3");
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbCoreSettings", b =>
{
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.Property<string>("Id")
.HasColumnType("varchar(128)")
.HasColumnName("id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAddOrUpdate()
.HasColumnType("timestamp")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<byte[]>("Value")
.IsRequired()
.HasColumnType("mediumblob")
.HasColumnName("value");
b.HasKey("Tenant", "Id")
.HasName("PRIMARY");
b.ToTable("core_settings");
b.HasData(
new
{
Tenant = -1,
Id = "CompanyWhiteLabelSettings",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 99, DateTimeKind.Utc).AddTicks(7085),
Value = new byte[] { 48, 120, 70, 53, 52, 55, 48, 52, 56, 65, 52, 56, 54, 53, 49, 55, 49, 53, 56, 55, 68, 57, 67, 69, 66, 67, 56, 65, 52, 57, 54, 67, 54, 48, 49, 68, 57, 54, 48, 51, 49, 70, 50, 67, 49, 67, 51, 69, 57, 49, 54, 48, 51, 53, 51, 57, 52, 50, 69, 69, 55, 54, 53, 68, 65, 67, 68, 51, 49, 54, 70, 52, 66, 53, 70, 52, 50, 56, 57, 50, 52, 51, 54, 70, 67, 52, 65, 50, 49, 66, 57, 65, 54, 68, 70, 56, 70, 70, 68, 51, 66, 67, 52, 48, 51, 54, 66, 52, 55, 69, 51, 65, 53, 65, 49, 66, 52, 67, 56, 56, 49, 66, 50, 54, 54, 48, 57, 56, 54, 57, 70, 69, 66, 66, 54, 56, 52, 56, 66, 68, 56, 56, 67, 48, 50, 69, 69, 65, 67, 54, 65, 52, 67, 67, 66, 51, 69, 56, 70, 52, 48, 52, 50, 57, 48, 56, 49, 50, 70, 48, 69, 54, 69, 49, 50, 52, 65, 53, 53, 50, 66, 69, 56, 49, 65, 53, 56, 67, 54, 52, 66, 66, 56, 66, 68, 51, 67, 57, 65, 56, 67, 48, 69, 68, 69, 49, 70, 57, 52, 50, 49, 50, 56, 49, 68, 69, 48, 67, 55, 65, 70, 56, 50, 55, 51, 51, 67, 48, 66, 55, 53, 52, 69, 57, 55, 69, 70, 70, 70, 65, 53, 65, 55, 53, 54, 48, 55, 65, 57, 49, 57, 53, 55, 56, 57, 54, 67, 66, 69, 67, 70, 57, 53, 54, 51, 70, 67, 56, 51, 49, 51, 48, 48, 68, 67, 56, 69, 55, 67, 57, 51, 48, 65, 53, 53, 66, 50, 57, 56, 69, 66, 56, 50, 68, 54, 70, 54, 57, 69, 48, 69, 68, 54, 69, 52, 68, 56, 55, 53, 50, 54, 48, 55, 70, 49, 56, 56, 49, 70, 54, 49, 66, 48, 51, 50, 51, 48, 54, 69, 48, 70, 48, 54, 57, 65, 53, 70, 54, 57, 70, 48, 56, 54, 65, 49, 55, 55, 69, 66, 52, 49, 65, 67, 48, 54, 70, 56, 56, 57, 69, 66, 48, 66, 51, 57, 67, 66, 70, 68, 52, 66, 53, 67, 68, 66, 55, 54, 51, 69, 57, 57, 54, 53, 53, 52, 68, 69, 65, 68, 66, 57, 67, 55, 49, 67, 70, 51, 69, 70, 56, 54, 70, 52, 65, 48, 51, 53, 52, 65, 56, 54, 52, 65, 49, 48, 54, 51, 57, 68, 70, 68, 50, 57, 66, 53, 67, 54, 68, 53, 68, 67, 68, 65, 57, 68, 52, 66, 48, 57, 56, 56, 69, 69, 52, 48, 54, 57, 52, 56, 66, 67, 66, 53, 52, 67, 54, 65, 55, 48, 65, 68, 67, 54, 67, 48, 48, 53, 55, 55, 49, 55, 52, 50, 56, 53, 67, 69, 66, 67, 68, 55, 54 }
},
new
{
Tenant = -1,
Id = "FullTextSearchSettings",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 99, DateTimeKind.Utc).AddTicks(7405),
Value = new byte[] { 48, 120, 48, 56, 55, 56, 67, 70, 48, 53, 57, 57, 66, 53, 49, 55, 67, 65, 65, 50, 68, 51, 68, 65, 69, 68, 57, 68, 48, 54, 52, 67, 51, 69, 68, 67, 69, 69, 65, 70, 52, 51, 49, 70, 51, 53, 65, 54, 70, 54, 52, 50, 68, 67, 65, 68, 65, 48, 52, 56, 49, 55, 69, 51, 53, 49, 51, 50, 50, 55, 66, 66, 66, 49, 68, 69, 54, 69, 50, 66, 65, 66, 69, 66, 57, 69, 49, 48, 55, 55, 66, 50, 67, 70, 51, 49, 56, 67, 52, 56, 57, 56, 49, 52, 53, 52, 53, 69, 56, 55, 55, 53, 48, 49, 70, 54, 51, 51, 70, 66, 66, 69, 57, 52, 48, 50, 50, 67, 70, 67, 68, 68, 48, 50, 53, 66, 53, 51, 57, 53, 57, 55, 51, 65, 70, 53, 49, 48, 57, 52, 51, 52, 48, 56, 66, 66, 53, 54, 57, 54, 50, 69, 69, 51, 53, 68, 65, 51, 53, 70, 50, 70, 56, 51, 55, 52, 67, 70, 53, 70, 68, 49, 50, 54, 57, 53, 51, 53, 57, 52, 52, 57, 68, 55, 67, 69, 70, 66, 67, 50, 67, 55, 66, 68, 49, 49, 50, 65, 69, 53, 56, 55, 53, 50, 49, 55, 57, 65, 65, 50, 65, 53, 57, 69, 53, 69, 49, 55, 56, 48, 49, 69, 53, 56, 48, 67, 67, 67, 54, 48, 70, 65, 69, 67, 56, 69, 66, 68, 68, 51, 68, 54, 49, 50, 67, 52, 56, 56, 54, 54, 54, 54, 68, 57, 54, 68, 54, 67, 70, 48, 54, 48, 54, 48, 53, 69, 54, 52, 67, 57, 48, 65, 49, 70, 65, 65, 56, 48, 67, 48 }
},
new
{
Tenant = -1,
Id = "SmtpSettings",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 99, DateTimeKind.Utc).AddTicks(7411),
Value = new byte[] { 48, 120, 70, 48, 53, 50, 69, 48, 57, 48, 65, 49, 65, 51, 55, 53, 48, 68, 65, 68, 67, 68, 52, 69, 57, 57, 54, 49, 68, 65, 48, 52, 65, 65, 53, 49, 69, 70, 48, 49, 57, 55, 69, 50, 67, 48, 54, 50, 51, 67, 70, 49, 50, 67, 53, 56, 51, 56, 66, 70, 65, 52, 48, 65, 57, 66, 52, 56, 66, 65, 69, 70, 67, 66, 69, 51, 55, 49, 53, 56, 55, 55, 51, 49, 68, 55, 69, 51, 68, 67, 57, 69, 55, 67, 54, 48, 48, 57, 55, 52, 50, 70, 57, 69, 52, 49, 53, 68, 53, 54, 68, 66, 48, 70, 48, 65, 69, 48, 56, 69, 51, 50, 70, 56, 57, 48, 52, 66, 50, 67, 52, 52, 49, 67, 67, 54, 53, 55, 67, 54, 52, 53, 52, 51, 69, 65, 69, 69, 50, 54, 50, 48, 52, 52, 65, 50, 56, 66, 52, 51, 51, 53, 68, 67, 66, 48, 70, 48, 67, 52, 69, 57, 52, 48, 49, 68, 56, 57, 49, 70, 65, 48, 54, 51, 54, 57, 70, 57, 56, 52, 67, 65, 50, 68, 52, 55, 53, 67, 56, 54, 67, 50, 51, 55, 57, 49, 55, 57, 54, 49, 67, 53, 56, 50, 55, 55, 54, 57, 56, 51, 49, 53, 56, 53, 50, 51, 48, 65, 54, 54, 65, 67, 55, 55, 56, 55, 69, 54, 70, 66, 53, 54, 70, 68, 51, 69, 51, 55, 51, 56, 57, 50, 54, 55, 65, 52, 54, 65 }
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<string>("Alias")
.IsRequired()
.HasColumnType("varchar(100)")
.HasColumnName("alias")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("calls")
.HasDefaultValueSql("true");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("datetime")
.HasColumnName("creationdatetime");
b.Property<int?>("Industry")
.HasColumnType("int")
.HasColumnName("industry");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("char(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("MappedDomain")
.HasColumnType("varchar(100)")
.HasColumnName("mappeddomain")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("OwnerId")
.IsRequired()
.HasColumnType("varchar(38)")
.HasColumnName("owner_id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("PaymentId")
.HasColumnType("varchar(38)")
.HasColumnName("payment_id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<bool>("Public")
.HasColumnType("tinyint(1)")
.HasColumnName("public");
b.Property<string>("PublicVisibleProducts")
.HasColumnType("varchar(1024)")
.HasColumnName("publicvisibleproducts")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("spam")
.HasDefaultValueSql("true");
b.Property<int>("Status")
.HasColumnType("int")
.HasColumnName("status");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("datetime")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.HasColumnType("varchar(50)")
.HasColumnName("timezone")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("TrustedDomains")
.HasColumnType("varchar(1024)")
.HasColumnName("trusteddomains")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("'1'");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("version")
.HasDefaultValueSql("'2'");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("datetime")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
LastModified = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
Public = false,
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantForbiden", b =>
{
b.Property<string>("Address")
.HasColumnType("varchar(50)")
.HasColumnName("address")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.HasKey("Address")
.HasName("PRIMARY");
b.ToTable("tenants_forbiden");
b.HasData(
new
{
Address = "controlpanel"
},
new
{
Address = "localhost"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantVersion", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<int>("DefaultVersion")
.HasColumnType("int")
.HasColumnName("default_version");
b.Property<string>("Url")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("url")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("version")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<bool>("Visible")
.HasColumnType("tinyint(1)")
.HasColumnName("visible");
b.HasKey("Id");
b.ToTable("tenants_version");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.TenantIpRestrictions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<string>("Ip")
.IsRequired()
.HasColumnType("varchar(50)")
.HasColumnName("ip")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.HasKey("Id");
b.HasIndex("Tenant")
.HasDatabaseName("tenant");
b.ToTable("tenants_iprestrictions");
});
modelBuilder.Entity("ASC.Core.Common.EF.User", b =>
{
b.Property<string>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("varchar(38)")
.HasColumnName("id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("ActivationStatus")
.HasColumnType("int")
.HasColumnName("activation_status");
b.Property<DateTime?>("Birthdate")
.HasColumnType("datetime")
.HasColumnName("bithdate");
b.Property<string>("Contacts")
.HasColumnType("varchar(1024)")
.HasColumnName("contacts")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<DateTime>("CreateOn")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp")
.HasColumnName("create_on")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("Culture")
.HasColumnType("varchar(20)")
.HasColumnName("culture")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Email")
.HasColumnType("varchar(255)")
.HasColumnName("email")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("FirstName")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("firstname")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("datetime")
.HasColumnName("last_modified");
b.Property<string>("LastName")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("lastname")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Location")
.HasColumnType("varchar(255)")
.HasColumnName("location")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Notes")
.HasColumnType("varchar(512)")
.HasColumnName("notes")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("Phone")
.HasColumnType("varchar(255)")
.HasColumnName("phone")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("PhoneActivation")
.HasColumnType("int")
.HasColumnName("phone_activation");
b.Property<bool>("Removed")
.HasColumnType("tinyint(1)")
.HasColumnName("removed");
b.Property<bool?>("Sex")
.HasColumnType("tinyint(1)")
.HasColumnName("sex");
b.Property<string>("Sid")
.HasColumnType("varchar(512)")
.HasColumnName("sid")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("SsoNameId")
.HasColumnType("varchar(512)")
.HasColumnName("sso_name_id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("SsoSessionId")
.HasColumnType("varchar(512)")
.HasColumnName("sso_session_id")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("status")
.HasDefaultValueSql("'1'");
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.Property<DateTime?>("TerminatedDate")
.HasColumnType("datetime")
.HasColumnName("terminateddate");
b.Property<string>("Title")
.HasColumnType("varchar(64)")
.HasColumnName("title")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("UserName")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("username")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<DateTime?>("WorkFromDate")
.HasColumnType("datetime")
.HasColumnName("workfromdate");
b.HasKey("Id");
b.HasIndex("Email")
.HasDatabaseName("email");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("Tenant", "UserName")
.HasDatabaseName("username");
b.ToTable("core_user");
b.HasData(
new
{
Id = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
ActivationStatus = 0,
CreateOn = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Email = "",
FirstName = "Administrator",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9324),
LastName = "",
PhoneActivation = 0,
Removed = false,
Status = 1,
Tenant = 1,
UserName = "administrator",
WorkFromDate = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(8614)
},
new
{
Id = "005bb3ff-7de3-47d2-9b3d-61b9ec8a76a5",
ActivationStatus = 0,
CreateOn = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Email = "test@gmail.com",
FirstName = "Test",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9616),
LastName = "User",
PhoneActivation = 0,
Removed = false,
Status = 1,
Tenant = 1,
UserName = "TestUser",
WorkFromDate = new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9613)
});
});
modelBuilder.Entity("ASC.Core.Common.EF.UserGroup", b =>
{
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.Property<string>("UserId")
.HasColumnType("varchar(38)")
.HasColumnName("userid")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("GroupId")
.HasColumnType("varchar(38)")
.HasColumnName("groupid")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("RefType")
.HasColumnType("int")
.HasColumnName("ref_type");
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<bool>("Removed")
.HasColumnType("tinyint(1)")
.HasColumnName("removed");
b.HasKey("Tenant", "UserId", "GroupId", "RefType")
.HasName("PRIMARY");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("UserId");
b.ToTable("core_usergroup");
});
modelBuilder.Entity("ASC.Core.Common.EF.UserSecurity", b =>
{
b.Property<string>("UserId")
.HasColumnType("varchar(38)")
.HasColumnName("userid")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<DateTime?>("LastModified")
.ValueGeneratedOnAddOrUpdate()
.HasColumnType("timestamp")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("PwdHash")
.HasColumnType("varchar(512)")
.HasColumnName("pwdhash")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<string>("PwdHashSha512")
.HasColumnType("varchar(512)")
.HasColumnName("pwdhashsha512")
.UseCollation("utf8_general_ci")
.HasCharSet("utf8");
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.HasKey("UserId")
.HasName("PRIMARY");
b.HasIndex("PwdHash")
.HasDatabaseName("pwdhash");
b.HasIndex("Tenant")
.HasDatabaseName("tenant");
b.ToTable("core_usersecurity");
b.HasData(
new
{
UserId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 101, DateTimeKind.Utc).AddTicks(8498),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
Tenant = 1
},
new
{
UserId = "005bb3ff-7de3-47d2-9b3d-61b9ec8a76a5",
LastModified = new DateTime(2021, 3, 9, 17, 46, 59, 101, DateTimeKind.Utc).AddTicks(8834),
PwdHash = "vLFfghR5tNV3K9DKhmwArV+SbjWAcgZZzIDTnJ0JgCo=",
PwdHashSha512 = "USubvPlB+ogq0Q1trcSupg==",
Tenant = 1
});
});
modelBuilder.Entity("ASC.Core.Common.EF.UserGroup", b =>
{
b.HasOne("ASC.Core.Common.EF.User", null)
.WithMany("Groups")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ASC.Core.Common.EF.UserSecurity", b =>
{
b.HasOne("ASC.Core.Common.EF.User", null)
.WithOne("UserSecurity")
.HasForeignKey("ASC.Core.Common.EF.UserSecurity", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ASC.Core.Common.EF.User", b =>
{
b.Navigation("Groups");
b.Navigation("UserSecurity");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,68 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace ASC.Core.Common.Migrations.MySql.TenantDbContextMySql
{
public partial class TestMigration : Microsoft.EntityFrameworkCore.Migrations.Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.UpdateData(
table: "core_user",
keyColumn: "id",
keyValue: "005bb3ff-7de3-47d2-9b3d-61b9ec8a76a5",
columns: new[] { "last_modified", "workfromdate" },
values: new object[] { new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9616), new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9613) });
migrationBuilder.InsertData(
table: "core_user",
columns: new[] { "id", "activation_status", "bithdate", "contacts", "culture", "email", "firstname", "last_modified", "lastname", "location", "notes", "phone", "phone_activation", "removed", "sex", "sid", "sso_name_id", "sso_session_id", "status", "tenant", "terminateddate", "title", "username", "workfromdate" },
values: new object[] { "99223c7b-e3c9-11eb-9063-982cbc0ea1e5", 0, null, null, null, "", "Test", new DateTime(2020, 12, 22, 15, 29, 45, 332, DateTimeKind.Utc).AddTicks(3070), "User", null, null, null, 0, false, null, null, null, null, 1, 1, null, null, "TestUser", new DateTime(2020, 12, 22, 15, 29, 45, 332, DateTimeKind.Utc).AddTicks(3053) });
migrationBuilder.UpdateData(
table: "core_user",
keyColumn: "id",
keyValue: "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
columns: new[] { "last_modified", "workfromdate" },
values: new object[] { new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(9324), new DateTime(2021, 3, 9, 17, 46, 59, 90, DateTimeKind.Utc).AddTicks(8614) });
migrationBuilder.InsertData(
table: "core_usersecurity",
columns: new[] { "userid", "pwdhash", "pwdhashsha512", "tenant" },
values: new object[] { "99223c7b-e3c9-11eb-9063-982cbc0ea1e5", "", "USubvPlB+ogq0Q1trcSupg==", 1 });
migrationBuilder.UpdateData(
table: "tenants_tenants",
keyColumn: "id",
keyValue: 1,
column: "creationdatetime",
value: new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.UpdateData(
table: "core_user",
keyColumn: "id",
keyValue: "005bb3ff-7de3-47d2-9b3d-61b9ec8a76a5",
columns: new[] { "last_modified", "workfromdate" },
values: new object[] { new DateTime(2021, 3, 9, 17, 44, 25, 638, DateTimeKind.Utc).AddTicks(9818), new DateTime(2021, 3, 9, 17, 44, 25, 638, DateTimeKind.Utc).AddTicks(9814) });
migrationBuilder.UpdateData(
table: "core_user",
keyColumn: "id",
keyValue: "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
columns: new[] { "last_modified", "workfromdate" },
values: new object[] { new DateTime(2021, 3, 9, 17, 44, 25, 638, DateTimeKind.Utc).AddTicks(9220), new DateTime(2021, 3, 9, 17, 44, 25, 638, DateTimeKind.Utc).AddTicks(7799) });
migrationBuilder.UpdateData(
table: "tenants_tenants",
keyColumn: "id",
keyValue: 1,
column: "creationdatetime",
value: new DateTime(2021, 3, 9, 17, 44, 25, 651, DateTimeKind.Utc).AddTicks(4834));
}
}
}

View File

@ -0,0 +1,86 @@
using System;
using ASC.Core;
using ASC.Core.Common.EF.Context;
using ASC.Core.Common.EF.Model;
using System.Text.Json;
using ASC.Core.Data;
using ASC.Core.Users;
using ASC.Web.Api.Models;
using ASC.Web.Api.Tests.Infrastructure;
using ASC.Web.Core.Utility.Settings;
using NUnit.Framework;
namespace ASC.Web.Api.Tests
{
[Serializable]
public class WizardData
{
public bool Completed { get; set; }
}
[TestFixture]
class WizardTest : BaseApiTests
{
public UserInfo NewUser { get; set; }
public WebstudioDbContext webstudioDbContext { get; set; }
public DbSettingsManager dbSettingsManager { get; set; }
public IServiceProvider ServiceProvider { get; set; }
public WizardSettings wizardSettings { get; set; }
[OneTimeSetUp]
public override void SetUp()
{
base.SetUp();
NewUser = UserManager.GetUsers(CurrentTenant.OwnerId);
}
[TestCaseSource(typeof(ApiTestsData), nameof(ApiTestsData.WebStudioSettingsData))]
[Category("Wizard")]
[Order(1)]
public void WizardDataTest(int tenant, Guid userId, string data)
{
var user = UserManager.GetUsers(Guid.Parse("99223c7b-e3c9-11eb-9063-982cbc0ea1e5"));
SecurityContext.AuthenticateMe(user.ID);
var WebStudioData = new DbWebstudioSettings
{
TenantId = tenant,
Id = user.ID,
UserId = userId,
Data = data
};
var wizard = settingsManager.Load<WizardSettings>();
var WizardSet = new WizardData
{
Completed = wizard.Completed
};
var json = JsonSerializer.Serialize(WizardSet);
Assert.AreEqual(WebStudioData.Data, json);
}
[TestCaseSource(typeof(ApiTestsData), nameof(ApiTestsData.UserForWizard))]
[Category("Wizard")]
[Order(2)]
public void WizardSaveDataTest(string email, string passwordHash, string lng, string timeZone, string promocode, string amiid, bool subscribeFromSite)
{
var wizardModel = new WizardModel
{
Email = email,
PasswordHash = passwordHash,
Lng = lng,
TimeZone = timeZone,
Promocode = promocode,
AmiId = amiid,
SubscribeFromSite = subscribeFromSite
};
var wizard = firstTimeTenantSettings.SaveData(wizardModel);
SecurityContext.AuthenticateMe(CurrentTenant.OwnerId);
Assert.IsTrue(wizard.Completed);
Assert.Throws<Exception>(() => firstTimeTenantSettings.SaveData(wizardModel));
}
}
}

View File

@ -1,5 +1,6 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
namespace ASC.Files.Tests