public void SecurityCodeBusinessLogic_CreateSecurityCode_Only_Applies_To_Active_Or_Pending( OrganisationStatuses organisationStatus, bool expectedToFail) { // Arrange var securityCodeBusinessLogic = new SecurityCodeBusinessLogic(); var organisation = new Organisation { Status = organisationStatus }; var securityCodeExpiryDateTime = VirtualDateTime.Now.AddDays(7); // Act var creationResult = securityCodeBusinessLogic.CreateSecurityCode(organisation, securityCodeExpiryDateTime); // Assert var wasWasnt = expectedToFail ? "was" : "was not"; var didDidnt = expectedToFail ? "didn't" : "did"; Assert.AreEqual( expectedToFail, creationResult.Failed, $"Organisation status '{organisationStatus.ToString()}' {wasWasnt} expected to fail, but it {didDidnt}."); if (expectedToFail) { Assert.AreEqual( $"Generation of security codes cannot be performed for retired organisations. Organisation '' employerReference '' has status '{organisationStatus.ToString()}'.", creationResult.ErrorMessage.Description); } }
public void SecurityCodeBusinessLogic_CreateSecurityCode_Throws_Exception() { // Arrange var mockedOrganisationToSetup = new Mock <Organisation>(); mockedOrganisationToSetup .Setup(x => x.SetSecurityCode(It.IsAny <DateTime>())) .Throws(new Exception("Kaboom")); var mockedOrganisation = mockedOrganisationToSetup.Object; mockedOrganisation.Status = OrganisationStatuses.Active; // Act var creationResult = new SecurityCodeBusinessLogic().CreateSecurityCode(mockedOrganisation, VirtualDateTime.Now.AddDays(10)); Assert.True(creationResult.Failed); Assert.Null(creationResult.Result); var actualError = creationResult.ErrorMessage; // Assert Assert.NotNull(actualError); Assert.AreEqual(0, actualError.Code); Assert.AreEqual("Kaboom", actualError.Description); }
public void SecurityCodeBusinessLogic_CreateSecurityCode_Succeeds() { // Arrange var securityCodeBusinessLogic = new SecurityCodeBusinessLogic(); var organisation = new Organisation { Status = OrganisationStatuses.Active }; var securityCodeExpiryDateTime = VirtualDateTime.Now.AddDays(1); // Act var creationResult = securityCodeBusinessLogic.CreateSecurityCode(organisation, securityCodeExpiryDateTime); Assert.True(creationResult.Succeeded); var modifiedOrganisation = creationResult.Result; // Assert Assert.NotNull(modifiedOrganisation.SecurityCode); Assert.AreEqual(securityCodeExpiryDateTime, modifiedOrganisation.SecurityCodeExpiryDateTime); Assert.NotNull(modifiedOrganisation.SecurityCodeCreatedDateTime); }
public void SecurityCodeBusinessLogic_CreateSecurityCode_Must_Expire_In_The_Future() { // Arrange var securityCodeBusinessLogic = new SecurityCodeBusinessLogic(); var organisation = new Organisation { Status = OrganisationStatuses.Active }; var securityCodeExpiryDateTime = VirtualDateTime.Now.AddDays(-1); // Act var creationResult = securityCodeBusinessLogic.CreateSecurityCode(organisation, securityCodeExpiryDateTime); Assert.True(creationResult.Failed); Assert.Null(creationResult.Result); var actualError = creationResult.ErrorMessage; // Assert Assert.NotNull(actualError); Assert.AreEqual(4004, actualError.Code); Assert.AreEqual("Security code must expire in the future", actualError.Description); }
public void SecurityCodeBusinessLogic_ExpireSecurityCode_Succeeds() { // Arrange var securityCodeBusinessLogic = new SecurityCodeBusinessLogic(); var organisation = new Organisation(); organisation.SetSecurityCode(VirtualDateTime.Now.AddDays(1)); // Act var creationResult = securityCodeBusinessLogic.ExpireSecurityCode(organisation); Assert.True(creationResult.Succeeded); var modifiedOrganisation = creationResult.Result; // Assert Assert.NotNull(modifiedOrganisation.SecurityCode); Assert.AreEqual( VirtualDateTime.Now.AddDays(-1).ToString("dd/MM/yyyy"), modifiedOrganisation.SecurityCodeExpiryDateTime?.ToString("dd/MM/yyyy"), "Security codes are expired by changing their expiry date to yesterday"); Assert.NotNull(modifiedOrganisation.SecurityCodeCreatedDateTime); }
public void SecurityCodeBusinessLogic_ExpireSecurityCode_Cannot_Expire_An_Already_Expired_Organisation() { // Arrange var securityCodeBusinessLogic = new SecurityCodeBusinessLogic(); var organisation = new Organisation { OrganisationId = 123456789 }; organisation.SetSecurityCode(VirtualDateTime.Now.AddDays(1)); organisation.SetSecurityCodeExpiryDate(VirtualDateTime.Now.AddDays(-1)); // Act var creationResult = securityCodeBusinessLogic.ExpireSecurityCode(organisation); // Assert Assert.True(creationResult.Failed); Assert.AreEqual( "Cannot modify the security code information of an already expired security code", creationResult.ErrorMessage.Description); Assert.AreEqual(4004, creationResult.ErrorMessage.Code); Assert.Null(creationResult.Result); Assert.AreEqual(123456789, creationResult.ErrorRelatedObject.OrganisationId); }