Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions TickAPI/TickAPI.Tests/Common/Claims/Services/ClaimsServiceTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System.Security.Claims;
using Microsoft.AspNetCore.Http;
using TickAPI.Common.Claims.Abstractions;
using TickAPI.Common.Claims.Services;

namespace TickAPI.Tests.Common.Claims.Services;

public class ClaimsServiceTests
{
private readonly IClaimsService _claimsService;

public ClaimsServiceTests()
{
_claimsService = new ClaimsService();
}

[Fact]
public void GetEmailFromClaims_WhenEmailInClaims_ShouldReturnEmail()
{
// Arrange
var email = "test@gmail.com";
var claims = new List<Claim>
{
new Claim(ClaimTypes.Email, email)
};

// Act
var result = _claimsService.GetEmailFromClaims(claims);

// Assert
Assert.True(result.IsSuccess);
Assert.Equal(email, result.Value!);
}

[Fact]
public void GetEmailFromClaims_WhenEmailNotInClaims_ShouldReturnFailure()
{
// Arrange
var claims = new List<Claim>();

// Act
var result = _claimsService.GetEmailFromClaims(claims);

// Assert
Assert.True(result.IsError);
Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
Assert.Equal("missing email claim", result.ErrorMsg);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using TickAPI.Common.Auth.Abstractions;
using TickAPI.Common.Auth.Enums;
using TickAPI.Common.Auth.Responses;
using TickAPI.Common.Claims.Abstractions;
using TickAPI.Common.Results.Generic;
using TickAPI.Customers.Abstractions;
using TickAPI.Customers.Controllers;
Expand Down Expand Up @@ -34,11 +35,14 @@ public async Task GoogleLogin_WhenAuthSuccessAndCustomerExists_ShouldReturnToken
var jwtServiceMock = new Mock<IJwtService>();
jwtServiceMock.Setup(m => m.GenerateJwtToken(email, UserRole.Customer))
.Returns(Result<string>.Success(jwtToken));

var claimsServiceMock = new Mock<IClaimsService>();

var sut = new CustomerController(
googleAuthServiceMock.Object,
jwtServiceMock.Object,
customerServiceMock.Object);
customerServiceMock.Object,
claimsServiceMock.Object);

// Act
var actionResult = await sut.GoogleLogin(new GoogleCustomerLoginDto(accessToken));
Expand Down Expand Up @@ -77,10 +81,13 @@ public async Task GoogleLogin_WhenAuthSuccessAndCustomerDoesNotExist_ShouldCreat
jwtServiceMock.Setup(m => m.GenerateJwtToken(email, UserRole.Customer))
.Returns(Result<string>.Success(jwtToken));

var claimsServiceMock = new Mock<IClaimsService>();

var sut = new CustomerController(
googleAuthServiceMock.Object,
jwtServiceMock.Object,
customerServiceMock.Object);
customerServiceMock.Object,
claimsServiceMock.Object);

// Act
var result = await sut.GoogleLogin(new GoogleCustomerLoginDto( accessToken ));
Expand Down Expand Up @@ -113,26 +120,32 @@ public async Task AboutMe_WithValidEmailClaim_ShouldReturnCustomerDetails()
var googleAuthServiceMock = new Mock<IGoogleAuthService>();
var jwtServiceMock = new Mock<IJwtService>();

var sut = new CustomerController(
googleAuthServiceMock.Object,
jwtServiceMock.Object,
customerServiceMock.Object);

var claims = new List<Claim>
{
new Claim(ClaimTypes.Email, email)
};
var identity = new ClaimsIdentity(claims);
var claimsPrincipal = new ClaimsPrincipal(identity);

sut.ControllerContext = new ControllerContext
var controllerContext = new ControllerContext
{
HttpContext = new DefaultHttpContext
{
User = claimsPrincipal
}
};

var claimsServiceMock = new Mock<IClaimsService>();
claimsServiceMock.Setup(m => m.GetEmailFromClaims(controllerContext.HttpContext.User.Claims)).Returns(Result<string>.Success(email));

var sut = new CustomerController(
googleAuthServiceMock.Object,
jwtServiceMock.Object,
customerServiceMock.Object,
claimsServiceMock.Object);


sut.ControllerContext = controllerContext;

// Act
var result = await sut.AboutMe();

Expand All @@ -151,10 +164,15 @@ public async Task AboutMe_WithMissingEmailClaim_ShouldReturnBadRequest()
var googleAuthServiceMock = new Mock<IGoogleAuthService>();
var jwtServiceMock = new Mock<IJwtService>();

var claimsServiceMock = new Mock<IClaimsService>();
claimsServiceMock.Setup(m => m.GetEmailFromClaims(It.IsAny<IEnumerable<Claim>>())).Returns(Result<string>.Failure(StatusCodes.Status400BadRequest, "missing email claim"));


var sut = new CustomerController(
googleAuthServiceMock.Object,
jwtServiceMock.Object,
customerServiceMock.Object);
customerServiceMock.Object,
claimsServiceMock.Object);

var claims = new List<Claim>();
var identity = new ClaimsIdentity(claims);
Expand Down
25 changes: 12 additions & 13 deletions TickAPI/TickAPI.Tests/Events/Controllers/EventControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TickAPI.Addresses.DTOs.Request;
using TickAPI.Common.Claims.Abstractions;
using TickAPI.Events.Controllers;
using TickAPI.Events.Abstractions;
using TickAPI.Common.Results;
using TickAPI.Common.Results.Generic;
using TickAPI.Organizers.Models;
using TickAPI.Events.DTOs.Response;

namespace TickAPI.Tests.Events.Controllers;
Expand All @@ -19,9 +18,7 @@ public class EventControllerTests
[Fact]
public async Task CreateEvent_WhenDataIsValid_ShouldReturnSuccess()
{

//arrange

string name = "Concert";
string description = "Description of a concert";
DateTime startDate = new DateTime(2025, 5, 1);
Expand All @@ -38,37 +35,38 @@ public async Task CreateEvent_WhenDataIsValid_ShouldReturnSuccess()
.Setup(m => m.CreateNewEventAsync(name, description, startDate, endDate, minimumAge, createAddress, eventStatus, email))
.ReturnsAsync(Result<Event>.Success(new Event()));

var sut = new EventController(eventServiceMock.Object);

var claims = new List<Claim>
{
new Claim(ClaimTypes.Email, email)
};
sut.ControllerContext = new ControllerContext
var controllerContext = new ControllerContext
{
HttpContext = new DefaultHttpContext
{
User = new ClaimsPrincipal(new ClaimsIdentity(claims))
}
};

var claimsServiceMock = new Mock<IClaimsService>();
claimsServiceMock.Setup(m => m.GetEmailFromClaims(controllerContext.HttpContext.User.Claims)).Returns(Result<string>.Success(email));

var sut = new EventController(eventServiceMock.Object, claimsServiceMock.Object);

sut.ControllerContext = controllerContext;

// act
var res = await sut.CreateEvent(eventDto);

// assert


var result = Assert.IsType<ActionResult<CreateEventResponseDto>>(res);
var objectResult = Assert.IsType<OkObjectResult>(result.Result);
Assert.Equal(200, objectResult.StatusCode);
Assert.Equal("Event created succesfully", objectResult.Value);

}

[Fact]
public async Task CreateEvent_WhenMissingEmailClaims_ShouldReturnBadRequest()
{

//arrange
string name = "Concert";
string description = "Description of a concert";
Expand All @@ -80,8 +78,10 @@ public async Task CreateEvent_WhenMissingEmailClaims_ShouldReturnBadRequest()
CreateAddressDto createAddress = new CreateAddressDto("United States", "New York", "Main st", 20, null, "00-000");

var eventServiceMock = new Mock<IEventService>();
var claimsServiceMock = new Mock<IClaimsService>();
claimsServiceMock.Setup(m => m.GetEmailFromClaims(It.IsAny<IEnumerable<Claim>>())).Returns(Result<string>.Failure(StatusCodes.Status400BadRequest, "missing email claim"));

var sut = new EventController(eventServiceMock.Object);
var sut = new EventController(eventServiceMock.Object, claimsServiceMock.Object);

sut.ControllerContext = new ControllerContext
{
Expand All @@ -95,7 +95,6 @@ public async Task CreateEvent_WhenMissingEmailClaims_ShouldReturnBadRequest()
var res = await sut.CreateEvent(new CreateEventDto(name, description, startDate, endDate, minimumAge, eventStatus, createAddress));

// assert

var result = Assert.IsType<ActionResult<CreateEventResponseDto>>(res);
var objectResult = Assert.IsType<ObjectResult>(result.Result);
Assert.Equal(StatusCodes.Status400BadRequest, objectResult.StatusCode);
Expand Down
Loading
Loading