Browse Source

Add unit tests.

pull/18874/head
maliming 2 years ago
parent
commit
2d31fc8595
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 8
      framework/src/Volo.Abp.Core/Volo/Abp/DynamicProxy/ProxyHelper.cs
  2. 3
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
  3. 21
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ConventionalController_Tests.cs
  4. 17
      framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/ConventionalAppService.cs

8
framework/src/Volo.Abp.Core/Volo/Abp/DynamicProxy/ProxyHelper.cs

@ -8,6 +8,14 @@ public static class ProxyHelper
{
private const string ProxyNamespace = "Castle.Proxies";
/// <summary>
/// Checks if given object is a dynamic proxy.
/// </summary>
public static bool IsProxy(object obj)
{
return obj.GetType().Namespace == ProxyNamespace;
}
/// <summary>
/// Returns dynamic proxy target object if this is a proxied object, otherwise returns the given object.
/// It supports Castle Dynamic Proxies.

3
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs

@ -19,6 +19,7 @@ using Volo.Abp.Localization;
using Volo.Abp.MemoryDb;
using Volo.Abp.Modularity;
using Volo.Abp.TestApp;
using Volo.Abp.TestApp.Application;
using Volo.Abp.Threading;
using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
@ -53,6 +54,8 @@ public class AbpAspNetCoreMvcTestModule : AbpModule
string.Equals(urlActionNameNormalizerContext.ActionNameInUrl, "phone", StringComparison.OrdinalIgnoreCase)
? "phones"
: urlActionNameNormalizerContext.ActionNameInUrl;
opts.TypePredicate = type => type != typeof(ConventionalAppService);
});
options.ExposeIntegrationServices = true;

21
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ConventionalController_Tests.cs

@ -0,0 +1,21 @@
using Shouldly;
using Volo.Abp.DynamicProxy;
using Volo.Abp.TestApp.Application;
using Xunit;
namespace Volo.Abp.AspNetCore.Mvc;
public class ConventionalController_Tests : AspNetCoreMvcTestBase
{
[Fact]
public void Conventional_Controller_Should_Disable_DynamicProxy()
{
// PeopleAppService is a conventional controller
var peopleAppService = GetRequiredService<PeopleAppService>();
ProxyHelper.IsProxy(peopleAppService).ShouldBeFalse();
// ConventionalAppService is not a conventional controller
var conventionalAppService = GetRequiredService<ConventionalAppService>();
ProxyHelper.IsProxy(conventionalAppService).ShouldBeTrue();
}
}

17
framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/ConventionalAppService.cs

@ -0,0 +1,17 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Services;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Uow;
namespace Volo.Abp.TestApp.Application;
public class ConventionalAppService : IApplicationService, ITransientDependency
{
[Authorize]
[UnitOfWork]
public virtual Task GetAsync()
{
return Task.CompletedTask;
}
}
Loading…
Cancel
Save