public void Should_create_a_new_user() { const int LOGIN_ID = 123; const string USERNAME = "******"; const string FIRST_NAME = "first_name"; const string LAST_NAME = "last_name"; const string EMAIL_ADDRESS = "email"; var externalId = Guid.NewGuid().ToString(); var builder = AccountCreated.CreateBuilder(); builder .SetInternalId(LOGIN_ID.ToString()) .SetUsername(USERNAME) .SetFirstName(FIRST_NAME) .SetLastName(LAST_NAME) .SetEmailAddress(EMAIL_ADDRESS) .SetSource(SourceSystem.STARCHEF) .SetExternalId(externalId); var payload = builder.Build(); var validator = new Mock <IEventValidator>(); validator.Setup(m => m.IsAllowedEvent(It.IsAny <object>())).Returns(true); validator.Setup(m => m.IsValidPayload(It.IsAny <object>())).Returns(true); var messagingLogger = new Mock <IMessagingLogger>(); var dbCommands = new Mock <IDatabaseCommands>(); dbCommands.Setup(m => m.IsUserExists(It.IsAny <int?>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(false)); // user is not exists var config = new Mock <IConfiguration>(); var handler = new AccountCreatedEventHandler(dbCommands.Object, validator.Object, config.Object, messagingLogger.Object); // act var result = handler.HandleAsync(payload, "1").Result; // assertions Assert.Equal(MessageHandlerResult.Success, result); // while check loginId AND loginName are used dbCommands.Verify(m => m.IsUserExists(It.Is <int?>(p => p.Value == LOGIN_ID), It.Is <string>(p => p == null), It.Is <string>(p => p == USERNAME)), Times.Once); dbCommands.Verify(m => m.AddUser(It.Is <AccountCreatedTransferObject>(p => p.EmailAddress == EMAIL_ADDRESS && p.Username == USERNAME && p.FirstName == FIRST_NAME && p.LastName == LAST_NAME && p.ExternalLoginId == externalId )), Times.Once); }
public void Should_log_listener_exceptions_and_have_correct_internal_id() { // arrange var builder = AccountCreated.CreateBuilder(); builder .SetInternalId("1") .SetFirstName("1") .SetLastName("1") .SetEmailAddress("1") .SetSource(SourceSystem.STARCHEF) .SetExternalId(Guid.Empty.ToString()); var payload = builder.Build(); var dbCommands = new Mock <IDatabaseCommands>(); dbCommands.Setup(d => d.IsUserExists(It.IsAny <int?>(), It.IsAny <string>(), It.IsAny <string>())).Throws(new ListenerException()); 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>(); var config = new Mock <IConfiguration>(); var logChecker = new LogChecker(typeof(AccountCreatedEventHandler), Level.All); var handler = new AccountCreatedEventHandler(dbCommands.Object, validator.Object, config.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("1", item.Properties[AccountCreatedEventHandler.INTERNAL_ID]); }); Assert.NotNull( messageList.Where( item => item.ExceptionObject != null && item.ExceptionObject.GetType() == typeof(ListenerException)).FirstOrDefault() ); Assert.Null(ThreadContext.Properties[AccountCreatedEventHandler.INTERNAL_ID]); }
public void Should_updated_valid_data_and_log_to_messaging_events2() { string internalId = Guid.NewGuid().ToString(); int creted_loginId = 15; string USERNAME = "******"; string FIRST_NAME = "first_name"; string LAST_NAME = "last_name"; string EMAIL_ADDRESS = "email"; var externalId = Guid.NewGuid().ToString(); var builder = AccountCreated.CreateBuilder(); builder .SetInternalId(internalId) .SetUsername(USERNAME) .SetFirstName(FIRST_NAME) .SetLastName(LAST_NAME) .SetEmailAddress(EMAIL_ADDRESS) .SetSource(SourceSystem.USER_MANAGEMENT) .SetExternalId(externalId); builder.AddPermissionSets("Star_Chef"); var payload = builder.Build(); var dbCommands = new Mock <IDatabaseCommands>(); dbCommands.Setup(m => m.IsUserExists(It.IsAny <int?>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(false)); dbCommands.Setup(m => m.AddUser(It.IsAny <AccountCreatedTransferObject>())).Returns(Task.FromResult(creted_loginId)); var validator = new AccountCreatedValidator(dbCommands.Object); var messagingLogger = new Mock <IMessagingLogger>(); var config = new Mock <IConfiguration>(); var handler = new AccountCreatedEventHandler(dbCommands.Object, validator, config.Object, messagingLogger.Object); var result = handler.HandleAsync(payload, "1").Result; // assertions Assert.Equal(MessageHandlerResult.Success, result); dbCommands.Verify(m => m.AddUser(It.Is <AccountCreatedTransferObject>(p => p.InternalLoginId == creted_loginId && p.InternalId.Equals(internalId, StringComparison.CurrentCultureIgnoreCase) && p.ExternalLoginId == externalId )), Times.Once); messagingLogger.Verify(m => m.MessageProcessedSuccessfully(It.Is <object>(p => ReferenceEquals(p, payload)), It.IsAny <string>()), Times.Once); }
public void Should_register_error_with_model() { // arrange var payload = PayloadHelpers.Construct <AccountCreated>(); var dbCommands = new Mock <IDatabaseCommands>(); var validator = new Mock <IEventValidator>(); validator.Setup(m => m.IsAllowedEvent(It.IsAny <object>())).Returns(true); validator.Setup(m => m.IsValidPayload(It.IsAny <object>())).Returns(false); var messagingLogger = new Mock <IMessagingLogger>(); var config = new Mock <IConfiguration>(); var handler = new AccountCreatedEventHandler(dbCommands.Object, validator.Object, config.Object, messagingLogger.Object); // act var result = handler.HandleAsync(payload, "1").Result; // assert Assert.Equal(MessageHandlerResult.Fatal, result); messagingLogger.Verify(m => m.ReceivedInvalidModel(It.IsAny <string>(), It.IsAny <object>(), It.IsAny <string>()), Times.Once); }
public void All_logs_should_have_correct_internal_id_invalid_payload() { // arrange var builder = AccountCreated.CreateBuilder(); builder .SetInternalId("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 config = new Mock <IConfiguration>(); var logChecker = new LogChecker(typeof(AccountCreatedEventHandler), Level.All); var handler = new AccountCreatedEventHandler(dbCommands.Object, validator.Object, config.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("1", item.Properties[AccountCreatedEventHandler.INTERNAL_ID]); }); Assert.Null(ThreadContext.Properties[AccountCreatedEventHandler.INTERNAL_ID]); }
public void Should_not_have_log_for_non_starchef_events() { // arrange var builder = AccountCreated.CreateBuilder(); builder .SetInternalId("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 config = new Mock <IConfiguration>(); var logChecker = new LogChecker(typeof(AccountCreatedEventHandler), Level.All); var handler = new AccountCreatedEventHandler(dbCommands.Object, validator.Object, config.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[AccountCreatedEventHandler.INTERNAL_ID]); }