Skip to content

Commit

Permalink
fix some auth service tests
Browse files Browse the repository at this point in the history
  • Loading branch information
emrecoskun705 committed Sep 15, 2023
1 parent 4a65e0f commit c314a0c
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 5 deletions.
62 changes: 59 additions & 3 deletions Unitagram.Identity.UnitTests/AuthServiceUnitTests.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
using System.Globalization;
using System.Security.Claims;
using AutoFixture;
using AutoFixture.Kernel;
using FluentAssertions;
using LanguageExt;
using LanguageExt.Common;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
Expand All @@ -17,6 +22,7 @@
using Unitagram.Application.Models.Identity.Authentication;
using Unitagram.Application.Models.Identity.Jwt;
using Unitagram.Application.Models.Identity.Register;
using Unitagram.Domain;
using Unitagram.Identity.DbContext;
using Unitagram.Identity.Models;
using Unitagram.Identity.Services;
Expand Down Expand Up @@ -207,20 +213,53 @@ public async Task Register_ValidCredentials_ReturnsRegisterResponse()
};

// Set up mock behavior
var successIdentityResult = IdentityResult.Success;

_universityRepositoryMock
.Setup(u => u.GetByDomainAsync(It.IsAny<string>()))
.ReturnsAsync(_fixture.Build<University>().Create());

var databaseMock = new Mock<DatabaseFacade>(_dbContext.Object);
var transactionMock = new Mock<IDbContextTransaction>();

_fixture.Inject(_dbContext.Object);
_dbContext.SetupGet((c => c.Database)).Returns(databaseMock.Object);

databaseMock
.Setup(d => d.BeginTransactionAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(transactionMock.Object);

transactionMock.Setup(t => t.CommitAsync(It.IsAny<CancellationToken>())).Returns(Task.CompletedTask);
transactionMock.Setup(t => t.DisposeAsync()).Returns(ValueTask.CompletedTask);

_userManager
.Setup(u => u.CreateAsync(It.IsAny<ApplicationUser>(), validRegisterRequest.Password))
.ReturnsAsync(successIdentityResult);
.ReturnsAsync(IdentityResult.Success);

_userManager
.Setup(u => u.UpdateAsync(It.IsAny<ApplicationUser>()));

_roleManager
.Setup(u => u.RoleExistsAsync(It.IsAny<string>()))
.ReturnsAsync(true);

_userManager
.Setup(u => u.AddToRoleAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>()))
.ReturnsAsync(IdentityResult.Success);

_universityUserRepositoryMock
.Setup(u => u.CreateAsync(It.IsAny<UniversityUser>()))
.Returns(Task.CompletedTask);

_jwtService
.Setup(u => u.CreateJwtToken(It.IsAny<JwtRequest>()));

// just return some JWT response values for test to work
_jwtService.Setup(x => x.CreateJwtToken(It.IsAny<JwtRequest>()))
.Returns(_fixture.Build<JwtResponse>().Create());

_verificationServiceMock
.Setup(u => u.GenerateAsync(It.IsAny<Guid>()))
.ReturnsAsync(Result<Unit>.Bottom);


// Act
Expand Down Expand Up @@ -280,12 +319,29 @@ public async Task Register_UserManagerCreateFail_ReturnsBadRequestException()
.Setup(u => u.CreateAsync(It.IsAny<ApplicationUser>(), validRegisterRequest.Password))
.ReturnsAsync(failedIdentityResult);

_universityRepositoryMock
.Setup(u => u.GetByDomainAsync(It.IsAny<string>()))
.ReturnsAsync(_fixture.Build<University>().Create());

var databaseMock = new Mock<DatabaseFacade>(_dbContext.Object);
var transactionMock = new Mock<IDbContextTransaction>();

_fixture.Inject(_dbContext.Object);
_dbContext.SetupGet((c => c.Database)).Returns(databaseMock.Object);

databaseMock.Setup(d => d.BeginTransactionAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(transactionMock.Object);

_dbContext
.Setup(u => u.Database.BeginTransactionAsync(default(CancellationToken)))
.ReturnsAsync(It.IsAny<IDbContextTransaction>());

// Act
var result = await authService.Register(validRegisterRequest);

// Assert
result.IsFaulted.Should().BeTrue();
result.IfFail(e => e.Should().BeOfType<BadRequestException>());
result.IfFail(e => e.Should().BeOfType<ValidationException>());
}

#endregion
Expand Down
2 changes: 0 additions & 2 deletions Unitagram.Identity/Services/AuthService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,6 @@ public async Task<Result<RegisterResponse>> Register(RegisterRequest request)
return new Result<RegisterResponse>(exception);
}



try
{
// Add the user to the "UniversityUser" role
Expand Down

0 comments on commit c314a0c

Please sign in to comment.