From 63ce987959dda3ed90c4d18142da591a3b065e2a Mon Sep 17 00:00:00 2001 From: Matthew Parker Date: Mon, 8 Jul 2024 03:36:01 +0100 Subject: [PATCH] Added shared tests --- .../AccountClientTests.UpdatePassword.cs | 83 +++++++++++++++++++ .../Requests/UpdatePasswordRequestTests.cs | 35 ++++++++ 2 files changed, 118 insertions(+) create mode 100644 tests/PinguApps.Appwrite.Client.Tests/Clients/Account/AccountClientTests.UpdatePassword.cs create mode 100644 tests/PinguApps.Appwrite.Shared.Tests/Requests/UpdatePasswordRequestTests.cs diff --git a/tests/PinguApps.Appwrite.Client.Tests/Clients/Account/AccountClientTests.UpdatePassword.cs b/tests/PinguApps.Appwrite.Client.Tests/Clients/Account/AccountClientTests.UpdatePassword.cs new file mode 100644 index 00000000..b9d3ace1 --- /dev/null +++ b/tests/PinguApps.Appwrite.Client.Tests/Clients/Account/AccountClientTests.UpdatePassword.cs @@ -0,0 +1,83 @@ +using System.Net; +using PinguApps.Appwrite.Shared.Requests; +using PinguApps.Appwrite.Shared.Tests; +using RichardSzalay.MockHttp; + +namespace PinguApps.Appwrite.Client.Tests.Clients.Account; +public partial class AccountClientTests +{ + [Fact] + public async Task UpdatePassword_ShouldReturnSuccess_WhenApiCallSucceeds() + { + // Arrange + var request = new UpdatePasswordRequest() + { + OldPassword = "oldPassword", + NewPassword = "newPassword" + }; + + _mockHttp.Expect(HttpMethod.Patch, $"{Constants.Endpoint}/account/password") + .ExpectedHeaders(true) + .WithJsonContent(request) + .Respond(Constants.AppJson, Constants.UserResponse); + + _appwriteClient.SetSession(Constants.Session); + + // Act + var result = await _appwriteClient.Account.UpdatePassword(request); + + // Assert + Assert.True(result.Success); + } + + [Fact] + public async Task UpdatePassword_ShouldHandleException_WhenApiCallFails() + { + // Arrange + var request = new UpdatePasswordRequest() + { + OldPassword = "oldPassword", + NewPassword = "newPassword" + }; + + _mockHttp.Expect(HttpMethod.Patch, $"{Constants.Endpoint}/account/password") + .ExpectedHeaders(true) + .WithJsonContent(request) + .Respond(HttpStatusCode.BadRequest, Constants.AppJson, Constants.AppwriteError); + + _appwriteClient.SetSession(Constants.Session); + + // Act + var result = await _appwriteClient.Account.UpdatePassword(request); + + // Assert + Assert.True(result.IsError); + Assert.True(result.IsAppwriteError); + } + + [Fact] + public async Task UpdatePassword_ShouldReturnErrorResponse_WhenExceptionOccurs() + { + // Arrange + var request = new UpdatePasswordRequest() + { + OldPassword = "oldPassword", + NewPassword = "newPassword" + }; + + _mockHttp.Expect(HttpMethod.Patch, $"{Constants.Endpoint}/account/password") + .ExpectedHeaders(true) + .WithJsonContent(request) + .Throw(new HttpRequestException("An error occurred")); + + _appwriteClient.SetSession(Constants.Session); + + // Act + var result = await _appwriteClient.Account.UpdatePassword(request); + + // Assert + Assert.False(result.Success); + Assert.True(result.IsInternalError); + Assert.Equal("An error occurred", result.Result.AsT2.Message); + } +} diff --git a/tests/PinguApps.Appwrite.Shared.Tests/Requests/UpdatePasswordRequestTests.cs b/tests/PinguApps.Appwrite.Shared.Tests/Requests/UpdatePasswordRequestTests.cs new file mode 100644 index 00000000..3320c3ea --- /dev/null +++ b/tests/PinguApps.Appwrite.Shared.Tests/Requests/UpdatePasswordRequestTests.cs @@ -0,0 +1,35 @@ +using PinguApps.Appwrite.Shared.Requests; + +namespace PinguApps.Appwrite.Shared.Tests.Requests; + +public class UpdatePasswordRequestTests +{ + [Fact] + public void Constructor_InitializesWithExpectedValues() + { + // Arrange & Act + var request = new UpdatePasswordRequest(); + + // Assert + Assert.NotNull(request.NewPassword); + Assert.Equal(string.Empty, request.NewPassword); + Assert.Null(request.OldPassword); + } + + [Theory] + [InlineData("oldPassword", "newPassword")] + [InlineData(null, "anotherPassword")] + public void Properties_CanBeSet(string? oldPassword, string newPassword) + { + // Arrange + var request = new UpdatePasswordRequest(); + + // Act + request.OldPassword = oldPassword; + request.NewPassword = newPassword; + + // Assert + Assert.Equal(oldPassword, request.OldPassword); + Assert.Equal(newPassword, request.NewPassword); + } +}