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_updated_valid_data_and_log_to_messaging_events() { 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); 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(true)); dbCommands.Setup(m => m.OriginateLoginId(It.IsAny <int>(), It.IsAny <string>())).Returns(Task.FromResult(LOGIN_ID)); 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.UpdateExternalId(It.Is <AccountCreatedTransferObject>(p => p.InternalLoginId == LOGIN_ID && p.ExternalLoginId == externalId )), Times.Once); messagingLogger.Verify(m => m.MessageProcessedSuccessfully(It.Is <object>(p => ReferenceEquals(p, payload)), It.IsAny <string>()), Times.Once); }