public void MarketPayAccountCreatedNotificationTest() { string json = GetFileContents("Mocks/marketpay/notification/account-created-success.json"); NotificationHandler notificationHandler = new NotificationHandler(); IGenericNotification notificationMessage = notificationHandler.HandleMarketpayNotificationJson(json); AccountCreateNotification accountCreateNotificationMessage = (AccountCreateNotification)notificationMessage; Assert.AreEqual("ACCOUNT_CREATED", accountCreateNotificationMessage.EventType); Assert.AreEqual("000", accountCreateNotificationMessage.Error.ErrorCode); Assert.AreEqual("test error message", accountCreateNotificationMessage.Error.Message); Assert.IsNotNull(accountCreateNotificationMessage.Content); CreateAccountResponse content = accountCreateNotificationMessage.Content; Assert.AreEqual("TestAccountHolder", content.AccountHolderCode); Assert.AreEqual("AC0000000001", content.AccountCode); Assert.AreEqual("account description", content.Description); Assert.AreEqual("MetaValue", content.Metadata["MetaKey"]); Assert.AreEqual(CreateAccountResponse.StatusEnum.Active, content.Status); PayoutScheduleResponse payoutSchedule = content.PayoutSchedule; Assert.AreEqual(PayoutScheduleResponse.ScheduleEnum.DAILY, payoutSchedule.Schedule); Assert.AreEqual(1, content.InvalidFields.Count); ErrorFieldType errorFieldType = content.InvalidFields[0]; Assert.AreEqual(1, (long)errorFieldType.ErrorCode); Assert.AreEqual("Field is missing", errorFieldType.ErrorDescription); Assert.AreEqual("AccountHolderDetails.BusinessDetails.Shareholders.unknown", errorFieldType.FieldType.Field); Assert.AreEqual(FieldType.FieldNameEnum.Unknown, errorFieldType.FieldType.FieldName); Assert.AreEqual("SH00001", errorFieldType.FieldType.ShareholderCode); }
/// <summary> /// Creates the error data from the values provided. /// /// If the errorCode is empty it will use the first validation error code, /// if there is none it will throw an error. /// </summary> /// <param name="errorCode">The error code.</param> /// <param name="errorMessage">The error message.</param> /// <param name="validationErrors">The validation errors.</param> /// <returns></returns> public static ErrorDataType CreateErrorData(string errorCode, string errorMessage, IEnumerable <ValidationErrorField> validationErrors) { var to = new ErrorDataType { ErrorCode = errorCode, Message = errorMessage, ErrorFields = new List <ErrorFieldType>(), }; if (validationErrors != null) { foreach (var validationError in validationErrors) { var error = new ErrorFieldType { ErrorCode = validationError.ErrorCode, FieldName = validationError.FieldName, Message = validationError.ErrorMessage, }; to.ErrorFields.Add(error); if (string.IsNullOrEmpty(to.ErrorCode)) { to.ErrorCode = validationError.ErrorCode; } if (string.IsNullOrEmpty(to.Message)) { to.Message = validationError.ErrorMessage; } } } if (string.IsNullOrEmpty(errorCode)) { if (string.IsNullOrEmpty(to.ErrorCode)) { throw new ArgumentException("Cannot create a valid error response with an empty errorCode and an empty validationError list"); } } return(to); }