Skip to content

Commit

Permalink
fix(Eav-Eavtest):fix confilict
Browse files Browse the repository at this point in the history
  • Loading branch information
AmirRezaZahedi committed Sep 8, 2024
2 parents ba47f8e + 430ce9e commit 980a8f4
Show file tree
Hide file tree
Showing 23 changed files with 272 additions and 103 deletions.
23 changes: 7 additions & 16 deletions AnalysisData/AnalysisData.sln.DotSettings.user
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<TestId>xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Repository.RoleRepository.RoleRepositoryTests</TestId>
</TestAncestor>
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=05ea6785_002De554_002D4faa_002D9aaf_002Df0260f682fe9/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="ProcessEdgesAsync_ShouldProcessAndInsertEdgesInBatches" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=05ea6785_002De554_002D4faa_002D9aaf_002Df0260f682fe9/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="ProcessEdgesAsync_ShouldProcessAndInsertEdgesInBatches" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Project Location="C:\Users\amir\Desktop\New folder (4)\Summer1403-Project-Group03-Backend\AnalysisData\TestProject" Presentation="&amp;lt;TestProject&amp;gt;" /&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=1e8f93b2_002D4572_002D4c58_002Db711_002Dacb713304847/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="GetRole_ShouldReturnsRole_WhenRoleExists #3" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
Expand Down Expand Up @@ -134,30 +134,21 @@
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.mahdiTest2.FilePermissionService.FilePermissionServiceTest.AccessFileToUserAsync_ShouldAccessFilesToInputUsers_WhenFileAndUserExist&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=b0604876_002D933e_002D4cd9_002Da223_002D0b10f27f95db/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="UploadFileServiceTests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Graph.Service.FileUploadServiceTests.UploadFileServiceTests&lt;/TestId&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Services.GraphService.GraphServices.AllNodesData.NodePaginationServiceTests&lt;/TestId&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Services.GraphService.GraphServices.NodeAndEdgeInfo.NodeAndEdgeInfoTests&lt;/TestId&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Services.GraphService.GraphServices.Relationship.GraphRelationServiceTests&lt;/TestId&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Services.GraphService.GraphServices.Search.GraphSearchServiceTests&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=c8b452a4_002D3e52_002D45a2_002D959c_002Dbbbf101ed826/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="All tests from &amp;lt;TestProject&amp;gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Project Location="C:\Users\Mahdi\Desktop\New folder (2)\Summer1403-Project-Group03-Backend\AnalysisData\TestProject" Presentation="&amp;lt;TestProject&amp;gt;" /&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=ce35ecc6_002D100e_002D4f4e_002Daba0_002D7678c76dbbbe/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="DeleteRole_ShouldRemovesRoleAndReturnsTrue_WhenRoleExists" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Project Location="C:\Users\Mahdi\Desktop\New folder (2)\Summer1403-Project-Group03-Backend\AnalysisData\TestProject" Presentation="&amp;lt;TestProject&amp;gt;" /&gt;&#xD;
&lt;Project Location="C:\Users\Mahdi\Desktop\code star\Summer1403-Project-Group03-Backend\AnalysisData\TestProject" Presentation="&amp;lt;TestProject&amp;gt;" /&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=fe4fe44b_002D7953_002D4423_002Dac04_002Da7f1b464e5c0/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="ResetPasswordAsync_ShouldCallPasswordCheck_WhenCalled" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Project Location="C:\Users\amir\Desktop\New folder (4)\Summer1403-Project-Group03-Backend\AnalysisData\TestProject" Presentation="&amp;lt;TestProject&amp;gt;" /&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=fede6fb9_002D1640_002D4a1e_002Dbf28_002Dfb010709fe4c/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="UploadFileServiceTests #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=fa5fad3e_002D5849_002D4974_002D8485_002D12112a7dfc01/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="SearchInEntityNodeNameAsync_ShouldThrowNodeNotFoundException_WhenNoNodesExistForUser" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Graph.Service.FileUploadServiceTests.UploadFileServiceTests&lt;/TestId&gt;&#xD;
&lt;TestId&gt;xUnit::9AEC1F3F-B1B3-47C1-82D4-E432E2D77E0E::net8.0::TestProject.Services.GraphService.GraphServices.Search.GraphSearchServiceTests.SearchInEntityNodeNameAsync_ShouldThrowNodeNotFoundException_WhenNoNodesExistForUser&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=fe4fe44b_002D7953_002D4423_002Dac04_002Da7f1b464e5c0/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="ResetPasswordAsync_ShouldCallPasswordCheck_WhenCalled" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;Project Location="C:\Users\Mahdi\Desktop\code star\Summer1403-Project-Group03-Backend\AnalysisData\TestProject" Presentation="&amp;lt;TestProject&amp;gt;" /&gt;&#xD;
&lt;/SessionState&gt;</s:String>

<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=AnalysisData_002FResources/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ public async Task<IActionResult> GetRelationalEdgeByNodeId([FromQuery] Guid node

[Authorize(Policy = "bronze")]
[HttpGet("Search")]
public async Task<IActionResult> SearchEntityNode([FromQuery] string searchInput, string searchType = "contain")
public async Task<IActionResult> SearchEntityNode([FromQuery] string searchInput, string searchType = "contain",[FromQuery] int pageIndex = 0, [FromQuery] int pageSize = 10)
{
var user = User;
var result = await _graphSearchService.SearchInEntityNodeNameAsync(user, searchInput, searchType);
var result = await _graphSearchService.SearchInEntityNodeNameAsync(user, searchInput, searchType,pageIndex,pageSize);
return Ok(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
namespace AnalysisData.Controllers.UserController;

[ApiController]
//[Authorize(Roles = "admin")]
[Route("api/[controller]")]
public class AdminController : ControllerBase
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,22 +46,18 @@ public async Task<IActionResult> GetPermissions()
return Ok(new { image, firstName, lastName, permission });
}

[Authorize(Policy = "bronze")]
[HttpPost("reset-password")]
public async Task<IActionResult> ResetPassword([FromBody] ResetPasswordDto resetPasswordDto)
{
var userClaim = User;
await _userService.ResetPasswordAsync(userClaim, resetPasswordDto.NewPassword,
await _userService.ResetPasswordAsync(resetPasswordDto.Email, resetPasswordDto.NewPassword,
resetPasswordDto.ConfirmPassword, resetPasswordDto.ResetPasswordToken);
return Ok(new { massage = "success" });
}

[Authorize(Policy = "bronze")]
[HttpPost("request-reset-password")]
public async Task<IActionResult> RequestResetPassword()
public async Task<IActionResult> RequestResetPassword(EmailForResetPasswordDto resetPassword)
{
var userClaim = User;
await _resetPasswordRequestService.SendRequestToResetPassword(userClaim);
await _resetPasswordRequestService.SendRequestToResetPassword(resetPassword.Email);
return Ok(new { massage = "success" });
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using AnalysisData.Models.GraphModel.Node;

namespace AnalysisData.Dtos.GraphDto.NodeDto;

public class PaginationSearchDto
{
public List<PaginationNodeDto> Items { get; set; }
public int PageIndex { get; set; }
public int TotalItems { get; set; }

public PaginationSearchDto(List<PaginationNodeDto> items, int pageIndex, int totalItems)
{
Items = items;
PageIndex = pageIndex;
TotalItems = totalItems;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace AnalysisData.Dtos.UserDto.PasswordDto;

public class EmailForResetPasswordDto
{
public string Email { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ namespace AnalysisData.Dtos.UserDto.PasswordDto;

public class ResetPasswordDto
{
public string Email { get; set; }
public string ResetPasswordToken { get; set; }
public string NewPassword { get; set; }
public string ConfirmPassword { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ namespace AnalysisData.Services.EmailService.Abstraction;

public interface IEmailService
{
Task SendPasswordResetEmail(string toEmail, string resetLink);
Task SendPasswordResetEmail(string toEmail, string resetLink, string token);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@ public EmailService(IConfiguration configuration)
_fromEmail = configuration["EmailSettings:FromEmail"];
}

public async Task SendPasswordResetEmail(string toEmail, string resetLink)
public async Task SendPasswordResetEmail(string toEmail, string resetLink, string token)
{

string htmlTemplatePath = @"Assets\email-template.html";
string htmlContent = File.ReadAllText(htmlTemplatePath);
htmlContent = htmlContent.Replace("{resetLink}", resetLink);
string linkWithToken = $"{resetLink}&token={token}$email={toEmail}";
htmlContent = htmlContent.Replace("{resetLink}", linkWithToken);

var mailMessage = new MailMessage
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using System.Security.Claims;
using AnalysisData.Dtos.GraphDto.NodeDto;
using AnalysisData.Models.GraphModel.Node;

namespace AnalysisData.Services.GraphService.GraphServices.Search.Abstraction;

public interface IGraphSearchService
{
Task<IEnumerable<EntityNode>> SearchInEntityNodeNameAsync(ClaimsPrincipal claimsPrincipal, string inputSearch,
string type);
Task<PaginationSearchDto> SearchInEntityNodeNameAsync(ClaimsPrincipal claimsPrincipal, string inputSearch,
string type,int pageIndex, int pageSize );
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Security.Claims;
using AnalysisData.Dtos.GraphDto.NodeDto;
using AnalysisData.Exception.GraphException.NodeException;
using AnalysisData.Models.GraphModel.Node;
using AnalysisData.Repositories.GraphRepositories.GraphRepository.GraphNodeRepository.Abstraction;
Expand All @@ -15,8 +16,8 @@ public GraphSearchService(IGraphNodeRepository graphNodeRepository)
_graphNodeRepository = graphNodeRepository;
}

public async Task<IEnumerable<EntityNode>> SearchInEntityNodeNameAsync(ClaimsPrincipal claimsPrincipal,
string inputSearch, string type)
public async Task<PaginationSearchDto> SearchInEntityNodeNameAsync(ClaimsPrincipal claimsPrincipal,
string inputSearch, string type,int pageIndex , int pageSize)
{
var role = claimsPrincipal.FindFirstValue(ClaimTypes.Role);
var username = claimsPrincipal.FindFirstValue("id");
Expand All @@ -34,8 +35,19 @@ public async Task<IEnumerable<EntityNode>> SearchInEntityNodeNameAsync(ClaimsPri
{
throw new NodeNotFoundException();
}
var groupedNodes = entityNodes.Select(g => new PaginationNodeDto
{
Id = g.Id,
EntityName = g.Name,
})
.ToList();

return entityNodes;
var count = groupedNodes.Count;
var items = groupedNodes
.Skip(pageIndex * pageSize)
.Take(pageSize)
.ToList();
return new PaginationSearchDto(items,pageIndex,count);
}

private async Task<IEnumerable<EntityNode>> SearchEntityInNodeNameForAdminAsync(string inputSearch, string type)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ public interface IJwtService
{
Task<string> GenerateJwtToken(string userName);
Task UpdateUserCookie(string userName, bool rememberMe);
Task RequestResetPassword(User user);
Task<string> RequestResetPassword(User user);
}
4 changes: 2 additions & 2 deletions AnalysisData/AnalysisData/Services/JwtService/JwtService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public async Task<string> GenerateJwtToken(string userName)
}


public async Task RequestResetPassword(User user)
public async Task<string> RequestResetPassword(User user)
{
var token = Guid.NewGuid().ToString();
var expiration = DateTime.UtcNow.AddMinutes(15);
Expand All @@ -66,7 +66,7 @@ public async Task RequestResetPassword(User user)
};

await _resetTokensRepository.AddToken(resetToken);

return token;
}

public async Task UpdateUserCookie(string userName, bool rememberMe)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,30 @@ public S3FileStorageService(IConfiguration configuration)
var awsCredentials = new Amazon.Runtime.BasicAWSCredentials(configuration["AWS:AccessKey"], configuration["AWS:SecretKey"]);
var config = new AmazonS3Config
{
ServiceURL = configuration["AWS:ServiceURL"]
ServiceURL = configuration["AWS:ServiceURL"],
ForcePathStyle = true
};
_s3Client = new AmazonS3Client(awsCredentials, config);
_bucketName = configuration["AWS:BucketName"];
}

public async Task<string> UploadFileAsync(IFormFile file, string folderName)
{
var fileKey = Path.Combine(folderName, file.FileName).Replace("\\", "/");
var fileKey = Path.Combine(folderName, Guid.NewGuid().ToString()).Replace("\\", "/");

var putRequest = new PutObjectRequest
{
BucketName = _bucketName,
Key = fileKey,
InputStream = file.OpenReadStream(),
ContentType = file.ContentType
ContentType = file.ContentType,
CannedACL = S3CannedACL.PublicRead
};

var response = await _s3Client.PutObjectAsync(putRequest);
if (response.HttpStatusCode == System.Net.HttpStatusCode.OK)
{
var fileUrl = $"https://{_bucketName}.s3.{RegionEndpoint.USEast1.SystemName}.amazonaws.com/{fileKey}";
var fileUrl = $"https://{_bucketName}.s3.ir-thr-at1.arvanstorage.ir/{fileKey}";
return fileUrl;
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,12 @@ private async Task SetUpdatedInformation(User user, UpdateAdminDto updateAdminDt
user.Email = updateAdminDto.Email;
user.PhoneNumber = updateAdminDto.PhoneNumber;
user.Username = updateAdminDto.UserName;
user.Role.RoleName = updateAdminDto.RoleName;
var role = await _roleRepository.GetRoleByNameAsync(updateAdminDto.RoleName);
if (role is null)
{
throw new RoleNotFoundException();
}
user.Role = role;
await _userRepository.UpdateUserAsync(user.Id, user);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ namespace AnalysisData.Services.UserService.UserService.Abstraction;

public interface IResetPasswordRequestService
{
Task SendRequestToResetPassword(ClaimsPrincipal userClaim);
Task SendRequestToResetPassword(string email);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public interface IUserService
{
Task<User> LoginAsync(UserLoginDto userLoginDto);
Task<User> GetUserAsync(ClaimsPrincipal userClaim);
Task ResetPasswordAsync(ClaimsPrincipal userClaim, string password, string confirmPassword , string resetPasswordToken);
Task ResetPasswordAsync(string email, string password, string confirmPassword , string resetPasswordToken);
Task UpdateUserInformationAsync(ClaimsPrincipal userClaim, UpdateUserDto updateUserDto);
Task NewPasswordAsync(ClaimsPrincipal userClaim, string oldPassword, string password, string confirmPassword);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ public interface IUserManager
{
Task<User> GetUserFromUserClaimsAsync(ClaimsPrincipal userClaim);
Task UpdateUserInformationAsync(User user, UpdateUserDto updateUserDto);
Task<User> GetUserFromEmail(string email);
Task UploadImageAsync(User user, string imageUrl);
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ public async Task UploadImageAsync(User user, string imageUrl)
user.ImageURL = imageUrl;
await _userRepository.UpdateUserAsync(user.Id, user);
}

public async Task<User> GetUserFromEmail(string email)
{
return await _userRepository.GetUserByEmailAsync(email);
}

private async Task ValidateEmailAsync(User user, string newEmail)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using AnalysisData.Services.EmailService.Abstraction;
using AnalysisData.Services.JwtService.Abstraction;
using AnalysisData.Services.UserService.UserService.Abstraction;
using AnalysisData.Services.ValidationService.Abstraction;

namespace AnalysisData.Services.UserService.UserService;

Expand All @@ -12,24 +13,28 @@ public class ResetPasswordRequestService : IResetPasswordRequestService
private readonly IJwtService _jwtService;
private readonly IUserRepository _userRepository;
private readonly IEmailService _emailService;
private readonly IValidationService _validationService;

public ResetPasswordRequestService(IJwtService jwtService, IUserRepository userRepository, IEmailService emailService)
public ResetPasswordRequestService(IJwtService jwtService, IUserRepository userRepository,
IEmailService emailService, IValidationService validationService)
{
_jwtService = jwtService;
_userRepository = userRepository;
_emailService = emailService;
_validationService = validationService;
}


public async Task SendRequestToResetPassword(ClaimsPrincipal userClaim)
public async Task SendRequestToResetPassword(string email)
{
var userName = userClaim.FindFirstValue("username");
var user = await _userRepository.GetUserByUsernameAsync(userName);
_validationService.EmailCheck(email);
var user = await _userRepository.GetUserByEmailAsync(email);
if (user is null)
{
throw new UserNotFoundException();
}
await _jwtService.RequestResetPassword(user);
await _emailService.SendPasswordResetEmail(user.Email, "www.digikala.com");

var token = await _jwtService.RequestResetPassword(user);
await _emailService.SendPasswordResetEmail(user.Email, "www.digikala.com",token);
}
}
Loading

0 comments on commit 980a8f4

Please sign in to comment.