From 93482b5ba644bc079ec889916c7f570ba7b00944 Mon Sep 17 00:00:00 2001
From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN>
Date: Wed, 1 May 2024 08:08:14 +0200
Subject: [PATCH] refactoring, improvements, fixes, etc...
---
.../AyCode.Core.Tests.Internal.csproj | 39 ++++++++++++++
.../Entities/Address.cs | 18 +++++++
.../Entities/Company.cs | 17 +++++++
.../Entities/EmailMessage.cs | 17 +++++++
.../Entities/EmailRecipient.cs | 17 +++++++
.../Entities/Profile.cs | 17 +++++++
AyCode.Core.Tests.Internal/Entities/User.cs | 17 +++++++
.../Entities/UserToCompany.cs | 17 +++++++
.../Entities/UserToken.cs | 17 +++++++
AyCode.Core.Tests/AyCode.Core.Tests.csproj | 9 ++++
AyCode.Core.sln | 12 +++++
.../AyCode.Database.Tests.Internal.csproj | 43 ++++++++++++++++
.../DatabaseTestBase.cs | 22 ++++++++
.../Users/UserDal.cs | 12 +++++
.../Users/UserDalTests.cs | 16 ++++++
.../Users/UserDbContext.cs | 51 +++++++++++++++++++
AyCode.Database.Tests/AcDatabaseTestBase.cs | 2 +-
.../AyCode.Database.Tests.csproj | 13 +++++
.../Users/AcUserDalTestBase.cs | 19 +++++--
AyCode.Database.Tests/appsettings.json | 22 ++++++++
.../DataLayers/Users/AcUserDalBase.cs | 6 ++-
.../DbContexts/Users/AcUserDbContextBase.cs | 5 +-
.../DbContexts/Users/IAcUserDbContextBase.cs | 9 +++-
.../AcLoginServiceServerTestBase.cs | 8 +--
.../Logins/AcLoginServiceServer.cs | 8 +--
25 files changed, 417 insertions(+), 16 deletions(-)
create mode 100644 AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj
create mode 100644 AyCode.Core.Tests.Internal/Entities/Address.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/Company.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/EmailMessage.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/EmailRecipient.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/Profile.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/User.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/UserToCompany.cs
create mode 100644 AyCode.Core.Tests.Internal/Entities/UserToken.cs
create mode 100644 AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj
create mode 100644 AyCode.Database.Tests.Internal/DatabaseTestBase.cs
create mode 100644 AyCode.Database.Tests.Internal/Users/UserDal.cs
create mode 100644 AyCode.Database.Tests.Internal/Users/UserDalTests.cs
create mode 100644 AyCode.Database.Tests.Internal/Users/UserDbContext.cs
create mode 100644 AyCode.Database.Tests/appsettings.json
diff --git a/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj b/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj
new file mode 100644
index 0000000..eed753f
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj
@@ -0,0 +1,39 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AyCode.Core.Tests.Internal/Entities/Address.cs b/AyCode.Core.Tests.Internal/Entities/Address.cs
new file mode 100644
index 0000000..d964178
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/Address.cs
@@ -0,0 +1,18 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.Addresses;
+using AyCode.Interfaces.Addresses;
+using AyCode.Interfaces.Addresses.Dtos;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class Address : AcAddress, IAcAddress, IAcAddressDtoBase
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/Company.cs b/AyCode.Core.Tests.Internal/Entities/Company.cs
new file mode 100644
index 0000000..c46919b
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/Company.cs
@@ -0,0 +1,17 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.ServiceProviders;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class Company : AcServiceProvider
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/EmailMessage.cs b/AyCode.Core.Tests.Internal/Entities/EmailMessage.cs
new file mode 100644
index 0000000..751c377
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/EmailMessage.cs
@@ -0,0 +1,17 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.Messages;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class EmailMessage : AcEmailMessage
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/EmailRecipient.cs b/AyCode.Core.Tests.Internal/Entities/EmailRecipient.cs
new file mode 100644
index 0000000..3baff3b
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/EmailRecipient.cs
@@ -0,0 +1,17 @@
+using AyCode.Entities.Messages;
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class EmailRecipient : AcEmailRecipient
+{
+ public EmailRecipient()
+ {
+ }
+
+ public EmailRecipient(Guid id, Guid recipientId, Guid emailMessageId, string emailAddress) : base(id, recipientId, emailMessageId, emailAddress)
+ {
+ }
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/Profile.cs b/AyCode.Core.Tests.Internal/Entities/Profile.cs
new file mode 100644
index 0000000..45340c5
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/Profile.cs
@@ -0,0 +1,17 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.Profiles;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class Profile : AcProfile
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/User.cs b/AyCode.Core.Tests.Internal/Entities/User.cs
new file mode 100644
index 0000000..00fa905
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/User.cs
@@ -0,0 +1,17 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.Users;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class User : AcUser
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/UserToCompany.cs b/AyCode.Core.Tests.Internal/Entities/UserToCompany.cs
new file mode 100644
index 0000000..b31ce54
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/UserToCompany.cs
@@ -0,0 +1,17 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.Users;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class UserToCompany: AcUserToServiceProvider
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests.Internal/Entities/UserToken.cs b/AyCode.Core.Tests.Internal/Entities/UserToken.cs
new file mode 100644
index 0000000..8dee8ef
--- /dev/null
+++ b/AyCode.Core.Tests.Internal/Entities/UserToken.cs
@@ -0,0 +1,17 @@
+using System.Runtime.CompilerServices;
+using AyCode.Entities.Users;
+
+[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
+[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
+
+namespace AyCode.Core.Tests.Internal.Entities;
+
+///
+/// DON'T USE!!!
+///
+public class UserToken : AcUserTokenBase
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Core.Tests/AyCode.Core.Tests.csproj b/AyCode.Core.Tests/AyCode.Core.Tests.csproj
index 83deb0a..46f456b 100644
--- a/AyCode.Core.Tests/AyCode.Core.Tests.csproj
+++ b/AyCode.Core.Tests/AyCode.Core.Tests.csproj
@@ -21,4 +21,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/AyCode.Core.sln b/AyCode.Core.sln
index f2f9000..333ad5d 100644
--- a/AyCode.Core.sln
+++ b/AyCode.Core.sln
@@ -35,6 +35,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AyCode.Services.Server", "A
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AyCode.Services.Server.Tests", "AyCode.Services.Server.Tests\AyCode.Services.Server.Tests.csproj", "{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Core.Tests.Internal", "AyCode.Core.Tests.Internal\AyCode.Core.Tests.Internal.csproj", "{DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Database.Tests.Internal", "AyCode.Database.Tests.Internal\AyCode.Database.Tests.Internal.csproj", "{73261A8C-FB41-4C4C-90D4-ED5EEC991413}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -102,6 +106,14 @@ Global
{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj b/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj
new file mode 100644
index 0000000..87fa9c9
--- /dev/null
+++ b/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj
@@ -0,0 +1,43 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AyCode.Database.Tests.Internal/DatabaseTestBase.cs b/AyCode.Database.Tests.Internal/DatabaseTestBase.cs
new file mode 100644
index 0000000..57f7ae6
--- /dev/null
+++ b/AyCode.Database.Tests.Internal/DatabaseTestBase.cs
@@ -0,0 +1,22 @@
+using AyCode.Database.DbContexts;
+
+namespace AyCode.Database.Tests.Internal
+{
+ [TestClass]
+ public class DatabaseTestBase : AcDatabaseTestBase
+ {
+ [TestInitialize]
+ public void Setup()
+ {
+
+ }
+
+ [TestCleanup]
+ public void TearDown()
+ {
+ }
+
+ [TestMethod]
+ public override void DatabaseExistsTest() => base.DatabaseExistsTest();
+ }
+}
\ No newline at end of file
diff --git a/AyCode.Database.Tests.Internal/Users/UserDal.cs b/AyCode.Database.Tests.Internal/Users/UserDal.cs
new file mode 100644
index 0000000..b7dd553
--- /dev/null
+++ b/AyCode.Database.Tests.Internal/Users/UserDal.cs
@@ -0,0 +1,12 @@
+using AyCode.Core.Tests.Internal.Entities;
+using AyCode.Database.DataLayers.Users;
+
+namespace AyCode.Database.Tests.Internal.Users;
+
+///
+/// DON'T USE!!!
+///
+public sealed class UserDal : AcUserDalBase
+{
+
+}
\ No newline at end of file
diff --git a/AyCode.Database.Tests.Internal/Users/UserDalTests.cs b/AyCode.Database.Tests.Internal/Users/UserDalTests.cs
new file mode 100644
index 0000000..52cae2d
--- /dev/null
+++ b/AyCode.Database.Tests.Internal/Users/UserDalTests.cs
@@ -0,0 +1,16 @@
+using AyCode.Core.Tests.Internal.Entities;
+using AyCode.Database.Tests.Users;
+
+namespace AyCode.Database.Tests.Internal.Users;
+
+///
+/// DON'T USE!!!
+///
+[TestClass]
+public sealed class UserDalTests : AcUserDalTestBase
+{
+ [TestMethod]
+ [DataRow("test@tiam.hu")]
+ public override void AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(string email)
+ => base.AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(email);
+}
\ No newline at end of file
diff --git a/AyCode.Database.Tests.Internal/Users/UserDbContext.cs b/AyCode.Database.Tests.Internal/Users/UserDbContext.cs
new file mode 100644
index 0000000..9d4a4fe
--- /dev/null
+++ b/AyCode.Database.Tests.Internal/Users/UserDbContext.cs
@@ -0,0 +1,51 @@
+using AyCode.Core.Tests.Internal.Entities;
+using AyCode.Database.DbContexts.Users;
+using Microsoft.EntityFrameworkCore;
+
+namespace AyCode.Database.Tests.Internal.Users;
+
+///
+/// DON'T USE!!!
+///
+public sealed class UserDbContext : AcUserDbContextBase
+{
+ public UserDbContext() //: this(string.Empty)
+ {
+
+ }
+
+ public UserDbContext(DbContextOptions options) //: this(string.Empty)
+ {
+
+ }
+
+ public UserDbContext(string name) : base(name)
+ {
+ }
+
+ public UserDbContext(DbContextOptions options, string name) : base(options, name)
+ {
+ }
+
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+ {
+ base.OnConfiguring(optionsBuilder);
+
+ optionsBuilder.UseLazyLoadingProxies(true);
+ optionsBuilder.EnableDetailedErrors(true);
+
+ //optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DeveloperDbConnection"));
+ var connString = "Data Source=185.51.190.197;Initial Catalog=TIAM_DEV;Trusted_Connection=false;Encrypt=false;TrustServerCertificate=True;Connect Timeout=200;User ID=Anata_Development_Team;Password=v6f_?xNfg9N1;MultipleActiveResultSets=true";
+ optionsBuilder.UseSqlServer(connString);
+ }
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ base.OnModelCreating(modelBuilder);
+
+ //new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity());
+ //new ProfileEntityTypeConfigurations().Configure(modelBuilder.Entity());
+
+ //new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity());
+ }
+}
diff --git a/AyCode.Database.Tests/AcDatabaseTestBase.cs b/AyCode.Database.Tests/AcDatabaseTestBase.cs
index 1043528..00cce98 100644
--- a/AyCode.Database.Tests/AcDatabaseTestBase.cs
+++ b/AyCode.Database.Tests/AcDatabaseTestBase.cs
@@ -5,7 +5,7 @@ namespace AyCode.Database.Tests
public abstract class AcDatabaseTestBase : AcDatabaseTestModelBase where TDbContext : AcDbContextBase
{
[TestMethod]
- public void DatabaseExistsTest()
+ public virtual void DatabaseExistsTest()
{
var isConnected = Context.Database.CanConnect();
Assert.IsTrue(isConnected);
diff --git a/AyCode.Database.Tests/AyCode.Database.Tests.csproj b/AyCode.Database.Tests/AyCode.Database.Tests.csproj
index 1e54d19..2007ac4 100644
--- a/AyCode.Database.Tests/AyCode.Database.Tests.csproj
+++ b/AyCode.Database.Tests/AyCode.Database.Tests.csproj
@@ -10,6 +10,17 @@
+
+
+
+
+
+ PreserveNewest
+
+
+
+
+
@@ -30,6 +41,8 @@
+
+
diff --git a/AyCode.Database.Tests/Users/AcUserDalTestBase.cs b/AyCode.Database.Tests/Users/AcUserDalTestBase.cs
index c44bf04..67a6a19 100644
--- a/AyCode.Database.Tests/Users/AcUserDalTestBase.cs
+++ b/AyCode.Database.Tests/Users/AcUserDalTestBase.cs
@@ -1,22 +1,28 @@
using AyCode.Database.DataLayers.Users;
using AyCode.Database.DbContexts;
using AyCode.Database.DbContexts.Users;
+using AyCode.Database.Tests;
+using AyCode.Entities.Addresses;
+using AyCode.Entities.Profiles;
+using AyCode.Entities.Users;
using AyCode.Interfaces.Addresses;
+using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;
namespace AyCode.Database.Tests.Users
{
- public abstract class AcUserDalTestBase : AcDatabaseTestModelBase
- where TDal : AcUserDalBase
- where TDbContext : AcDbContextBase, IAcUserDbContextBase
+ public abstract class AcUserDalTestBase : AcDatabaseTestModelBase
+ where TDal : AcUserDalBase
+ where TDbContext : AcDbContextBase, IAcUserDbContextBase
where TUser : class, IAcUser
where TProfile : class, IAcProfile
where TProfileAddress : class, IAcAddress
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
+ where TEmailMessage : class, IAcEmailMessageBase
{
protected TUser AcBase_GetUserById_ReturnsUser_WhenUserExists(string userIdString)
{
@@ -32,7 +38,12 @@ namespace AyCode.Database.Tests.Users
return user;
}
- protected TUser AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(string email)
+ [TestMethod]
+ [DataRow("2test@tiam.hu")]
+ public virtual void AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(string email) => AcBase_GetUserByEmail(email);
+
+ // ReSharper disable once MemberCanBePrivate.Global
+ protected TUser AcBase_GetUserByEmail(string email)
{
var user = Dal.GetUserByEmail(email, false);
diff --git a/AyCode.Database.Tests/appsettings.json b/AyCode.Database.Tests/appsettings.json
new file mode 100644
index 0000000..48d14a2
--- /dev/null
+++ b/AyCode.Database.Tests/appsettings.json
@@ -0,0 +1,22 @@
+{
+ "ConnectionStrings": {
+ "DeveloperDbConnection": "Data Source=185.51.190.197;Initial Catalog=TIAM_DEV;Trusted_Connection=False;Connect Timeout=200;User ID=Anata_Development_Team;Password=v6f_?xNfg9N1;MultipleActiveResultSets=true"
+ },
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "JWT": {
+ "Key": "Cee4400-rDMFkVvHPufyLDSzbfu2grgRhpepos299IhTLOXsljkcpt3yUR4RRjPQ",
+ "Issuer": "http://localhost:5000",
+ "Audience": "http://localhost:5000"
+ },
+ "SendGrid": {
+ //"Key": "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"
+ "Key": "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"
+ }
+
+}
diff --git a/AyCode.Database/DataLayers/Users/AcUserDalBase.cs b/AyCode.Database/DataLayers/Users/AcUserDalBase.cs
index 493b600..a3b7a80 100644
--- a/AyCode.Database/DataLayers/Users/AcUserDalBase.cs
+++ b/AyCode.Database/DataLayers/Users/AcUserDalBase.cs
@@ -13,19 +13,21 @@ using AyCode.Core.Consts;
using AyCode.Core.Helpers;
using AyCode.Database.DbSets.Users;
using AyCode.Interfaces.Addresses;
+using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
namespace AyCode.Database.DataLayers.Users
{
- public abstract class AcUserDalBase : AcDalBase
- where TDbContext : AcDbContextBase, IAcUserDbContextBase
+ public abstract class AcUserDalBase : AcDalBase
+ where TDbContext : AcDbContextBase, IAcUserDbContextBase
where TUser : class, IAcUser
where TProfile : class, IAcProfile
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
+ where TEmailMessage : class, IAcEmailMessageBase
{
public TUser? GetUserById(Guid userId, bool onlyConfirmed) => Session(x => x.GetUserById(userId, onlyConfirmed));
public Task GetUserByIdAsync(Guid userId, bool onlyConfirmed) => SessionAsync(x => x.GetUserById(userId, onlyConfirmed));
diff --git a/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs b/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs
index 74ad693..a2aab1d 100644
--- a/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs
+++ b/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs
@@ -1,4 +1,5 @@
using AyCode.Interfaces.Addresses;
+using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;
@@ -6,18 +7,20 @@ using Microsoft.EntityFrameworkCore;
namespace AyCode.Database.DbContexts.Users
{
- public abstract class AcUserDbContextBase : AcDbContextBase, IAcUserDbContextBase
+ public abstract class AcUserDbContextBase : AcDbContextBase, IAcUserDbContextBase
where TUser : class, IAcUser
where TProfile : class, IAcProfile
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
+ where TEmailMessage : class, IAcEmailMessageBase
{
public required DbSet Users { get; set; }
public required DbSet UserTokens { get; set; }
public DbSet Addresses { get; set; }
public DbSet Profiles { get; set; }
+ public DbSet EmailMessages { get; set; }
protected AcUserDbContextBase() : this(string.Empty)
diff --git a/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs b/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs
index a4947f7..d9e0a4c 100644
--- a/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs
+++ b/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs
@@ -1,15 +1,19 @@
using AyCode.Database.DbSets.Addresses;
+using AyCode.Database.DbSets.Messages;
using AyCode.Database.DbSets.Profiles;
using AyCode.Database.DbSets.Users;
using AyCode.Interfaces.Addresses;
+using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;
namespace AyCode.Database.DbContexts.Users;
-public interface IAcUserDbContextBase
- : IAcUserDbSet, IAcUserTokenDbSet, IAcAddressDbSetBase, IAcProfileDbSetBase
+public interface IAcUserDbContextBase
+ : IAcUserDbSet, IAcUserTokenDbSet,
+ IAcAddressDbSetBase, IAcProfileDbSetBase,
+ IAcEmailMessageDbSet
where TUser : class, IAcUser
where TProfile : class, IAcProfile
@@ -17,5 +21,6 @@ public interface IAcUserDbContextBase : AcDatabaseTestModelBase
- where TDal : AcUserDalBase
- where TDbContext : AcDbContextBase, IAcUserDbContextBase
+ public abstract class AcLoginServiceServerTestBase : AcDatabaseTestModelBase
+ where TDal : AcUserDalBase
+ where TDbContext : AcDbContextBase, IAcUserDbContextBase
where TLoginServiceServer : class, IAcLoginServiceServer
where TResultLoggedInModel: class, IAcLoggedInModelBase
where TUser : class, IAcUser
@@ -21,6 +22,7 @@ namespace AyCode.Services.Server.Tests.LoginServices
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
+ where TEmailMessage : class, IAcEmailMessageBase
{
public TUser RegisterUserTest()
{
diff --git a/AyCode.Services.Server/Logins/AcLoginServiceServer.cs b/AyCode.Services.Server/Logins/AcLoginServiceServer.cs
index 56e68d1..8dd69ce 100644
--- a/AyCode.Services.Server/Logins/AcLoginServiceServer.cs
+++ b/AyCode.Services.Server/Logins/AcLoginServiceServer.cs
@@ -20,24 +20,26 @@ using AyCode.Core.Consts;
using AyCode.Core.Extensions;
using AyCode.Database.DataLayers.Users;
using AyCode.Database.DbContexts.Users;
+using AyCode.Interfaces.Messages;
using AyCode.Models.Server.Logins;
using AyCode.Utils.Extensions;
using Microsoft.Extensions.Configuration;
namespace AyCode.Services.Server.Logins;
-public class AcLoginServiceServer(TDal userDal, IConfiguration configuration)
+public class AcLoginServiceServer(TDal userDal, IConfiguration configuration)
: AcLoginServiceBase, IAcLoginServiceServer
where TResultLoggedInModel : class, IAcLoggedInModelBase
- where TDal : AcUserDalBase
- where TDbContext : AcDbContextBase, IAcUserDbContextBase
+ where TDal : AcUserDalBase
+ where TDbContext : AcDbContextBase, IAcUserDbContextBase
where TUser : class, IAcUser
where TUserToken : class, IAcUserTokenBase
where TProfile : class, IAcProfile
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
+ where TEmailMessage : class, IAcEmailMessageBase
{
public TResultLoggedInModel? LoggedInModel { get; private set; }
public override TUser? LoggedInUser => LoggedInModel?.LoggedInUser;