Browse Source

Test improvements.

pull/523/head
Sebastian 6 years ago
parent
commit
3e94effc03
  1. 35
      backend/tools/TestSuite/TestSuite.Shared/ClientManagerFactory.cs
  2. 67
      backend/tools/TestSuite/TestSuite.Shared/ClientManagerWrapper.cs
  3. 7
      backend/tools/TestSuite/TestSuite.Shared/Fixtures/AssetFixture.cs
  4. 29
      backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientFixture.cs
  5. 6
      backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs
  6. 3
      backend/tools/TestSuite/TestSuite.Shared/FodyWeavers.xml
  7. 26
      backend/tools/TestSuite/TestSuite.Shared/FodyWeavers.xsd
  8. 5
      backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

35
backend/tools/TestSuite/TestSuite.Shared/ClientManagerFactory.cs

@ -0,0 +1,35 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using System.Threading.Tasks;
namespace TestSuite
{
public static class ClientManagerFactory
{
private static Task<ClientManagerWrapper> manager;
public static Task<ClientManagerWrapper> CreateAsync()
{
if (manager == null)
{
manager = CreateInternalAsync();
}
return manager;
}
private static async Task<ClientManagerWrapper> CreateInternalAsync()
{
var clientManager = new ClientManagerWrapper();
await clientManager.ConnectAsync();
return clientManager;
}
}
}

67
backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFactory.cs → backend/tools/TestSuite/TestSuite.Shared/ClientManagerWrapper.cs

@ -8,33 +8,48 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Lazy;
using Squidex.ClientLibrary;
using Squidex.ClientLibrary.Configuration;
using Squidex.ClientLibrary.Management;
namespace TestSuite.Fixtures
namespace TestSuite
{
public static class ClientManagerFactory
public sealed class ClientManagerWrapper
{
private static Task<SquidexClientManager> manager;
private static Task<ClientManagerWrapper> manager;
public static Task<SquidexClientManager> CreateAsync()
{
if (manager == null)
{
manager = CreateInternalAsync();
}
public SquidexClientManager ClientManager { get; set; }
return manager;
}
[Lazy]
public IAppsClient Apps => ClientManager.CreateAppsClient();
[Lazy]
public IAssetsClient Assets => ClientManager.CreateAssetsClient();
private static async Task<SquidexClientManager> CreateInternalAsync()
[Lazy]
public IBackupsClient Backups => ClientManager.CreateBackupsClient();
[Lazy]
public ILanguagesClient Languages => ClientManager.CreateLanguagesClient();
[Lazy]
public IPingClient Ping => ClientManager.CreatePingClient();
[Lazy]
public IRulesClient Rules => ClientManager.CreateRulesClient();
[Lazy]
public ISchemasClient Schemas => ClientManager.CreateSchemasClient();
public ClientManagerWrapper()
{
var appName = GetValue("APP__NAME", "integration-tests");
var clientId = GetValue("CLIENT__ID", "root");
var clientSecret = GetValue("CLIENT__SECRET", "xeLd6jFxqbXJrfmNLlO2j1apagGGGSyZJhFnIuHp4I0=");
var serviceURl = GetValue("SERVER__URL", "https://localhost:5001");
var clientManager = new SquidexClientManager(new SquidexOptions
ClientManager = new SquidexClientManager(new SquidexOptions
{
AppName = appName,
ClientId = clientId,
@ -43,12 +58,34 @@ namespace TestSuite.Fixtures
Configurator = AcceptAllCertificatesConfigurator.Instance,
Url = serviceURl
});
}
public static Task<ClientManagerWrapper> CreateAsync()
{
if (manager == null)
{
manager = CreateInternalAsync();
}
return manager;
}
private static async Task<ClientManagerWrapper> CreateInternalAsync()
{
var clientManager = new ClientManagerWrapper();
await clientManager.ConnectAsync();
return clientManager;
}
public async Task ConnectAsync()
{
if (TryGetTimeout(out var waitSeconds))
{
Console.WriteLine("Waiting {0} seconds to access server", waitSeconds);
var pingClient = clientManager.CreatePingClient();
var pingClient = ClientManager.CreatePingClient();
using (var cts = new CancellationTokenSource(waitSeconds * 1000))
{
@ -67,8 +104,6 @@ namespace TestSuite.Fixtures
}
}
}
return clientManager;
}
private static bool TryGetTimeout(out int timeout)

7
backend/tools/TestSuite/TestSuite.Shared/Fixtures/AssetFixture.cs

@ -15,12 +15,7 @@ namespace TestSuite.Fixtures
{
public class AssetFixture : CreatedAppFixture
{
public IAssetsClient Assets { get; }
public AssetFixture()
{
Assets = ClientManager.CreateAssetsClient();
}
public IAssetsClient Assets => Squidex.Assets;
public async Task<MemoryStream> DownloadAsync(AssetDto asset)
{

29
backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientFixture.cs

@ -11,33 +11,16 @@ namespace TestSuite.Fixtures
{
public class ClientFixture : ClientManagerFixture
{
public IAppsClient Apps { get; }
public IAppsClient Apps => Squidex.Apps;
public IBackupsClient Backups { get; }
public IBackupsClient Backups => Squidex.Backups;
public ILanguagesClient Languages { get; }
public ILanguagesClient Languages => Squidex.Languages;
public IPingClient Ping { get; }
public IPingClient Ping => Squidex.Ping;
public IRulesClient Rules { get; }
public IRulesClient Rules => Squidex.Rules;
public ISchemasClient Schemas { get; }
public ClientFixture()
{
Apps = ClientManager.CreateAppsClient();
Backups = ClientManager.CreateBackupsClient();
Languages = ClientManager.CreateLanguagesClient();
Languages = ClientManager.CreateLanguagesClient();
Ping = ClientManager.CreatePingClient();
Rules = ClientManager.CreateRulesClient();
Schemas = ClientManager.CreateSchemasClient();
}
public ISchemasClient Schemas => Squidex.Schemas;
}
}

6
backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs

@ -12,6 +12,8 @@ namespace TestSuite.Fixtures
{
public class ClientManagerFixture : IDisposable
{
public ClientManagerWrapper Squidex { get; }
public string AppName => ClientManager.Options.AppName;
public string ClientId => ClientManager.Options.ClientId;
@ -20,11 +22,11 @@ namespace TestSuite.Fixtures
public string ServerUrl => ClientManager.Options.Url;
public SquidexClientManager ClientManager { get; }
public SquidexClientManager ClientManager => Squidex.ClientManager;
public ClientManagerFixture()
{
ClientManager = ClientManagerFactory.CreateAsync().Result;
Squidex = ClientManagerWrapper.CreateAsync().Result;
}
public virtual void Dispose()

3
backend/tools/TestSuite/TestSuite.Shared/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Lazy />
</Weavers>

26
backend/tools/TestSuite/TestSuite.Shared/FodyWeavers.xsd

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="Lazy" minOccurs="0" maxOccurs="1" type="xs:anyType" />
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

5
backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

@ -3,6 +3,11 @@
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Fody" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Lazy.Fody" Version="1.8.0" PrivateAssets="all" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.ClientLibrary" Version="5.1.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />

Loading…
Cancel
Save