Added skorubauserservice tests
This commit is contained in:
@@ -1,22 +1,11 @@
|
||||
using PostFundManagement.Application.Extensions;
|
||||
using PostFundManagement.Domain.Abstractions;
|
||||
using PostFundManagement.Domain.Models.Security;
|
||||
using PostFundManagement.Infrastructure.Database.Services;
|
||||
using static PostFundManagement.Domain.Extensions.Constants;
|
||||
|
||||
namespace PostFundManagement.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// Integration tests for SkorubaUserService.GetUserRolesAsync method.
|
||||
///
|
||||
/// These tests hit the actual Skoruba API environment.
|
||||
/// Requires the following configuration:
|
||||
/// - MachineIdentitySettings with valid ClientId and ClientSecret from user secrets
|
||||
/// - SkorubaApi connection string pointing to the API endpoint
|
||||
/// - Network access to the Skoruba API
|
||||
///
|
||||
/// To run these tests:
|
||||
/// dotnet test --filter "FullyQualifiedName~SkorubaUserServiceGetUserRolesIntegrationTests"
|
||||
/// </summary>
|
||||
public class SkorubaUserServiceGetUserRolesIntegrationTests
|
||||
{
|
||||
private readonly ISkorubaUserService _skorubaService;
|
||||
@@ -51,9 +40,6 @@ public class SkorubaUserServiceGetUserRolesIntegrationTests
|
||||
_httpClientFactory = serviceProvider.GetRequiredService<IHttpClientFactory>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Integration test: Verify HttpClient is properly configured with SkorubaHttpClient name.
|
||||
/// </summary>
|
||||
[DebugOnlyFact]
|
||||
public void HttpClientFactory_HasSkorubaHttpClientConfigured()
|
||||
{
|
||||
@@ -65,15 +51,72 @@ public class SkorubaUserServiceGetUserRolesIntegrationTests
|
||||
Assert.NotNull(httpClient.BaseAddress);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Integration test: Verify that the service properly formats API requests.
|
||||
/// Uses a fake/invalid user ID to test the HTTP request flow.
|
||||
/// </summary>
|
||||
[DebugOnlyFact]
|
||||
public async Task CreateUserAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var newUser = new CreateUserRequest
|
||||
{
|
||||
UserName = "testuser",
|
||||
Email = "testuser@example.com",
|
||||
EmailConfirmed = true,
|
||||
};
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.CreateUserAsync(newUser);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task DeleteUserAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("3b001832-c78d-4705-9bc2-0f2f2ebb35b7");
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.RemoveUserAsync(userId);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task LockoutUserAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.SetUserLockoutAsync(userId, true);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task UnlockUserAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.SetUserLockoutAsync(userId, false);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task GetUserRolesAsync_SendsProperlyFormattedRequest()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("6059f1e4-6a41-4447-a546-86ece5102004");
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
var page = 1;
|
||||
var pageSize = 25;
|
||||
|
||||
@@ -85,9 +128,88 @@ public class SkorubaUserServiceGetUserRolesIntegrationTests
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Integration test: Verify cancellation token is respected.
|
||||
/// </summary>
|
||||
[DebugOnlyFact]
|
||||
public async Task AddUserRoleAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
var roleId = Guid.Parse("34b03edc-cda4-4380-b7a5-3310933b75ab"); // Contributor role ID
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.AddRoleAsync(userId, roleId);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task RemoveUserRoleAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
var roleId = Guid.Parse("34b03edc-cda4-4380-b7a5-3310933b75ab"); // Contributor role ID
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.RemoveRoleAsync(userId, roleId);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task GetUserClaimAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
var page = 1;
|
||||
var pageSize = 25;
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.GetUserClaimsAsync(userId, page, pageSize);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task AddUserClaimAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
var claimType = "test-claim";
|
||||
var claimValue = "test-value";
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.AddClaimAsync(userId, claimType, claimValue);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task RemoveUserClaimAsync_MustSucced_WithErrorMessage()
|
||||
{
|
||||
// Arrange
|
||||
var userId = Guid.Parse("285df6e4-c0f9-4c7c-8da7-b3867ffe1880");
|
||||
var claimType = "test-claim";
|
||||
|
||||
var userClaimsResult = await _skorubaService.GetUserClaimsAsync(userId);
|
||||
var matchingClaim = userClaimsResult.Value?.FirstOrDefault(c => c.ClaimType == claimType);
|
||||
|
||||
Assert.NotNull(matchingClaim);
|
||||
|
||||
// Act
|
||||
var result = await _skorubaService.RemoveClaimAsync(userId, matchingClaim!.ClaimId!.Value);
|
||||
|
||||
// Assert
|
||||
Assert.True(result.IsSuccess, result.Errors.FirstOrDefault()?.Message);
|
||||
Assert.Empty(result.Errors);
|
||||
}
|
||||
|
||||
[DebugOnlyFact]
|
||||
public async Task GetUserRolesAsync_RespectsCancellationToken()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user