foreign/csharp/Iggy_SDK_Tests/E2ETests/UsersE2E.cs (121 lines of code) (raw):
using FluentAssertions;
using Iggy_SDK;
using Iggy_SDK_Tests.E2ETests.Fixtures.Bootstraps;
using Iggy_SDK_Tests.E2ETests.Fixtures.Tcp;
using Iggy_SDK_Tests.Utils;
using Iggy_SDK.Contracts.Http;
using Iggy_SDK.Enums;
using Iggy_SDK.Exceptions;
namespace Iggy_SDK_Tests.E2ETests;
[TestCaseOrderer("Iggy_SDK_Tests.Utils.PriorityOrderer", "Iggy_SDK_Tests")]
public sealed class UsersE2E : IClassFixture<IggyTcpUsersFixture>
{
private readonly IggyTcpUsersFixture _fixture;
public UsersE2E(IggyTcpUsersFixture fixture)
{
_fixture = fixture;
}
[Fact, TestPriority(1)]
public async Task CreateUser_Should_CreateUser_Successfully()
{
// act & assert
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
await sut.Invoking(async x =>
await x.CreateUser(UsersFixtureBootstrap.UserRequest)
)
.Should()
.NotThrowAsync();
}));
await Task.WhenAll(tasks);
}
[Fact, TestPriority(2)]
public async Task CreateUser_Duplicate_Should_Throw_InvalidResponse()
{
// act & assert
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
await sut.Invoking(async x =>
await x.CreateUser(UsersFixtureBootstrap.UserRequest)
)
.Should()
.ThrowExactlyAsync<InvalidResponseException>();
}));
await Task.WhenAll(tasks);
}
[Fact, TestPriority(3)]
public async Task GetUser_Should_ReturnValidResponse()
{
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
// act
var response = await sut.GetUser(Identifier.Numeric(2));
// assert
response.Should().NotBeNull();
response!.Id.Should().Be(2);
response.Username.Should().Be(UsersFixtureBootstrap.UserRequest.Username);
response.Status.Should().Be(UsersFixtureBootstrap.UserRequest.Status);
response.Permissions!.Global.Should().NotBeNull();
response.Permissions.Global.Should().BeEquivalentTo(UsersFixtureBootstrap.UserRequest.Permissions!.Global);
})).ToArray();
await Task.WhenAll(tasks);
}
[Fact, TestPriority(4)]
public async Task GetUsers_Should_ReturnValidResponse()
{
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
// act
var response = await sut.GetUsers();
// assert
response.Should().NotBeEmpty();
response.Should().HaveCount(2);
})).ToArray();
await Task.WhenAll(tasks);
}
[Fact, TestPriority(5)]
public async Task UpdateUser_Should_UpdateUser_Successfully()
{
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
//act
await sut.Invoking(async x =>
await x.UpdateUser(new UpdateUserRequest
{
UserId = Identifier.Numeric(2), Username = UsersFixtureBootstrap.NewUsername, UserStatus = UserStatus.Active
})).Should().NotThrowAsync();
var user = await sut.GetUser(Identifier.Numeric(2));
// assert
user!.Username.Should().Be(UsersFixtureBootstrap.NewUsername);
})).ToArray();
await Task.WhenAll(tasks);
}
[Fact, TestPriority(6)]
public async Task ChangePermissions_Should_ChangePermissions_Successfully()
{
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
// act
await sut.Invoking(async x =>
await x.UpdatePermissions(new UpdateUserPermissionsRequest
{
UserId = Identifier.Numeric(2), Permissions = UsersFixtureBootstrap.UpdatePermissionsRequest
})).Should().NotThrowAsync();
var user = await sut.GetUser(Identifier.Numeric(2));
// assert
user!.Permissions!.Global.Should().NotBeNull();
user.Permissions.Should().BeEquivalentTo(UsersFixtureBootstrap.UpdatePermissionsRequest);
})).ToArray();
await Task.WhenAll(tasks);
}
[Fact, TestPriority(7)]
public async Task DeleteUser_Should_DeleteUser_Successfully()
{
var task = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
// act & assert
await sut.Invoking(async x =>
await x.DeleteUser(Identifier.Numeric(2))).Should().NotThrowAsync();
})).ToArray();
await Task.WhenAll(task);
}
[Fact, TestPriority(8)]
public async Task LogoutUser_Should_LogoutUser_Successfully()
{
var tasks = _fixture.SubjectsUnderTest.Select(sut => Task.Run(async () =>
{
// act & assert
await sut.Invoking(async x =>
await x.LogoutUser()).Should().NotThrowAsync();
})).ToArray();
await Task.WhenAll(tasks);
}
}