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
Original file line number Diff line number Diff line change
Expand Up @@ -203,16 +203,15 @@ public void UpdateAdminUserFailedLoginCount_updates_user()
public void DeactivateAdminUser_updates_user()
{
using var transaction = new TransactionScope();
var adminUser = userDataService.GetAdminUserById(7)!;
var adminUser = UserTestHelper.GetDefaultAdminUser();

try
{
// When
userDataService.DeactivateAdmin(7);
var updatedAdminUser = userDataService.GetAdminUserById(7)!;
userDataService.DeactivateAdmin(adminUser.Id);
var updatedAdminUser = userDataService.GetAdminUserById(adminUser.Id)!;

// Then
adminUser.Active.Should().Be(true);
updatedAdminUser.Active.Should().Be(false);
}
finally
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using DigitalLearningSolutions.Web.Tests.ControllerHelpers;
using DigitalLearningSolutions.Web.ViewModels.TrackingSystem.Centre.Administrator;
using FakeItEasy;
using FizzWare.NBuilder;
using FluentAssertions;
using FluentAssertions.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
Expand Down Expand Up @@ -176,38 +177,37 @@ public void UnlockAccount_unlocks_account_and_returns_to_page()
public void DeactivateAdminUser_does_not_deactivate_admin_user_without_confirmation()
{
// Given
var adminUser = UserTestHelper.GetDefaultAdminUser(active: true);
var adminUserId = UserTestHelper.GetDefaultAdminUser().Id;
const string expectedErrorMessage = "You must confirm before deactivating this account";

A.CallTo(() => userDataService.GetAdminUserById(1)).Returns(UserTestHelper.GetDefaultAdminUser());
var deactivateViewModel = new DeactivateAdminViewModel(adminUser) { Confirm = false };
var deactivateViewModel =
Builder<DeactivateAdminViewModel>.CreateNew().With(vm => vm.Confirm = false).Build();
administratorController.ModelState.AddModelError(nameof(DeactivateAdminViewModel.Confirm), expectedErrorMessage);


// When
var result = administratorController.DeactivateAdmin(1, deactivateViewModel);
var result = administratorController.DeactivateAdmin(adminUserId, deactivateViewModel);

// Then
result.Should().BeViewResult().WithDefaultViewName().ModelAs<DeactivateAdminViewModel>();
administratorController.ModelState[nameof(DeactivateAdminViewModel.Confirm)].Errors[0].ErrorMessage.Should()
.BeEquivalentTo(expectedErrorMessage);
A.CallTo(() => userDataService.DeactivateAdmin(1)).MustNotHaveHappened();
A.CallTo(() => userDataService.DeactivateAdmin(adminUserId)).MustNotHaveHappened();
}

[Test]
public void DeactivateAdminUser_deactivates_admin_user_with_confirmation()
{
// Given
var adminUser = UserTestHelper.GetDefaultAdminUser(active: true);
A.CallTo(() => userDataService.GetAdminUserById(1)).Returns(UserTestHelper.GetDefaultAdminUser());
var deactivateViewModel = new DeactivateAdminViewModel(adminUser) { Confirm = true };
var adminUserId = UserTestHelper.GetDefaultAdminUser().Id;
A.CallTo(() => userDataService.DeactivateAdmin(adminUserId)).DoesNothing();
var deactivateViewModel =
Builder<DeactivateAdminViewModel>.CreateNew().With(vm => vm.Confirm = true).Build();

// When
var result = administratorController.DeactivateAdmin(1, deactivateViewModel);
var result = administratorController.DeactivateAdmin(adminUserId, deactivateViewModel);

// Then
A.CallTo(() => userDataService.GetAdminUserById(1)).MustHaveHappened();
A.CallTo(() => userDataService.DeactivateAdmin(1)).MustHaveHappened();
A.CallTo(() => userDataService.DeactivateAdmin(adminUserId)).MustHaveHappened();
result.Should().BeViewResult().WithViewName("DeactivateAdminConfirmation");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ public IActionResult DeactivateAdmin(int adminId, DeactivateAdminViewModel model
return View(model);
}

var adminUser = userDataService.GetAdminUserById(adminId);
userDataService.DeactivateAdmin(adminId);

return View("DeactivateAdminConfirmation");
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@ public DeactivateAdminViewModel() { }

public DeactivateAdminViewModel(AdminUser user)
{
UserId = user.Id;
FullName = user.FullName;
EmailAddress = user.EmailAddress;
}

public string? FullName { get; set; }
public string FullName { get; set; }
public string? EmailAddress { get; set; }
public int UserId { get; }

[BooleanMustBeTrue(ErrorMessage = "You must confirm before deactivating this account")]
public bool Confirm { get; set; }
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@
@model DeactivateAdminViewModel

@{
ViewData["Title"] = !ViewData.ModelState.IsValid ? "Error: " : "" + "Deactivate Admin Account";
var errorHasOccurred = !ViewData.ModelState.IsValid;
ViewData["Title"] = errorHasOccurred ? "Error: " : "" + "Deactivate Admin Account";
}

<div class="nhsuk-grid-row">
<div class="nhsuk-grid-column-full">
@if (errorHasOccurred) {
<vc:error-summary order-of-property-names="@(new[] { nameof(Model.Confirm) })" />
}
<h1 class="nhsuk-heading-l">Are you sure you would like to deactivate this admin account?</h1>
</div>
</div>

<div class="nhsuk-grid-row nhsuk-u-margin-6">
<div class="nhsuk-grid-row nhsuk-u-margin-top-3 nhsuk-u-margin-bottom-3">
<div class="nhsuk-grid-column-one-quarter nhsuk-heading-s">
<div class="nhsuk-u-font-weight-bold">
User
Expand All @@ -27,10 +31,9 @@
<form class="nhsuk-u-margin-bottom-5" method="post" asp-action="DeactivateAdmin">
<div class="nhsuk-form-group">

<vc:confirm-checkbox asp-for="@nameof(Model.Confirm)"
label="I am sure that I wish to deactivate this account. I understand that if the user has never logged in, their admin account will be deleted."
populate-with-current-values="false"
hint-text="" />
<vc:single-checkbox asp-for="@nameof(Model.Confirm)"
label="I am sure that I wish to deactivate this account. I understand that if the user has never logged in, their admin account will be deleted."
hint-text="" />
</div>
<input type="hidden" asp-for="FullName" />
<input type="hidden" asp-for="EmailAddress" />
Expand Down