public void VersionedMessageHandler_WhenErrorAndNotThrowOnError_ExpectHandled()
        {
            // Arrange
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new VersionedMessageHandler(SerializerType.Json, false)
                                          .On <TestEntityOne>(e => throw new DivideByZeroException())
                                          .On <TestEntityTwo>(e => entityTwo = e)
                                          .Else(s => defaultValue            = s)
                                          .OnError(e => exception            = e);

            var versionedMessage = new VersionedMessage
            {
                Data    = new TestEntityOne().SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityOne).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();

            versionedMessageHandler.Post(versionedMessage);
            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityTwo, Is.Null);
            Assert.That(defaultValue, Is.Null);
            Assert.That(exception, Is.Not.Null);

            Assert.That(exception.GetType(), Is.EqualTo(typeof(DivideByZeroException)));
        }
        public async Task VersionedMessageHandler_WhenVersionMatchOnSecond_ExpectAction()
        {
            // Arrange
            var entityOne    = default(TestEntityOne);
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new AsyncVersionedMessageHandler(SerializerType.ProtocolBuffers, true)
                                          .On <TestEntityOne>(
                e =>
            {
                entityOne = e;
                return(Task.CompletedTask);
            })
                                          .On <TestEntityTwo>(
                typeof(TestEntityTwo).GetVersion(),
                e =>
            {
                entityTwo = e;
                return(Task.CompletedTask);
            })
                                          .Else(
                s =>
            {
                defaultValue = s;
                return(Task.CompletedTask);
            })
                                          .OnError(
                e =>
            {
                exception = e;
                return(Task.CompletedTask);
            });

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityTwo {
                    Value1 = "test", Value2 = new DateTime(2018, 1, 1)
                }.SerializeToString(),
                Version = typeof(TestEntityTwo).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            await versionedMessageHandler.PostAsync(versionedMessage).ConfigureAwait(false);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityOne, Is.Null);
            Assert.That(entityTwo, Is.Not.Null);
            Assert.That(defaultValue, Is.Null);
            Assert.That(exception, Is.Null);

            Assert.That(entityTwo.Value1, Is.EqualTo("test"));
            Assert.That(entityTwo.Value2, Is.EqualTo(new DateTime(2018, 1, 1)));
        }
        public void VersionedMessageHandler_WhenErrorAndThrowOnError_ExpectThrows()
        {
            // Arrange
            var versionedMessageHandler = new VersionedMessageHandler <TestEntityOne>(SerializerType.Json, true)
                                          .On <TestEntityOne>(e => throw new DivideByZeroException())
                                          .On <TestEntityTwo>(e => null)
                                          .Else(s => null)
                                          .OnError(
                e =>
            {
                return(null);
            });

            var versionedMessage = new VersionedMessage
            {
                Data    = new TestEntityOne().SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityOne).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();

            Assert.Throws <DivideByZeroException>(() => versionedMessageHandler.Post(versionedMessage));
            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);
        }
Ejemplo n.º 4
0
        public VersionedMessage assembleMessage(List <VersionedDocument> documents)
        {
            VersionedMessage vm = new VersionedMessage();

            //Length of messageId shall be 32 or less
            vm.messageId = GetUniqID();        //Guid.NewGuid().ToString().Substring(9);
            //Length of dealId shall be 32 or less
            vm.dealId = "CNTM-" + GetUniqID(); //Guid.NewGuid().ToString().Substring(9);
            //Length of sender shall be 76 or less
            vm.sender = _sender;
            //length of receiver shall be 42 or less
            vm.receiver  = _receiver;
            vm.timestamp = DateTime.Now;
            vm.format    = "FCXAPI";
            vm.version   = "1.1.0";
            //Length of transaction shall be 30 or less
            vm.transaction = _transaction; //"Submit to Lender";

            if (documents != null)
            {
                foreach (VersionedDocument doc in documents)
                {
                    doc.format   = "FCXAPI";
                    doc.mimetype = "base64Binary/xml";
                    doc.version  = "1.1.0";
                }
                vm.documents = documents.ToArray();
            }
            return(vm);
        }
        public async Task VersionedMessageHandler_WhenNoMatch_ExpectDefault()
        {
            // Arrange
            var entityOne    = default(TestEntityOne);
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new AsyncVersionedMessageHandler(SerializerType.Json, true)
                                          .On <TestEntityOne>(
                e =>
            {
                entityOne = e;
                return(Task.CompletedTask);
            })
                                          .On <TestEntityTwo>(
                e =>
            {
                entityTwo = e;
                return(Task.CompletedTask);
            })
                                          .Else(
                s =>
            {
                defaultValue = s;
                return(Task.CompletedTask);
            })
                                          .OnError(
                e =>
            {
                exception = e;
                return(Task.CompletedTask);
            });

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityThree {
                    Value1 = 25.3m
                }.SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityThree).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            await versionedMessageHandler.PostAsync(versionedMessage).ConfigureAwait(false);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityOne, Is.Null);
            Assert.That(entityTwo, Is.Null);
            Assert.That(defaultValue, Is.Not.Null);
            Assert.That(exception, Is.Null);

            Assert.That(defaultValue, Is.EqualTo("{\"Value1\":25.3}"));
        }
Ejemplo n.º 6
0
        public Response submitMessage(VersionedMessage versionedMessage)
        {
            getServiceCall().Timeout = 600000;
            Response response = fcxService.setMessage(versionedMessage);

            if (response != null && response.status != null && !"OK".Equals(response.status, StringComparison.CurrentCultureIgnoreCase))
            {//handle submission error}
            }
            return(response);
        }
Ejemplo n.º 7
0
        public async Task VersionedMessageHandler_WhenErrorAndNotThrowOnError_ExpectHandled()
        {
            // Arrange
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new AsyncVersionedMessageHandler <TestEntityOne>(SerializerType.Json, false)
                                          .On <TestEntityOne>(e => throw new DivideByZeroException())
                                          .On <TestEntityTwo>(
                e => Task.FromResult(
                    new TestEntityOne
            {
                Value2 = 5,
                Value1 = e.Value1,
            }))
                                          .Else(
                s =>
            {
                defaultValue = s;
                return(Task.FromResult(default(TestEntityOne)));
            })
                                          .OnError(
                e =>
            {
                exception = e;
                return(Task.FromResult(default(TestEntityOne)));
            });

            var versionedMessage = new VersionedMessage
            {
                Data    = new TestEntityOne().SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityOne).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            var rtn       = await versionedMessageHandler.PostAsync(versionedMessage).ConfigureAwait(false);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(rtn, Is.Null);
            Assert.That(defaultValue, Is.Null);
            Assert.That(exception, Is.Not.Null);

            Assert.That(exception.GetType(), Is.EqualTo(typeof(DivideByZeroException)));
        }
Ejemplo n.º 8
0
        public async Task VersionedMessageHandler_WhenNoMatch_ExpectDefault()
        {
            // Arrange
            var exception = default(Exception);

            var versionedMessageHandler = new AsyncVersionedMessageHandler <TestEntityOne>(SerializerType.Json, true)
                                          .On <TestEntityOne>(e => Task.FromResult(default(TestEntityOne)))
                                          .On <TestEntityTwo>(e => Task.FromResult(default(TestEntityOne)))
                                          .Else(
                s => Task.FromResult(new TestEntityOne
            {
                Value2 = 42,
                Value1 = "DEFAULT",
            }))
                                          .OnError(
                e =>
            {
                exception = e;
                return(Task.FromResult(default(TestEntityOne)));
            });

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityThree {
                    Value1 = 25.3m
                }.SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityThree).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            var rtn       = await versionedMessageHandler.PostAsync(versionedMessage).ConfigureAwait(false);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(exception, Is.Null);

            Assert.That(rtn.Value1, Is.EqualTo("DEFAULT"));
            Assert.That(rtn.Value2, Is.EqualTo(42));
        }
        public void VersionedMessageHandler_WhenNoMatch_ExpectDefault()
        {
            // Arrange
            var exception = default(Exception);

            var versionedMessageHandler = new VersionedMessageHandler <TestEntityOne>(SerializerType.Json, true)
                                          .On <TestEntityOne>(e => null)
                                          .On <TestEntityTwo>(e => null)
                                          .Else(s => new TestEntityOne {
                Value1 = "DEFAULT", Value2 = 5
            })
                                          .OnError(
                e =>
            {
                exception = e;
                return(null);
            });

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityThree {
                    Value1 = 25.3m
                }.SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityThree).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            var rtn       = versionedMessageHandler.Post(versionedMessage);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(exception, Is.Null);

            Assert.That(rtn.Value1, Is.EqualTo("DEFAULT"));
            Assert.That(rtn.Value2, Is.EqualTo(5));
        }
        public void VersionedMessageHandler_WhenVersionMatchOnFirst_ExpectAction()
        {
            // Arrange
            var entityOne    = default(TestEntityOne);
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new VersionedMessageHandler(SerializerType.ProtocolBuffers, true)
                                          .On <TestEntityOne>(e => entityOne = e)
                                          .On <TestEntityTwo>(e => entityTwo = e)
                                          .Else(s => defaultValue            = s)
                                          .OnError(e => exception            = e);

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityOne {
                    Value1 = "test", Value2 = 42
                }.SerializeToString(),
                Version = typeof(TestEntityOne).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();

            versionedMessageHandler.Post(versionedMessage);
            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityOne, Is.Not.Null);
            Assert.That(entityTwo, Is.Null);
            Assert.That(defaultValue, Is.Null);
            Assert.That(exception, Is.Null);

            Assert.That(entityOne.Value1, Is.EqualTo("test"));
            Assert.That(entityOne.Value2, Is.EqualTo(42));
        }
        public void VersionedMessageHandler_WhenVersionMatchOnSecond_ExpectAction()
        {
            // Arrange
            var exception = default(Exception);

            var versionedMessageHandler =
                new VersionedMessageHandler <TestEntityTwo>(SerializerType.ProtocolBuffers, true)
                .On <TestEntityOne>(e => null)
                .On <TestEntityTwo>(typeof(TestEntityTwo).GetVersion(), e => e)
                .Else(s => null)
                .OnError(
                    e =>
            {
                exception = e;
                return(null);
            });

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityTwo {
                    Value1 = "test", Value2 = new DateTime(2018, 1, 1)
                }.SerializeToString(),
                Version = typeof(TestEntityTwo).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            var rtn       = versionedMessageHandler.Post(versionedMessage);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(exception, Is.Null);

            Assert.That(rtn.Value1, Is.EqualTo("test"));
            Assert.That(rtn.Value2, Is.EqualTo(new DateTime(2018, 1, 1)));
        }
        public void VersionedMessageHandler_WhenNoMatch_ExpectDefault()
        {
            // Arrange
            var entityOne    = default(TestEntityOne);
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new VersionedMessageHandler(SerializerType.Json, true)
                                          .On <TestEntityOne>(e => entityOne = e)
                                          .On <TestEntityTwo>(e => entityTwo = e)
                                          .Else(s => defaultValue            = s)
                                          .OnError(e => exception            = e);

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityThree {
                    Value1 = 25.3m
                }.SerializeToString(SerializerType.Json),
                Version = typeof(TestEntityThree).GetVersion(),
            };

            // Act
            var stopwatch = Stopwatch.StartNew();

            versionedMessageHandler.Post(versionedMessage);
            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityOne, Is.Null);
            Assert.That(entityTwo, Is.Null);
            Assert.That(defaultValue, Is.Not.Null);
            Assert.That(exception, Is.Null);

            Assert.That(defaultValue, Is.EqualTo("{\"Value1\":25.3}"));
        }
Ejemplo n.º 13
0
        public async Task VersionedMessageHandler_WhenVersionMatchOnFirst_ExpectAction()
        {
            // Arrange
            var exception = default(Exception);

            var versionedMessageHandler = new AsyncVersionedMessageHandler <TestEntityOne>(SerializerType.ProtocolBuffers, true)
                                          .On <TestEntityOne>(Task.FromResult)
                                          .On <TestEntityTwo>(e => Task.FromResult(default(TestEntityOne)))
                                          .Else(e => Task.FromResult(default(TestEntityOne)))
                                          .OnError(
                e =>
            {
                exception = e;
                return(Task.FromResult(default(TestEntityOne)));
            });

            var versionedMessage = new VersionedMessage
            {
                Data = new TestEntityOne {
                    Value1 = "test", Value2 = 42
                }.SerializeToString(),
                Version = typeof(TestEntityOne).GetVersion(),
            };

            // Act
            var stopwatch     = Stopwatch.StartNew();
            var testEntityOne = await versionedMessageHandler.PostAsync(versionedMessage).ConfigureAwait(false);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(exception, Is.Null);

            Assert.That(testEntityOne.Value1, Is.EqualTo("test"));
            Assert.That(testEntityOne.Value2, Is.EqualTo(42));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Serializes the message.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns>
        /// The <see cref="string" />
        /// </returns>
        public string SerializeToString(VersionedMessage source)
        {
            var serializerType = this.serializerSettings.SerializerType;

            return(source.SerializeToString(serializerType));
        }