mirror of https://github.com/Squidex/squidex.git
27 changed files with 553 additions and 231 deletions
@ -0,0 +1,114 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Squidex.ClientLibrary.Management; |
|||
using TestSuite.Fixtures; |
|||
using Xunit; |
|||
|
|||
#pragma warning disable SA1300 // Element should begin with upper-case letter
|
|||
#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row
|
|||
|
|||
namespace TestSuite.ApiTests |
|||
{ |
|||
public sealed class AppLanguagesTests : IClassFixture<ClientFixture> |
|||
{ |
|||
public ClientFixture _ { get; } |
|||
|
|||
public AppLanguagesTests(ClientFixture fixture) |
|||
{ |
|||
_ = fixture; |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_manage_languages() |
|||
{ |
|||
var appName = Guid.NewGuid().ToString(); |
|||
|
|||
// STEP 1: Add app
|
|||
var createRequest = new CreateAppDto { Name = appName }; |
|||
|
|||
await _.Apps.PostAppAsync(createRequest); |
|||
|
|||
|
|||
// STEP 2: Add languages
|
|||
await _.Apps.PostLanguageAsync(appName, new AddLanguageDto { Language = "de" }); |
|||
await _.Apps.PostLanguageAsync(appName, new AddLanguageDto { Language = "it" }); |
|||
await _.Apps.PostLanguageAsync(appName, new AddLanguageDto { Language = "fr" }); |
|||
|
|||
var languages = await _.Apps.GetLanguagesAsync(appName); |
|||
|
|||
var languageEN = languages.Items.First(x => x.Iso2Code == "en"); |
|||
|
|||
Assert.Equal(new string[] { "en", "de", "fr", "it" }, languages.Items.Select(x => x.Iso2Code).ToArray()); |
|||
Assert.True(languageEN.IsMaster); |
|||
|
|||
|
|||
// STEP 3: Update language1
|
|||
var updateRequest1 = new UpdateLanguageDto |
|||
{ |
|||
Fallback = new string[] |
|||
{ |
|||
"fr", |
|||
"it" |
|||
}, |
|||
IsOptional = true |
|||
}; |
|||
|
|||
languages = await _.Apps.PutLanguageAsync(appName, "de", updateRequest1); |
|||
|
|||
var languageDE = languages.Items.First(x => x.Iso2Code == "de"); |
|||
|
|||
Assert.Equal(new string[] { "fr", "it" }, languageDE.Fallback.ToArray()); |
|||
Assert.True(languageDE.IsOptional); |
|||
|
|||
|
|||
// STEP 4: Update language2
|
|||
var updateRequest2 = new UpdateLanguageDto |
|||
{ |
|||
Fallback = new string[] |
|||
{ |
|||
"fr", |
|||
"it" |
|||
} |
|||
}; |
|||
|
|||
languages = await _.Apps.PutLanguageAsync(appName, "en", updateRequest2); |
|||
|
|||
languageEN = languages.Items.First(x => x.Iso2Code == "en"); |
|||
|
|||
Assert.Equal(new string[] { "fr", "it" }, updateRequest2.Fallback.ToArray()); |
|||
|
|||
|
|||
// STEP 5: Change master language
|
|||
var masterRequest = new UpdateLanguageDto { IsMaster = true }; |
|||
|
|||
languages = await _.Apps.PutLanguageAsync(appName, "de", masterRequest); |
|||
|
|||
languageDE = languages.Items.First(x => x.Iso2Code == "de"); |
|||
languageEN = languages.Items.First(x => x.Iso2Code == "en"); |
|||
|
|||
Assert.True(languageDE.IsMaster); |
|||
Assert.False(languageDE.IsOptional); |
|||
Assert.False(languageEN.IsMaster); |
|||
Assert.Empty(languageDE.Fallback); |
|||
Assert.Equal(new string[] { "de", "en", "fr", "it" }, languages.Items.Select(x => x.Iso2Code).ToArray()); |
|||
|
|||
|
|||
// STEP 6: RemoveRequest
|
|||
languages = await _.Apps.DeleteLanguageAsync(appName, "fr"); |
|||
|
|||
languageEN = languages.Items.First(x => x.Iso2Code == "en"); |
|||
|
|||
Assert.Equal(new string[] { "it" }, languageEN.Fallback.ToArray()); |
|||
Assert.Equal(new string[] { "de", "en", "it" }, languages.Items.Select(x => x.Iso2Code).ToArray()); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,142 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Squidex.ClientLibrary.Management; |
|||
using TestSuite.Fixtures; |
|||
using Xunit; |
|||
|
|||
#pragma warning disable SA1300 // Element should begin with upper-case letter
|
|||
#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row
|
|||
|
|||
namespace TestSuite.ApiTests |
|||
{ |
|||
public class AssetFormatTests : IClassFixture<AssetFixture> |
|||
{ |
|||
public AssetFixture _ { get; } |
|||
|
|||
public AssetFormatTests(AssetFixture fixture) |
|||
{ |
|||
_ = fixture; |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_image_gif() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleGIFImage_40kbmb.gif", "image/gif"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.True(asset.IsImage); |
|||
Assert.Equal(312, asset.PixelHeight); |
|||
Assert.Equal(312, asset.PixelWidth); |
|||
Assert.Equal(312L, asset.Metadata["pixelHeight"]); |
|||
Assert.Equal(312L, asset.Metadata["pixelWidth"]); |
|||
Assert.Equal(AssetType.Image, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_image_gif_without_extension() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleGIFImage_40kbmb.gif", "image/gif", Guid.NewGuid().ToString()); |
|||
|
|||
// Should create metadata.
|
|||
Assert.True(asset.IsImage); |
|||
Assert.Equal(312, asset.PixelHeight); |
|||
Assert.Equal(312, asset.PixelWidth); |
|||
Assert.Equal(312L, asset.Metadata["pixelHeight"]); |
|||
Assert.Equal(312L, asset.Metadata["pixelWidth"]); |
|||
Assert.Equal(AssetType.Image, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_image_png() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SamplePNGImage_100kbmb.png", "image/png"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.True(asset.IsImage); |
|||
Assert.Equal(170, asset.PixelHeight); |
|||
Assert.Equal(272, asset.PixelWidth); |
|||
Assert.Equal(170L, asset.Metadata["pixelHeight"]); |
|||
Assert.Equal(272L, asset.Metadata["pixelWidth"]); |
|||
Assert.Equal(AssetType.Image, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_image_jpg() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleJPGImage_50kbmb.jpg", "image/jpg"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.True(asset.IsImage); |
|||
Assert.Equal(300, asset.PixelHeight); |
|||
Assert.Equal(300, asset.PixelWidth); |
|||
Assert.Equal(300L, asset.Metadata["pixelHeight"]); |
|||
Assert.Equal(300L, asset.Metadata["pixelWidth"]); |
|||
Assert.Equal(96L, asset.Metadata["imageQuality"]); |
|||
Assert.Equal(AssetType.Image, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_audio_mp3() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleAudio_0.4mb.mp3", "audio/mp3"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.False(asset.IsImage); |
|||
Assert.Equal("00:00:28.2708750", asset.Metadata["duration"]); |
|||
Assert.Equal(128L, asset.Metadata["audioBitrate"]); |
|||
Assert.Equal(2L, asset.Metadata["audioChannels"]); |
|||
Assert.Equal(44100L, asset.Metadata["audioSampleRate"]); |
|||
Assert.Equal(AssetType.Audio, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_video_mp4() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleVideo_1280x720_1mb.mp4", "audio/mp4"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.False(asset.IsImage); |
|||
Assert.Equal("00:00:05.3120000", asset.Metadata["duration"]); |
|||
Assert.Equal(384L, asset.Metadata["audioBitrate"]); |
|||
Assert.Equal(2L, asset.Metadata["audioChannels"]); |
|||
Assert.Equal(48000L, asset.Metadata["audioSampleRate"]); |
|||
Assert.Equal(1280L, asset.Metadata["videoWidth"]); |
|||
Assert.Equal(720L, asset.Metadata["videoHeight"]); |
|||
Assert.Equal(AssetType.Video, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_video_mkv() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleVideo_1280x720_1mb.flv", "audio/webm"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.Equal(AssetType.Unknown, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_video_flv() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleVideo_1280x720_1mb.flv", "audio/x-flv"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.Equal(AssetType.Unknown, asset.Type); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_upload_video_3gp() |
|||
{ |
|||
var asset = await _.UploadFileAsync("Assets/SampleVideo_176x144_1mb.3gp", "audio/3gpp"); |
|||
|
|||
// Should create metadata.
|
|||
Assert.Equal(AssetType.Unknown, asset.Type); |
|||
} |
|||
} |
|||
} |
|||
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 102 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,34 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Threading.Tasks; |
|||
using TestSuite.Fixtures; |
|||
using Xunit; |
|||
|
|||
#pragma warning disable SA1300 // Element should begin with upper-case letter
|
|||
#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row
|
|||
|
|||
namespace TestSuite.ApiTests |
|||
{ |
|||
public class LanguagesTests : IClassFixture<ClientFixture> |
|||
{ |
|||
public ClientFixture _ { get; } |
|||
|
|||
public LanguagesTests(ClientFixture fixture) |
|||
{ |
|||
_ = fixture; |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_provide_languages() |
|||
{ |
|||
var languages = await _.Languages.GetLanguagesAsync(); |
|||
|
|||
Assert.True(languages.Count > 100); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Threading.Tasks; |
|||
using TestSuite.Fixtures; |
|||
using Xunit; |
|||
|
|||
#pragma warning disable SA1300 // Element should begin with upper-case letter
|
|||
#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row
|
|||
|
|||
namespace TestSuite.ApiTests |
|||
{ |
|||
public class PingTests : IClassFixture<CreatedAppFixture> |
|||
{ |
|||
public CreatedAppFixture _ { get; } |
|||
|
|||
public PingTests(CreatedAppFixture fixture) |
|||
{ |
|||
_ = fixture; |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_ping_service() |
|||
{ |
|||
await _.Ping.GetPingAsync(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_ping_app() |
|||
{ |
|||
await _.Ping.GetAppPingAsync(_.AppName); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_get_info() |
|||
{ |
|||
var infos = await _.Ping.GetInfoAsync(); |
|||
|
|||
Assert.NotNull(infos); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using Squidex.ClientLibrary; |
|||
|
|||
namespace TestSuite.Fixtures |
|||
{ |
|||
public class ClientManagerFixture : IDisposable |
|||
{ |
|||
public string ServerUrl { get; } = "http://localhost:5000"; |
|||
|
|||
public string ClientId { get; } = "root"; |
|||
|
|||
public string ClientSecret { get; } = "xeLd6jFxqbXJrfmNLlO2j1apagGGGSyZJhFnIuHp4I0="; |
|||
|
|||
public string AppName { get; } = "integration-tests"; |
|||
|
|||
public SquidexClientManager ClientManager { get; } |
|||
|
|||
public ClientManagerFixture() |
|||
{ |
|||
ClientManager = new SquidexClientManager(ServerUrl, AppName, ClientId, ClientSecret) |
|||
{ |
|||
ReadResponseAsString = true |
|||
}; |
|||
} |
|||
|
|||
public virtual void Dispose() |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
@ -1,31 +0,0 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using Squidex.ClientLibrary; |
|||
|
|||
namespace TestSuite.Model |
|||
{ |
|||
internal static class TestClient |
|||
{ |
|||
public const string ServerUrl = "http://localhost:5000"; |
|||
|
|||
public const string ClientId = "root"; |
|||
public const string ClientSecret = "xeLd6jFxqbXJrfmNLlO2j1apagGGGSyZJhFnIuHp4I0="; |
|||
|
|||
public const string TestAppName = "integration-tests"; |
|||
|
|||
public static readonly SquidexClientManager ClientManager = |
|||
new SquidexClientManager( |
|||
ServerUrl, |
|||
TestAppName, |
|||
ClientId, |
|||
ClientSecret) |
|||
{ |
|||
ReadResponseAsString = true |
|||
}; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue