public void RelaySyncMessage()
        {
            StubServiceHost.FindDefaultService <ICalculatorService>()
            .Setup(s => s.Add(It.IsAny <XmlCalculatorRequest>()))
            .Returns(new StringStream(string.Format(CALCULATOR_RESPONSE_XML, 3)));

            ICalculatorService client = null;

            try
            {
                client = SimpleServiceClient <CalculatorService, ICalculatorService> .Create();

                var calculatorResult = client.Add(new XmlCalculatorRequest(CALCULATOR_REQUEST_XML));
                Assert.AreEqual(string.Format(CALCULATOR_RESPONSE_XML, 3), calculatorResult.RawXmlBody);
                client.Close();
            }
            catch (Exception)
            {
                if (client != null)
                {
                    client.Abort();
                }
                throw;
            }
        }
        public void RelayAsyncMessage()
        {
            StubServiceHost.FindDefaultService <ICalculatorService>()
            .Setup(s => s.BeginMultiply(It.IsAny <XmlCalculatorRequest>(), It.IsAny <AsyncCallback>(), It.IsAny <object>()))
            .Returns(new StringStream(string.Format(CALCULATOR_RESPONSE_XML, 2)));

            ICalculatorService client = null;

            try
            {
                client = SimpleServiceClient <CalculatorService, ICalculatorService> .Create();

                var calculatorResult = Task <XmlCalculatorResponse> .Factory
                                       .FromAsync(client.BeginMultiply, client.EndMultiply, new XmlCalculatorRequest(CALCULATOR_REQUEST_XML), null)
                                       .Result;

                Assert.AreEqual(string.Format(CALCULATOR_RESPONSE_XML, 2), calculatorResult.RawXmlBody);
                client.Close();
            }
            catch (Exception)
            {
                if (client != null)
                {
                    client.Abort();
                }
                throw;
            }
        }
        public void RelayCompositeMessage()
        {
            const string responseXml = "<CalculatorResponse xmlns=\"urn:services.stateless.be:unit:calculator\">" +
                                       "<s0:Result xmlns:s0=\"urn:services.stateless.be:unit:calculator\">one</s0:Result>" +
                                       "<s0:Result xmlns:s0=\"urn:services.stateless.be:unit:calculator\">two</s0:Result>" +
                                       "</CalculatorResponse>";

            StubServiceHost.FindDefaultService <ICalculatorService>()
            .Setup(s => s.Add(It.IsAny <XmlCalculatorRequest>()))
            .Returns(new StringStream(responseXml));

            ICalculatorService client = null;

            try
            {
                client = SimpleServiceClient <CalculatorService, ICalculatorService> .Create();

                var calculatorResult = client.Add(new XmlCalculatorRequest(CALCULATOR_REQUEST_XML));
                Assert.AreEqual(responseXml, calculatorResult.RawXmlBody);
                client.Close();
            }
            catch (Exception)
            {
                if (client != null)
                {
                    client.Abort();
                }
                throw;
            }
        }
Exemplo n.º 4
0
        public void RelaySyncInvalidMessageFails()
        {
            var client = SimpleServiceClient <CalculatorService, IValidatingCalculatorService> .Create();

            Assert.That(
                () => client.Add(new XlangCalculatorRequest(INVALID_CALCULATOR_REQUEST_XML)),
                Throws.TypeOf <FaultException <ExceptionDetail> >()
                .With.Property("Detail")
                .With.InnerException.InnerException.Message.Contains(
                    "The element 'Arguments' in namespace 'urn:services.stateless.be:unit:calculator' has invalid child element 'Operand' in namespace 'urn:services.stateless.be:unit:calculator'. "
                    + "List of possible elements expected: 'Term' in namespace 'urn:services.stateless.be:unit:calculator'"));
            client.Close();
        }
        public void RelaySyncMessageTimesOut()
        {
            StubServiceHost.FindDefaultService <ICalculatorService>()
            .Setup(s => s.Subtract(It.IsAny <XmlCalculatorRequest>()))
            .Callback(() => Thread.Sleep(3000))
            .Returns(new StringStream(string.Format(CALCULATOR_RESPONSE_XML, 1)));

            var client = SimpleServiceClient <CalculatorService, ICalculatorService> .Create();

            Assert.That(
                () => client.Subtract(new XmlCalculatorRequest(CALCULATOR_REQUEST_XML)),
                Throws.TypeOf <FaultException <ExceptionDetail> >()
                .With.Message.Contains("The request channel timed out while waiting for a reply"));
            client.Close();
        }
Exemplo n.º 6
0
        public void RelayAsyncInvalidMessageFails()
        {
            var client = SimpleServiceClient <CalculatorService, IValidatingCalculatorService> .Create();

            Assert.That(
                () => Task <XlangCalculatorResponse> .Factory
                .FromAsync(client.BeginMultiply, client.EndMultiply, new XlangCalculatorRequest(INVALID_CALCULATOR_REQUEST_XML), null)
                .Result,
                Throws.TypeOf <AggregateException>()
                .With.InnerException.TypeOf <FaultException <ExceptionDetail> >()
                .With.InnerException.Property("Detail")
                .With.InnerException.InnerException.Message.Contains(
                    "The element 'Arguments' in namespace 'urn:services.stateless.be:unit:calculator' has invalid child element 'Operand' in namespace 'urn:services.stateless.be:unit:calculator'. "
                    + "List of possible elements expected: 'Term' in namespace 'urn:services.stateless.be:unit:calculator'"));
            client.Close();
        }
        public void RelayAsyncMessageTimesOut()
        {
            StubServiceHost.FindDefaultService <ICalculatorService>()
            .Setup(s => s.BeginDivide(It.IsAny <XmlCalculatorRequest>(), It.IsAny <AsyncCallback>(), It.IsAny <object>()))
            .Callback(() => Thread.Sleep(3000))
            .Returns(new StringStream(string.Format(CALCULATOR_RESPONSE_XML, 2)));

            var client = SimpleServiceClient <CalculatorService, ICalculatorService> .Create();

            Assert.That(
                () => Task <XmlCalculatorResponse> .Factory
                .FromAsync(client.BeginDivide, client.EndDivide, new XmlCalculatorRequest(CALCULATOR_REQUEST_XML), null)
                .Result,
                Throws.TypeOf <AggregateException>()
                .With.InnerException.TypeOf <FaultException <ExceptionDetail> >()
                .With.InnerException.Message.Contains("has exceeded the allotted timeout"));
            client.Close();
        }
Exemplo n.º 8
0
        public void PerformSyncSucceeds()
        {
            StubServiceHost.FindDefaultService <IPerformService>()
            .Setup(s => s.Perform(It.IsAny <XlangCalculatorRequest>()));

            IPerformService client = null;

            try
            {
                var request = new XlangCalculatorRequest(CALCULATOR_REQUEST_XML);
                client = SimpleServiceClient <CalculatorService, IPerformService> .Create();

                client.Perform(request);
                client.Close();
            }
            catch (Exception)
            {
                if (client != null)
                {
                    client.Abort();
                }
                throw;
            }
        }