209 lines
7.9 KiB
C#
209 lines
7.9 KiB
C#
/*
|
|
*
|
|
* (c) Copyright Ascensio System Limited 2010-2018
|
|
*
|
|
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
|
|
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
|
|
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
|
|
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
|
|
*
|
|
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
|
|
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
|
|
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
|
|
*
|
|
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
|
|
* relevant author attributions when distributing the software. If the display of the logo in its graphic
|
|
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
|
|
* in every copy of the program you distribute.
|
|
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
|
|
*
|
|
*/
|
|
|
|
|
|
#if DEBUG
|
|
namespace ASC.Core.Common.Tests
|
|
{
|
|
using System;
|
|
using System.Linq;
|
|
|
|
using ASC.Core.Data;
|
|
using ASC.Core.Tenants;
|
|
using ASC.Core.Users;
|
|
using ASC.Security.Cryptography;
|
|
|
|
using NUnit.Framework;
|
|
|
|
[TestFixture]
|
|
public class DbTenantServiceTest : DbBaseTest<DbTenantService>
|
|
{
|
|
private readonly EFUserService userService;
|
|
|
|
|
|
public DbTenantServiceTest()
|
|
{
|
|
userService = new EFUserService();
|
|
}
|
|
|
|
|
|
//[ClassInitialize]
|
|
public void ClearData()
|
|
{
|
|
foreach (var t in Service.GetTenants(default))
|
|
{
|
|
if (t.Name == "nct5nct5" || t.Name == "google5" || t.TenantId == Tenant) Service.RemoveTenant(t.TenantId);
|
|
}
|
|
foreach (var u in userService.GetUsers(Tenant, default))
|
|
{
|
|
userService.RemoveUser(Tenant, u.Value.ID, true);
|
|
}
|
|
Service.SetTenantSettings(Tenant, "key1", null);
|
|
Service.SetTenantSettings(Tenant, "key2", null);
|
|
Service.SetTenantSettings(Tenant, "key3", null);
|
|
}
|
|
|
|
[Test]
|
|
public void TenantTest()
|
|
{
|
|
var t1 = new Tenant("nct5nct5");
|
|
var t2 = new Tenant("google5") { MappedDomain = "domain" };
|
|
t2.TrustedDomains.Add(null);
|
|
t2.TrustedDomains.Add("microsoft");
|
|
|
|
Service.SaveTenant(null, t1);
|
|
Service.SaveTenant(null, t2);
|
|
|
|
var tenants = Service.GetTenants(default);
|
|
CollectionAssert.Contains(tenants.ToList(), t1);
|
|
CollectionAssert.Contains(tenants.ToList(), t2);
|
|
|
|
var t = Service.GetTenant(t1.TenantId);
|
|
CompareTenants(t, t1);
|
|
|
|
t1.Version = 2;
|
|
Service.SaveTenant(null, t1);
|
|
t = Service.GetTenant(t1.TenantId);
|
|
CompareTenants(t, t1);
|
|
|
|
Assert.AreEqual(0, t.TrustedDomains.Count);
|
|
CollectionAssert.AreEquivalent(new[] { "microsoft" }, Service.GetTenant(t2.TenantId).TrustedDomains);
|
|
|
|
Service.RemoveTenant(t1.TenantId);
|
|
Assert.IsNull(Service.GetTenant(t1.TenantId));
|
|
|
|
Service.RemoveTenant(t2.TenantId);
|
|
Assert.IsNull(Service.GetTenant(t2.MappedDomain));
|
|
|
|
|
|
t1 = new Tenant("nct5nct5");
|
|
Service.SaveTenant(null, t1);
|
|
|
|
var user = new UserInfo
|
|
{
|
|
UserName = "username",
|
|
FirstName = "first name",
|
|
LastName = "last name",
|
|
Email = "user@mail.ru"
|
|
};
|
|
userService.SaveUser(t1.TenantId, user);
|
|
|
|
var password = "password";
|
|
//userService.SetUserPassword(t1.TenantId, user.ID, password);
|
|
|
|
tenants = Service.GetTenants(user.Email, Hasher.Base64Hash(password, HashAlg.SHA256));
|
|
CollectionAssert.AreEqual(new[] { t1 }, tenants.ToList());
|
|
|
|
tenants = Service.GetTenants(user.Email, null);
|
|
CollectionAssert.Contains(tenants.ToList(), t1);
|
|
|
|
Service.RemoveTenant(t1.TenantId);
|
|
tenants = Service.GetTenants(user.Email, Hasher.Base64Hash(password, HashAlg.SHA256));
|
|
Assert.AreEqual(0, tenants.Count());
|
|
|
|
userService.RemoveUser(Tenant, user.ID, true);
|
|
}
|
|
|
|
[Test]
|
|
public void ValidateDomain()
|
|
{
|
|
ValidateDomain("12345", typeof(TenantTooShortException));
|
|
ValidateDomain("123456", null);
|
|
ValidateDomain("трала лалала", typeof(TenantIncorrectCharsException));
|
|
ValidateDomain("abc.defg", typeof(TenantIncorrectCharsException));
|
|
ValidateDomain("abcdef", null);
|
|
|
|
var t = new Tenant("nct5nct5") { MappedDomain = "nct5nct6" };
|
|
t = Service.SaveTenant(null, t);
|
|
ValidateDomain("nct5nct5", typeof(TenantAlreadyExistsException));
|
|
ValidateDomain("NCT5NCT5", typeof(TenantAlreadyExistsException));
|
|
ValidateDomain("nct5nct6", typeof(TenantAlreadyExistsException));
|
|
ValidateDomain("NCT5NCT6", typeof(TenantAlreadyExistsException));
|
|
ValidateDomain("nct5nct7", null);
|
|
try
|
|
{
|
|
Service.ValidateDomain("nct5nct5");
|
|
}
|
|
catch (TenantAlreadyExistsException e)
|
|
{
|
|
CollectionAssert.AreEquivalent(e.ExistsTenants.ToList(), new[] { "nct5nct5", "nct5nct6" });
|
|
}
|
|
|
|
t.MappedDomain = "abc.defg";
|
|
Service.SaveTenant(null, t);
|
|
Service.RemoveTenant(Tenant);
|
|
}
|
|
|
|
[Test]
|
|
public void TenantSettings()
|
|
{
|
|
Service.SetTenantSettings(Tenant, "key1", null);
|
|
Assert.IsNull(Service.GetTenantSettings(Tenant, "key1"));
|
|
|
|
Service.SetTenantSettings(Tenant, "key2", new byte[] { });
|
|
Assert.IsNull(Service.GetTenantSettings(Tenant, "key2"));
|
|
|
|
var data = new byte[] { 0 };
|
|
Service.SetTenantSettings(Tenant, "key3", data);
|
|
CollectionAssert.AreEquivalent(data, Service.GetTenantSettings(Tenant, "key3"));
|
|
|
|
Service.SetTenantSettings(Tenant, "key3", null);
|
|
Assert.IsNull(Service.GetTenantSettings(Tenant, "key3"));
|
|
}
|
|
|
|
private void CompareTenants(Tenant t1, Tenant t2)
|
|
{
|
|
Assert.AreEqual(t1.Language, t2.Language);
|
|
Assert.AreEqual(t1.MappedDomain, t2.MappedDomain);
|
|
Assert.AreEqual(t1.Name, t2.Name);
|
|
Assert.AreEqual(t1.OwnerId, t2.OwnerId);
|
|
Assert.AreEqual(t1.PartnerId, t2.PartnerId);
|
|
Assert.AreEqual(t1.PaymentId, t2.PaymentId);
|
|
Assert.AreEqual(t1.Status, t2.Status);
|
|
Assert.AreEqual(t1.TenantAlias, t2.TenantAlias);
|
|
Assert.AreEqual(t1.GetTenantDomain(null), t2.GetTenantDomain(null));
|
|
Assert.AreEqual(t1.TenantId, t2.TenantId);
|
|
Assert.AreEqual(t1.TrustedDomains, t2.TrustedDomains);
|
|
Assert.AreEqual(t1.TrustedDomainsType, t2.TrustedDomainsType);
|
|
Assert.AreEqual(t1.TimeZone, t2.TimeZone);
|
|
Assert.AreEqual(t1.Version, t2.Version);
|
|
Assert.AreEqual(t1.VersionChanged, t2.VersionChanged);
|
|
}
|
|
|
|
private void ValidateDomain(string domain, Type expectException)
|
|
{
|
|
try
|
|
{
|
|
Service.ValidateDomain(domain);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (expectException == null || !ex.GetType().Equals(expectException)) throw;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|