Browse Source

Templates test (#865)

* Test the templates.

* Check docker URL.

* Test

* Fix identity.
pull/866/head
Sebastian Stehle 4 years ago
committed by GitHub
parent
commit
9d8fe84e23
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/TemplateCommandMiddleware.cs
  2. 4
      backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/TemplatesOptions.cs
  3. 2
      backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
  4. 2
      backend/src/Squidex/Squidex.csproj
  5. 10
      backend/tests/docker-compose.yml
  6. 23
      backend/tools/TestSuite/TestSuite.ApiTests/AppCreationTests.cs
  7. 2
      backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj
  8. 2
      backend/tools/TestSuite/TestSuite.LoadTests/TestSuite.LoadTests.csproj
  9. 3
      backend/tools/TestSuite/TestSuite.Shared/ClientManagerWrapper.cs
  10. 2
      backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientFixture.cs
  11. 4
      backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

14
backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/TemplateCommandMiddleware.cs

@ -6,6 +6,7 @@
// ========================================================================== // ==========================================================================
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Squidex.CLI.Commands.Implementation; using Squidex.CLI.Commands.Implementation;
using Squidex.CLI.Commands.Implementation.FileSystem; using Squidex.CLI.Commands.Implementation.FileSystem;
using Squidex.CLI.Commands.Implementation.Sync; using Squidex.CLI.Commands.Implementation.Sync;
@ -28,13 +29,15 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates
public sealed class TemplateCommandMiddleware : ICommandMiddleware public sealed class TemplateCommandMiddleware : ICommandMiddleware
{ {
private readonly TemplatesClient templatesClient; private readonly TemplatesClient templatesClient;
private readonly TemplatesOptions templateOptions;
private readonly IUrlGenerator urlGenerator; private readonly IUrlGenerator urlGenerator;
private readonly ISemanticLog log; private readonly ISemanticLog log;
public TemplateCommandMiddleware(TemplatesClient templatesClient, IUrlGenerator urlGenerator, public TemplateCommandMiddleware(TemplatesClient templatesClient, IOptions<TemplatesOptions> templateOptions, IUrlGenerator urlGenerator,
ISemanticLog log) ISemanticLog log)
{ {
this.templatesClient = templatesClient; this.templatesClient = templatesClient;
this.templateOptions = templateOptions.Value;
this.urlGenerator = urlGenerator; this.urlGenerator = urlGenerator;
this.log = log; this.log = log;
@ -102,6 +105,13 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates
{ {
var client = app.Clients.First(); var client = app.Clients.First();
var url = templateOptions.LocalUrl;
if (string.IsNullOrEmpty(url))
{
url = urlGenerator.Root();
}
return new Session( return new Session(
app.Name, app.Name,
new DirectoryInfo(Path.GetTempPath()), new DirectoryInfo(Path.GetTempPath()),
@ -111,7 +121,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates
AppName = app.Name, AppName = app.Name,
ClientId = $"{app.Name}:{client.Key}", ClientId = $"{app.Name}:{client.Key}",
ClientSecret = client.Value.Secret, ClientSecret = client.Value.Secret,
Url = urlGenerator.Root() Url = url
})); }));
} }
} }

4
backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/TemplatesOptions.cs

@ -5,12 +5,12 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
#pragma warning disable SA1313 // Parameter names should begin with lower-case letter
namespace Squidex.Domain.Apps.Entities.Apps.Templates namespace Squidex.Domain.Apps.Entities.Apps.Templates
{ {
public sealed class TemplatesOptions public sealed class TemplatesOptions
{ {
public string? LocalUrl { get; set; }
public TemplateRepository[] Repositories { get; set; } public TemplateRepository[] Repositories { get; set; }
} }
} }

2
backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj

@ -34,7 +34,7 @@
<PackageReference Include="Microsoft.Orleans.Core" Version="3.6.0" /> <PackageReference Include="Microsoft.Orleans.Core" Version="3.6.0" />
<PackageReference Include="Notifo.SDK" Version="1.0.1" /> <PackageReference Include="Notifo.SDK" Version="1.0.1" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" /> <PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.CLI.Core" Version="8.6.0" /> <PackageReference Include="Squidex.CLI.Core" Version="8.8.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" /> <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="6.0.0" /> <PackageReference Include="System.Collections.Immutable" Version="6.0.0" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" /> <PackageReference Include="System.ValueTuple" Version="4.5.0" />

2
backend/src/Squidex/Squidex.csproj

@ -83,7 +83,7 @@
<PackageReference Include="Squidex.Assets.S3" Version="2.18.0" /> <PackageReference Include="Squidex.Assets.S3" Version="2.18.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="2.18.0" /> <PackageReference Include="Squidex.Assets.TusAdapter" Version="2.18.0" />
<PackageReference Include="Squidex.Caching.Orleans" Version="1.9.0" /> <PackageReference Include="Squidex.Caching.Orleans" Version="1.9.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.11.0" /> <PackageReference Include="Squidex.ClientLibrary" Version="8.12.0" />
<PackageReference Include="Squidex.Hosting" Version="2.13.0" /> <PackageReference Include="Squidex.Hosting" Version="2.13.0" />
<PackageReference Include="Squidex.OpenIddict.MongoDb" Version="4.0.1-dev" /> <PackageReference Include="Squidex.OpenIddict.MongoDb" Version="4.0.1-dev" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" /> <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />

10
backend/tests/docker-compose.yml

@ -13,15 +13,17 @@ services:
- "8080:80" - "8080:80"
environment: environment:
- URLS__BASEURL=http://localhost:8080 - URLS__BASEURL=http://localhost:8080
- ASSETS_RESIZERURL=http://resizer:8081
- EVENTSTORE__MONGODB__CONFIGURATION=mongodb://mongo - EVENTSTORE__MONGODB__CONFIGURATION=mongodb://mongo
- GRAPHQL__CACHEDURATION=0
- IDENTITY__ADMINCLIENTID=root - IDENTITY__ADMINCLIENTID=root
- IDENTITY__ADMINCLIENTSECRET=xeLd6jFxqbXJrfmNLlO2j1apagGGGSyZJhFnIuHp4I0= - IDENTITY__ADMINCLIENTSECRET=xeLd6jFxqbXJrfmNLlO2j1apagGGGSyZJhFnIuHp4I0=
- IDENTITY__MULTIPLEDOMAINS=true
- SCRIPTING__TIMEOUTEXECUTION=00:00:10
- SCRIPTING__TIMEOUTSCRIPT=00:00:10
- STORE__MONGODB__CONFIGURATION=mongodb://mongo - STORE__MONGODB__CONFIGURATION=mongodb://mongo
- STORE__TYPE=MongoDB - STORE__TYPE=MongoDB
- SCRIPTING__TIMEOUTSCRIPT=00:00:10 - TEMPLATES__LOCALURL=http://localhost:80
- SCRIPTING__TIMEOUTEXECUTION=00:00:10
- GRAPHQL__CACHEDURATION=0
- ASSETS_RESIZERURL=http://resizer:8081
networks: networks:
- internal - internal
depends_on: depends_on:

23
backend/tools/TestSuite/TestSuite.ApiTests/AppCreationTests.cs

@ -113,5 +113,28 @@ namespace TestSuite.ApiTests
// STEP 3: Create app again // STEP 3: Create app again
await _.Apps.PostAppAsync(createRequest); await _.Apps.PostAppAsync(createRequest);
} }
[Fact]
public async Task Should_create_app_from_templates()
{
var appName = Guid.NewGuid().ToString();
// STEP 1: Get template.
var templates = await _.Templates.GetTemplatesAsync();
var template = templates.Items.First(x => x.IsStarter);
// STEP 2: Create app.
var createRequest = new CreateAppDto { Name = appName, Template = template.Name };
await _.Apps.PostAppAsync(createRequest);
// STEP 3: Get schemas
var schemas = await _.Schemas.GetSchemasAsync(appName);
Assert.NotEmpty(schemas.Items);
}
} }
} }

2
backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj

@ -14,7 +14,7 @@
<None Remove="Assets\SampleImage_WEBP_350kb - Copy.webp" /> <None Remove="Assets\SampleImage_WEBP_350kb - Copy.webp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Meziantou.Analyzer" Version="1.0.697"> <PackageReference Include="Meziantou.Analyzer" Version="1.0.698">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>

2
backend/tools/TestSuite/TestSuite.LoadTests/TestSuite.LoadTests.csproj

@ -6,7 +6,7 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Meziantou.Analyzer" Version="1.0.697"> <PackageReference Include="Meziantou.Analyzer" Version="1.0.698">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>

3
backend/tools/TestSuite/TestSuite.Shared/ClientManagerWrapper.cs

@ -41,6 +41,9 @@ namespace TestSuite
[Lazy] [Lazy]
public ISchemasClient Schemas => ClientManager.CreateSchemasClient(); public ISchemasClient Schemas => ClientManager.CreateSchemasClient();
[Lazy]
public ITemplatesClient Templates => ClientManager.CreateTemplatesClient();
public ClientManagerWrapper() public ClientManagerWrapper()
{ {
var appName = GetValue("config:app:name", "integration-tests"); var appName = GetValue("config:app:name", "integration-tests");

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

@ -22,5 +22,7 @@ namespace TestSuite.Fixtures
public IRulesClient Rules => Squidex.Rules; public IRulesClient Rules => Squidex.Rules;
public ISchemasClient Schemas => Squidex.Schemas; public ISchemasClient Schemas => Squidex.Schemas;
public ITemplatesClient Templates => Squidex.Templates;
} }
} }

4
backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

@ -11,7 +11,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Lazy.Fody" Version="1.11.0" PrivateAssets="all" /> <PackageReference Include="Lazy.Fody" Version="1.11.0" PrivateAssets="all" />
<PackageReference Include="Meziantou.Analyzer" Version="1.0.697"> <PackageReference Include="Meziantou.Analyzer" Version="1.0.698">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
@ -21,7 +21,7 @@
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1" /> <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" /> <PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.11.0" /> <PackageReference Include="Squidex.ClientLibrary" Version="8.12.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" /> <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
</ItemGroup> </ItemGroup>

Loading…
Cancel
Save