Hello ABP team
As a followup on ticket: https://support.abp.io/QA/Questions/2360/Configure-ABP--Swashbuckle-to-represent-enums-as-strings
I just realized that the problem is actually now solved by introducing that package. Basically we want to configure ASP.Core to interpret the enums by their String values, and not integers. This is usually solved by adding:
services.AddControllers().AddJsonOptions(options => { options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); });
How can we achieve this with ABP?
Just to be clear, using Unchase.Swashbuckle.AspNetCore.Extensions is not the solution, since this will just add explanations to the integer values.
Hi,
Try to run TestAppServiceTests~Initial_Data_Should_Contain_Admin_User
you will see exception: Message: Volo.Abp.AbpInitializationException : An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module Acme.BookStore.BookStoreTestBaseModule, Acme.BookStore.TestBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Volo.Abp.Identity.IdentityDataSeedContributor -> Volo.Abp.Identity.IdentityDataSeeder.. See the inner exception for details. ---- Autofac.Core.DependencyResolutionException : An exception was thrown while activating Volo.Abp.Identity.IdentityDataSeedContributor -> Volo.Abp.Identity.IdentityDataSeeder. -------- Autofac.Core.DependencyResolutionException : None of the constructors found on type 'Volo.Abp.Identity.IdentityDataSeeder' can be invoked with the available services and parameters: Cannot resolve parameter 'Volo.Abp.Identity.IIdentityRoleRepository roleRepository' of constructor 'Void .ctor(Volo.Abp.Guids.IGuidGenerator, Volo.Abp.Identity.IIdentityRoleRepository, Volo.Abp.Identity.IIdentityUserRepository, Microsoft.AspNetCore.Identity.ILookupNormalizer, Volo.Abp.Identity.IdentityUserManager, Volo.Abp.Identity.IdentityRoleManager, Volo.Abp.MultiTenancy.ICurrentTenant, Microsoft.Extensions.Options.IOptions`1[Microsoft.AspNetCore.Identity.IdentityOptions])'.
The issue is that now we have to implement the appservice tests as abstract, creata a new class in Acme.BookStore.EntityFrameworkCore.Tests and run tests from there
If this is the new approach, it's fine but an explanation and updated documentation would be fine :)
Hi Anjali,
Yes, I tried also what you suggested. I think that something changed in the test infrastructure, and now somehow we need to use the EF core test project?
Can you check internally who the test projects are meant to be used with the latest version?
Hi Anjali,
Yes, the generated test project for integration tests is working correctly. I have an issue with the one generated for application layer testing.
Hello ABP team
recently we have created two new solutions ( commercial and community ) and both templates have the same issue. We are trying to test an application service. When we want to use the sample appservice test, SampleAppServiceTests with the module generated for the test project, we get the following exception:
Acme.BookStore.Test.Initial_Data_Should_Contain_Admin_User Source: SampleAppServiceTests.cs line 25 Duration: 1 ms
Message: Volo.Abp.AbpInitializationException : An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module Acme.BookStore.BookStoreTestBaseModule, Acme.BookStore.TestBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: An exception was thrown while activating Volo.Abp.Identity.IdentityDataSeedContributor -> Volo.Abp.Identity.IdentityDataSeeder.. See the inner exception for details. ---- Autofac.Core.DependencyResolutionException : An exception was thrown while activating Volo.Abp.Identity.IdentityDataSeedContributor -> Volo.Abp.Identity.IdentityDataSeeder. -------- Autofac.Core.DependencyResolutionException : None of the constructors found on type 'Volo.Abp.Identity.IdentityDataSeeder' can be invoked with the available services and parameters: Cannot resolve parameter 'Volo.Abp.Identity.IIdentityRoleRepository roleRepository' of constructor 'Void .ctor(Volo.Abp.Guids.IGuidGenerator, Volo.Abp.Identity.IIdentityRoleRepository, Volo.Abp.Identity.IIdentityUserRepository, Microsoft.AspNetCore.Identity.ILookupNormalizer, Volo.Abp.Identity.IdentityUserManager, Volo.Abp.Identity.IdentityRoleManager, Volo.Abp.MultiTenancy.ICurrentTenant, Microsoft.Extensions.Options.IOptions`1[Microsoft.AspNetCore.Identity.IdentityOptions])'.
See https://autofac.rtfd.io/help/no-constructors-bindable for more info.
Stack Trace:
ModuleManager.InitializeModules(ApplicationInitializationContext context)
AbpApplicationBase.InitializeModules()
AbpApplicationWithExternalServiceProvider.Initialize(IServiceProvider serviceProvider)
AbpIntegratedTest1.ctor() BookStoreTestBase
1.ctor()
BookStoreApplicationTestBase1.ctor() SampleAppServiceTests
1.ctor() line 19
Test.ctor()
RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
----- Inner Stack Trace -----
ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action1 next) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) ResolvePipeline.Invoke(ResolveRequestContext context) RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action
1 next)
<>c__DisplayClass14_0.b__1(ResolveRequestContext context)
SharingMiddleware.Execute(ResolveRequestContext context, Action1 next) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action
1 next)
<>c__DisplayClass14_0.b__1(ResolveRequestContext context)
KeyedServiceMiddleware.Execute(ResolveRequestContext context, Action1 next) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) ResolvePipeline.Invoke(ResolveRequestContext context) ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest& request) ResolveOperation.ExecuteOperation(ResolveRequest& request) ResolveOperation.Execute(ResolveRequest& request) LifetimeScope.ResolveComponent(ResolveRequest& request) IComponentContext.ResolveComponent(ResolveRequest& request) ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable
1 parameters, Object& instance)
ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable1 parameters) ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable
1 parameters)
ResolutionExtensions.Resolve(IComponentContext context, Type serviceType)
AutofacServiceProvider.GetRequiredService(Type serviceType)
ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
DataSeeder.SeedAsync(DataSeedContext context)
AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
CastleAbpMethodInvocationAdapter.ProceedAsync()
UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
CastleAsyncAbpInterceptorAdapter1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func
3 proceed)
<b__0>d.MoveNext() line 41
--- End of stack trace from previous location ---
TaskExtensions.WaitAndUnwrapException(Task task)
<>c__DisplayClass15_0.b__0(Task t)
ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
TaskExtensions.WaitAndUnwrapException(Task task)
AsyncContext.Run(Func1 action) AsyncHelper.RunSync(Func
1 action)
BookStoreTestBaseModule.SeedTestData(ApplicationInitializationContext context) line 37
BookStoreTestBaseModule.OnApplicationInitialization(ApplicationInitializationContext context) line 32
OnApplicationInitializationModuleLifecycleContributor.Initialize(ApplicationInitializationContext context, IAbpModule module)
ModuleManager.InitializeModules(ApplicationInitializationContext context)
----- Inner Stack Trace -----
<>c__DisplayClass14_0.b__0(ResolveRequestContext context, Action1 next) DelegateMiddleware.Execute(ResolveRequestContext context, Action
1 next)
<>c__DisplayClass14_0.b__1(ResolveRequestContext context)
DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action1 next) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) <>c__DisplayClass41_0.<PropertiesAutowired>b__0(ResolveRequestContext context, Action
1 next)
DelegateMiddleware.Execute(ResolveRequestContext context, Action1 next) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) <>c__DisplayClass39_0.<OnActivated>b__0(ResolveRequestContext context, Action
1 next)
CoreEventMiddleware.Execute(ResolveRequestContext context, Action1 next) <>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext context) <>c__DisplayClass8_0
3.b__1(ResolveRequestContext ctx, Action1 next) DelegateMiddleware.Execute(ResolveRequestContext context, Action
1 next)
<>c__DisplayClass14_0.b__1(ResolveRequestContext context)
ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
Can you help us out here? I suppose some module is missing, but I wasn't able to pinpoint it yet
Thanks Alex
Hi Anjali,
Thanks for the infos, we will give it a look
ABP Framework version: 5.3.2 UI type: Angular DB provider: EF Core Tiered (MVC) or Identity Server Separated (Angular): no
Hello ABP team,
We need to configure 2 different servers to as identity servers for an abp project. Basically the requirements of the organization are to not store passwords in the abp database.
Do you have a guide how we could achieve this?
Thanks Alex
Hi,
Thanks for the answer. Can you please confirm that abp 5.3.2 is using V3 hashing?
Thanks Alex
Hello abp team,
Could you tell us what hashing algorithm is used for abp stored passwords?
Thank you Alex Maiereanu
Thanks,
we will check it out. Much appreciated