ASC.Files.Tests: adding a base tests class

This commit is contained in:
maksim 2020-09-15 16:24:44 +03:00
parent be789b68cd
commit 9eef572076
2 changed files with 192 additions and 105 deletions

View File

@ -0,0 +1,165 @@
using ASC.Api.Core;
using ASC.Api.Documents;
using ASC.Common.Security.Authentication;
using ASC.Core;
using ASC.Core.Common.Configuration;
using ASC.Core.Tenants;
using ASC.Core.Users;
using ASC.Files.Helpers;
using ASC.MessagingSystem;
using ASC.Web.Core;
using ASC.Web.Core.Files;
using ASC.Web.Files.Classes;
using ASC.Web.Files.Configuration;
using ASC.Web.Files.Helpers;
using ASC.Web.Files.Services.DocumentService;
using ASC.Web.Files.Services.WCFService;
using ASC.Web.Files.Utils;
using ASC.Web.Studio.Utility;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.IO;
namespace ASC.Files.Tests
{
public class BaseTests
{
private const string userId = "cb52f8a6-d564-11ea-a9b8-0a0027000010";
private const int tenantId = 1;
protected FilesController FilesController { get; set; }
protected TestServer TestServer { get; set; }
protected GlobalFolderHelper GlobalFolderHelper { get; set; }
protected Tenant CurrentTenant { get; set; }
protected UserInfo User { get; set; }
protected IAccount Account { get; set; }
protected SecurityContext SecurityContext { get; set; }
public virtual void SetUp()
{
TestServer = new TestServer(new WebHostBuilder()
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostingContext, config) =>
{
Configure(hostingContext, config);
}));
var apiContext = TestServer.Services.GetService<ApiContext>();
var filesControllerHelperString = TestServer.Services.GetService<FilesControllerHelper<string>>();
var filesControllerHelperInt = TestServer.Services.GetService<FilesControllerHelper<int>>();
var fileStorageService = TestServer.Services.GetService<FileStorageService<string>>();
var fileStorageServiceInt = TestServer.Services.GetService<FileStorageService<int>>();
var globalFolderHelper = TestServer.Services.GetService<GlobalFolderHelper>();
var filesSettingsHelper = TestServer.Services.GetService<FilesSettingsHelper>();
var filesLinkUtility = TestServer.Services.GetService<FilesLinkUtility>();
var securityContext = TestServer.Services.GetService<SecurityContext>();
var folderWrapperHelper = TestServer.Services.GetService<FolderWrapperHelper>();
var fileOperationWraperHelper = TestServer.Services.GetService<FileOperationWraperHelper>();
var entryManager = TestServer.Services.GetService<EntryManager>();
var userManager = TestServer.Services.GetService<UserManager>();
var webItemSecurity = TestServer.Services.GetService<WebItemSecurity>();
var coreBaseSettings = TestServer.Services.GetService<CoreBaseSettings>();
var thirdpartyConfiguration = TestServer.Services.GetService<ThirdpartyConfiguration>();
var messageService = TestServer.Services.GetService<MessageService>();
var commonLinkUtility = TestServer.Services.GetService<CommonLinkUtility>();
var documentServiceConnector = TestServer.Services.GetService<DocumentServiceConnector>();
var folderContentWrapperHelper = TestServer.Services.GetService<FolderContentWrapperHelper>();
var wordpressToken = TestServer.Services.GetService<WordpressToken>();
var wordpressHelper = TestServer.Services.GetService<WordpressHelper>();
var consumerFactory = TestServer.Services.GetService<ConsumerFactory>();
var easyBibHelper = TestServer.Services.GetService<EasyBibHelper>();
var productEntryPoint = TestServer.Services.GetService<ProductEntryPoint>();
FilesController = new FilesController(
apiContext,
filesControllerHelperString,
filesControllerHelperInt,
fileStorageService,
fileStorageServiceInt,
globalFolderHelper,
filesSettingsHelper,
filesLinkUtility,
securityContext,
folderWrapperHelper,
fileOperationWraperHelper,
entryManager,
userManager,
webItemSecurity,
coreBaseSettings,
thirdpartyConfiguration,
messageService,
commonLinkUtility,
documentServiceConnector,
folderContentWrapperHelper,
wordpressToken,
wordpressHelper,
consumerFactory,
easyBibHelper,
productEntryPoint);
GlobalFolderHelper = TestServer.Services.GetService<GlobalFolderHelper>();
SecurityContext = TestServer.Services.GetService<SecurityContext>();
CurrentTenant = SetAndGetCurrentTenant();
User = GetUser();
Account = GetAccount();
SecurityContext.AuthenticateMe(Account);
}
private void Configure(WebHostBuilderContext hostingContext, IConfigurationBuilder config)
{
var path = "..\\..\\..\\config";
if (!Path.IsPathRooted(path))
{
path = Path.GetFullPath(Path.Combine(hostingContext.HostingEnvironment.ContentRootPath, path));
}
config.SetBasePath(path);
config
.AddInMemoryCollection(new Dictionary<string, string>
{
{"pathToConf", path}
})
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true)
.AddJsonFile("storage.json")
.AddJsonFile("kafka.json")
.AddJsonFile($"kafka.{hostingContext.HostingEnvironment.EnvironmentName}.json", true)
.AddEnvironmentVariables();
}
private Tenant SetAndGetCurrentTenant()
{
var tenantManager = TestServer.Services.GetService<TenantManager>();
var tenant = tenantManager.GetTenant(tenantId);
tenantManager.SetCurrentTenant(tenant);
return tenantManager.CurrentTenant;
}
private UserInfo GetUser()
{
var userManager = TestServer.Services.GetService<UserManager>();
var user = userManager.GetUsers(new Guid(userId));
return user;
}
private IAccount GetAccount()
{
return new Account(User.ID, "maks", true);
}
public virtual void TearDown()
{
TestServer.Dispose();
}
}
}

View File

@ -1,73 +1,47 @@
using ASC.Api.Documents;
using ASC.Common.Security.Authentication;
using ASC.Core;
using ASC.Core.Common.EF;
using ASC.Core.Tenants;
using ASC.Files;
using ASC.Files.Tests;
using ASC.Web.Files.Classes;
using ASC.Web.Files.Services.WCFService.FileOperations;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.IO;
namespace ASC.Tests.ASC.Files.Tests
{
[TestFixture]
public class FilesControllerTests
public class FilesControllerTests : BaseTests
{
private FilesController FilesController { get; set; }
private TestServer TestServer { get; set; }
private GlobalFolderHelper GlobalFolderHelper { get; set; }
private Tenant CurrentTenant { get; set; }
private User User { get; set; }
private IAccount Account { get; set; }
private SecurityContext SecurityContext { get; set; }
[SetUp]
public void SetUp()
public override void SetUp()
{
TestServer = new TestServer(new WebHostBuilder()
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostingContext, config) =>
{
Configure(hostingContext, config);
}));
FilesController = TestServer.Services.GetService<FilesController>();
GlobalFolderHelper = TestServer.Services.GetService<GlobalFolderHelper>();
SecurityContext = TestServer.Services.GetService<SecurityContext>();
User = GetUser();
Account = GetAccount();
CurrentTenant = SetAndGetCurrentTenant();
SecurityContext.AuthenticateMe(Account);
base.SetUp();
}
[TestCase("test")]
public void CreateFileReturnsFileWrapperTest(string fileTitle)
[TestCase("folderOne")]
[TestCase("folderTwo")]
[Category("section 'My Documents'")]
public void CreateFolderReturnsFolderWrapperTest(string folderTitle)
{
var folder = FilesController.CreateFolder(GlobalFolderHelper.FolderMy, "folder");
Assert.IsNotNull(folder);
var folderWrapper = FilesController.CreateFolder(GlobalFolderHelper.FolderMy, folderTitle);
var fileWrapper = FilesController.CreateFile(GlobalFolderHelper.FolderMy, fileTitle);
Assert.IsNotNull(fileWrapper);
Assert.AreEqual(fileTitle, fileWrapper.Title);
Assert.IsNotNull(folderWrapper);
Assert.AreEqual(folderTitle, folderWrapper.Title);
}
[TestCase(1, false, true)]
[Ignore("")]
public void DeleteFileTest(int field, bool deleteAfter, bool immediately)
[TestCase(14, "fold")]
[Category("section 'My Documents'")]
public void RenameFolderReturnsFolderWrapperTest(int folderId, string folderTitle)
{
FilesController.DeleteFile(field, deleteAfter, immediately);
var folderWrapper = FilesController.RenameFolder(folderId, folderTitle);
Assert.IsNotNull(folderWrapper);
Assert.AreEqual(folderTitle, folderWrapper.Title);
}
[TestCase(14, false, true)]
[Category("section 'My Documents'")]
public void DeleteFolderTest(int folderId, bool deleteAfter, bool immediately)
{
FilesController.DeleteFolder(folderId, deleteAfter, immediately);
var statuses = FilesController.GetOperationStatuses();
@ -84,62 +58,10 @@ namespace ASC.Tests.ASC.Files.Tests
Assert.IsNotNull(status);
}
private void Configure(WebHostBuilderContext hostingContext, IConfigurationBuilder config)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var path = builder["pathToConf"];
if (!Path.IsPathRooted(path))
{
path = Path.GetFullPath(Path.Combine(hostingContext.HostingEnvironment.ContentRootPath, path));
}
config.SetBasePath(path);
config
.AddInMemoryCollection(new Dictionary<string, string>
{
{"pathToConf", path}
})
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true)
.AddJsonFile("storage.json")
.AddJsonFile("kafka.json")
.AddJsonFile($"kafka.{hostingContext.HostingEnvironment.EnvironmentName}.json", true)
.AddEnvironmentVariables();
}
private Tenant SetAndGetCurrentTenant()
{
var tenant = GetTenant();
var tenantManager = TestServer.Services.GetService<TenantManager>();
tenantManager.SetCurrentTenant(tenant);
return tenantManager.CurrentTenant;
}
private Tenant GetTenant()
{
return new Tenant();
}
private User GetUser()
{
return new User { Id = Guid.NewGuid() };
}
private IAccount GetAccount()
{
return new Account(User.Id, "maks", true);
}
[TearDown]
public void TearDown()
public override void TearDown()
{
TestServer.Dispose();
base.TearDown();
}
}
}