public static IEnumerable <object[]> AccountEventsWithNonStarChefSourceSystem() { var acb = AccountCreated.CreateBuilder(); acb.SetExternalId("1").SetSource(SourceSystem.ADACO); yield return(new object[] { acb.Build(), new AccountCreatedValidator(Mock.Of <IDatabaseCommands>()) }); var aub = AccountUpdated.CreateBuilder(); aub.SetExternalId("1").SetSource(SourceSystem.ADACO); yield return(new object[] { aub.Build(), new AccountUpdatedValidator(Mock.Of <IDatabaseCommands>()) }); var ascb = AccountStatusChanged.CreateBuilder(); ascb.SetExternalId("1").SetStatus(AccountStatus.ACTIVE).SetSource(SourceSystem.ADACO); yield return(new object[] { ascb.Build(), new AccountStatusChangedValidator(Mock.Of <IDatabaseCommands>()) }); var acfb = AccountCreateFailed.CreateBuilder(); acfb.SetInternalId("1").SetReason(AccountCreateFailedReason.INVALID_CREATE_DATA).SetSource(SourceSystem.ADACO); yield return(new object[] { acfb.Build(), new AccountCreateFailedValidator(Mock.Of <IDatabaseCommands>()) }); var aufb = AccountUpdateFailed.CreateBuilder(); aufb.SetExternalId("1").SetCommandId("1").SetReason(AccountUpdateFailedReason.INVALID_UPDATE_DATA).SetSource(SourceSystem.ADACO); yield return(new object[] { aufb.Build(), new AccountUpdateFailedValidator(Mock.Of <IDatabaseCommands>()) }); var ascfb = AccountStatusChangeFailed.CreateBuilder(); ascfb.SetExternalId("1").SetSource(SourceSystem.ADACO); yield return(new object[] { ascfb.Build(), new AccountStatusChangeFailedValidator(Mock.Of <IDatabaseCommands>()) }); }
public void Should_log_listener_exceptions_and_have_correct_external_id() { // arrange var builder = AccountUpdated.CreateBuilder(); builder .SetUsername("1") .SetFirstName("1") .SetLastName("1") .SetEmailAddress("1") .SetSource(SourceSystem.STARCHEF) .SetExternalId(Guid.Empty.ToString()); var payload = builder.Build(); var dbCommands = new Mock <IDatabaseCommands>(); var validator = new Mock <IEventValidator>(MockBehavior.Strict); validator.Setup(m => m.IsAllowedEvent(payload)).Returns(true); validator.Setup(m => m.IsValidPayload(It.IsAny <object>())).Returns(true); var messagingLogger = new Mock <IMessagingLogger>(); messagingLogger.Setup(d => d.MessageProcessedSuccessfully(It.IsAny <object>(), It.IsAny <string>())).Throws(new ListenerException()); var logChecker = new LogChecker(typeof(AccountUpdatedEventHandler), Level.All); var handler = new AccountUpdatedEventHandler(dbCommands.Object, validator.Object, messagingLogger.Object, logChecker.GetLogger()); // act var result = handler.HandleAsync(payload, "1").Result; var messageList = logChecker.LoggingEvents; logChecker.Dispose(); // assert Assert.All(messageList, item => { Assert.Equal(item.Properties[AccountUpdatedEventHandler.EXTERNAL_ID], Guid.Empty.ToString()); }); Assert.NotNull( messageList.Where( item => item.ExceptionObject != null && item.ExceptionObject.GetType() == typeof(ListenerException)).FirstOrDefault() ); Assert.Null(ThreadContext.Properties[AccountUpdatedEventHandler.EXTERNAL_ID]); }
public void Should_return_false_when_EmailAddress_missing() { var builder = AccountUpdated.CreateBuilder(); builder .SetUsername("1") .SetFirstName("1") .SetLastName("1") .SetExternalId("1"); var accountCreated = builder.Build(); var validator = new AccountUpdatedValidator(Mock.Of <IDatabaseCommands>()); var actual = validator.IsValidPayload(accountCreated); Assert.False(actual); }
public void Should_return_true_for_valid_model() { var builder = AccountUpdated.CreateBuilder(); builder .SetUsername("1") .SetFirstName("1") .SetLastName("1") .SetEmailAddress("1") .SetExternalId("1"); var accountCreated = builder.Build(); var validator = new AccountUpdatedValidator(Mock.Of <IDatabaseCommands>()); var actual = validator.IsValidPayload(accountCreated); Assert.True(actual); }
public void Should_correctly_convert_AccountUpdated_to_json() { var builder = AccountUpdated.CreateBuilder(); builder .SetUsername("1") .SetFirstName("1") .SetLastName("1") .SetEmailAddress("1") .SetSource(SourceSystem.STARCHEF) .SetExternalId(Guid.Empty.ToString()); var payload = builder.Build(); var actual = MessageEventsExtensions.ToJson(payload); const string expected = @"{""ExternalId"":""00000000-0000-0000-0000-000000000000"",""Username"":""1"",""EmailAddress"":""1"",""FirstName"":""1"",""LastName"":""1"",""Source"":""STARCHEF""}"; Assert.Equal(expected, actual); }
public void All_logs_should_have_correct_external_id_invalid_payload() { // arrange var builder = AccountUpdated.CreateBuilder(); builder .SetUsername("1") .SetFirstName("1") .SetLastName("1") .SetEmailAddress("1") .SetSource(SourceSystem.STARCHEF) .SetExternalId(Guid.Empty.ToString()); var payload = builder.Build(); var dbCommands = new Mock <IDatabaseCommands>(); var validator = new Mock <IEventValidator>(MockBehavior.Strict); validator.Setup(m => m.IsAllowedEvent(payload)).Returns(true); validator.Setup(m => m.IsValidPayload(It.IsAny <object>())).Returns(false); validator.Setup(m => m.GetErrors()).Returns(string.Empty); var messagingLogger = new Mock <IMessagingLogger>(); var logChecker = new LogChecker(typeof(AccountUpdatedEventHandler), Level.All); var handler = new AccountUpdatedEventHandler(dbCommands.Object, validator.Object, messagingLogger.Object, logChecker.GetLogger()); // act var result = handler.HandleAsync(payload, "1").Result; var messageList = logChecker.LoggingEvents; logChecker.Dispose(); // assert Assert.All(messageList, item => { Assert.Equal(item.Properties[AccountUpdatedEventHandler.EXTERNAL_ID], Guid.Empty.ToString()); }); Assert.Null(ThreadContext.Properties[AccountUpdatedEventHandler.EXTERNAL_ID]); }
public void Should_not_have_log_for_non_starchef_events() { // arrange var builder = AccountUpdated.CreateBuilder(); builder .SetUsername("1") .SetFirstName("1") .SetLastName("1") .SetEmailAddress("1") .SetSource(SourceSystem.ADACO) .SetExternalId(Guid.Empty.ToString()); var payload = builder.Build(); var dbCommands = new Mock <IDatabaseCommands>(); var validator = new Mock <IEventValidator>(MockBehavior.Strict); validator.Setup(m => m.IsAllowedEvent(payload)).Returns(false); var messagingLogger = new Mock <IMessagingLogger>(); var logChecker = new LogChecker(typeof(AccountUpdatedEventHandler), Level.All); var handler = new AccountUpdatedEventHandler(dbCommands.Object, validator.Object, messagingLogger.Object, logChecker.GetLogger()); // act var result = handler.HandleAsync(payload, "1").Result; var messageList = logChecker.LoggingEvents; logChecker.Dispose(); // assert Assert.Empty(messageList); Assert.Null(ThreadContext.Properties[AccountUpdatedEventHandler.EXTERNAL_ID]); }