Пример #1
0
        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);
        }
Пример #2
0
        /// <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);
        }