public void Create_InvalidContract_ParameterMismatch()
 {
     ExceptionHelper.ExpectInvalidOperationException(
         () => DomainServiceProxy.Create <IMockDomainServiceContract_InvalidParameters, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query)),
         string.Format(
             CultureInfo.CurrentCulture,
             Resource.DomainServiceProxyGenerator_OperationMismatch,
             typeof(IMockDomainServiceContract_InvalidParameters),
             "GetEntities"));
 }
 public void Create_InvalidDomainServiceAccessibility()
 {
     ExceptionHelper.ExpectArgumentException(
         () => DomainServiceProxy.Create <IMockDomainServiceContract_ValidAccessibility, MockDomainService_InvalidAccessibility>(new MockDomainServiceContext(DomainOperationType.Query)),
         string.Format(
             CultureInfo.CurrentCulture,
             Resource.DomainServiceProxyGenerator_ExpectedPublicType,
             typeof(MockDomainService_InvalidAccessibility)),
         "domainService");
 }
 public void Create_InvalidContract_Overloads()
 {
     ExceptionHelper.ExpectInvalidOperationException(
         () => DomainServiceProxy.Create <IMockDomainServiceContract_InvalidOverrides, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query)),
         string.Format(
             CultureInfo.CurrentCulture,
             Resource.DomainServiceProxyGenerator_OverridesNotSupported,
             typeof(IMockDomainServiceContract_InvalidOverrides),
             "GetEntities"));
 }
 public void Create_InvalidContractEvents()
 {
     ExceptionHelper.ExpectInvalidOperationException(
         () => DomainServiceProxy.Create <IMockDomainServiceContract_InvalidEvents, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query)),
         string.Format(
             CultureInfo.CurrentCulture,
             Resource.DomainServiceProxyGenerator_MethodCountMismatch,
             typeof(IMockDomainServiceContract_InvalidEvents),
             typeof(MockDomainService),
             "add_InvalidEvent, remove_InvalidEvent"));
 }
        public void AssociateOriginal_HelperMethod()
        {
            var proxy    = this.CreateMockDomainServiceProxy();
            var current  = new object();
            var original = new object();

            DomainServiceProxy.AssociateOriginal <object>(proxy, current, original);

            Assert.AreEqual(1, proxy.CurrentOriginalEntityMap.Count);
            Assert.AreSame(current, proxy.CurrentOriginalEntityMap.Keys.Single());
            Assert.AreSame(original, proxy.CurrentOriginalEntityMap.Values.Single());
        }
        public void Query_NoParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query));

            Assert.IsNull(this.OperationInvokedArgs);

            var result = proxy.GetEntities();

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.IsNotNull(result);
            Assert.IsTrue(MockDomainService.QueryReturnValue.SequenceEqual(result));
            Assert.AreEqual("GetEntities", this.OperationInvokedArgs.Name);
            Assert.AreEqual(0, this.OperationInvokedArgs.Parameters.Count);
        }
        public void Query_Singleton_NoParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query));

            Assert.IsNull(this.OperationInvokedArgs);

            var result = proxy.GetSingletonEntity();

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.IsNotNull(result);
            Assert.AreSame(MockDomainService.QueryReturnValue.First(), result);
            Assert.AreEqual("GetSingletonEntity", this.OperationInvokedArgs.Name);
            Assert.AreEqual(0, this.OperationInvokedArgs.Parameters.Count);
        }
        public void Insert()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Submit));

            Assert.IsNull(this.OperationInvokedArgs);

            var entity = proxy.GetSingletonEntity();

            proxy.InsertEntity(entity);
            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.AreEqual("InsertEntity", this.OperationInvokedArgs.Name);
            Assert.AreEqual(1, this.OperationInvokedArgs.Parameters.Count);
            Assert.AreSame(entity, this.OperationInvokedArgs.Parameters.Values.Single());
        }
        public void Query_ContinuableOperationError()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query));

            Assert.IsNull(this.OperationInvokedArgs);


            var ex = ExceptionHelper.ExpectException <OperationException>(
                () => proxy.GetEntitiesWithParams("abc", 499, 501, new Uri("http://param4", UriKind.Absolute)),
                Resource.DomainServiceProxy_OperationError);

            Assert.AreEqual(1, ex.OperationErrors.Count());
            Assert.AreEqual(@"The field param1 must match the regular expression '\d{1,3}'.", ex.OperationErrors.Single().Message);
        }
        public void InvokeOperation_NoParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Invoke));

            Assert.IsNull(this.OperationInvokedArgs);

            var result = proxy.InvokeOperation();

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.AreEqual(123, result);

            Assert.AreEqual("InvokeOperation", this.OperationInvokedArgs.Name);
            Assert.AreEqual(0, this.OperationInvokedArgs.Parameters.Count);
        }
        public void Custom_NoParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Submit));

            Assert.IsNull(this.OperationInvokedArgs);

            var entity = proxy.GetSingletonEntity();

            proxy.CustomMethod(entity);

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.AreEqual("CustomMethod", this.OperationInvokedArgs.Name);
            Assert.AreEqual(1, this.OperationInvokedArgs.Parameters.Count);
            Assert.AreSame(entity, this.OperationInvokedArgs.Parameters["entity"]);
        }
        public void Custom_ContinuableOperationError()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Submit));

            Assert.IsNull(this.OperationInvokedArgs);

            var entity = proxy.GetSingletonEntity();

            entity.Name = "ThrowError";

            var ex = ExceptionHelper.ExpectException <OperationException>(
                () => proxy.CustomMethod(entity),
                Resource.DomainServiceProxy_OperationError);

            Assert.AreEqual(1, ex.OperationErrors.Count());
            Assert.AreEqual("ThrowError", ex.OperationErrors.Single().Message);
        }
        public void AssociateOriginal_HelperMethod_NullParameters()
        {
            // Null proxy argument
            ExceptionHelper.ExpectArgumentNullException(
                () => DomainServiceProxy.AssociateOriginal <object>(null, new object(), new object()),
                "domainServiceProxy");

            // Null current argument
            ExceptionHelper.ExpectArgumentNullException(
                () => DomainServiceProxy.AssociateOriginal <object>(new object(), null, new object()),
                "current");

            // Null original argument
            ExceptionHelper.ExpectArgumentNullException(
                () => DomainServiceProxy.AssociateOriginal <object>(new object(), new object(), null),
                "original");
        }
        public void InvokeOperation_WithParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Invoke));

            Assert.IsNull(this.OperationInvokedArgs);

            var result = proxy.InvokeOperationWithParams(123, new[] { "a", "b", "c" }, null, null);

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.AreEqual("123", result);

            Assert.AreEqual("InvokeOperationWithParams", this.OperationInvokedArgs.Name);
            Assert.AreEqual(4, this.OperationInvokedArgs.Parameters.Count);
            Assert.AreEqual((long)123, this.OperationInvokedArgs.Parameters["param1"]);
            Assert.AreEqual("abc", string.Join("", (string[])this.OperationInvokedArgs.Parameters["param2"]));
            Assert.AreEqual(null, this.OperationInvokedArgs.Parameters["param3"]);
            Assert.AreEqual(null, this.OperationInvokedArgs.Parameters["param4"]);
        }
        public void Custom_WithParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Submit));

            Assert.IsNull(this.OperationInvokedArgs);

            var entity = proxy.GetSingletonEntity();

            proxy.CustomMethodWithParams(entity, 123, new[] { "1", "2", "3" }, null, new Uri("http://param4", UriKind.Absolute));

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.AreEqual("CustomMethodWithParams", this.OperationInvokedArgs.Name);
            Assert.AreEqual(5, this.OperationInvokedArgs.Parameters.Count);
            Assert.AreSame(entity, this.OperationInvokedArgs.Parameters["entity"]);
            Assert.AreEqual((long)123, this.OperationInvokedArgs.Parameters["param1"]);
            Assert.AreEqual("123", string.Join("", (string[])this.OperationInvokedArgs.Parameters["param2"]));
            Assert.AreEqual(null, this.OperationInvokedArgs.Parameters["param3"]);
            Assert.AreEqual("http://param4", ((Uri)this.OperationInvokedArgs.Parameters["param4"]).OriginalString);
        }
        public void Query_Singleton_WithParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query));

            Assert.IsNull(this.OperationInvokedArgs);

            var result = proxy.GetSingletonEntityWithParams("param1", 2, 3, new Uri("http://param4", UriKind.Absolute));

            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.IsNotNull(result);
            Assert.AreSame(MockDomainService.QueryReturnValue.First(), result);
            Assert.AreEqual("GetSingletonEntityWithParams", this.OperationInvokedArgs.Name);

            // Verify parameters
            Assert.AreEqual(4, this.OperationInvokedArgs.Parameters.Count);
            Assert.AreEqual("param1", this.OperationInvokedArgs.Parameters["param1"]);
            Assert.AreEqual(2, this.OperationInvokedArgs.Parameters["param2"]);
            Assert.AreEqual((long)3, this.OperationInvokedArgs.Parameters["param3"]);
            Assert.AreEqual("http://param4", ((Uri)this.OperationInvokedArgs.Parameters["param4"]).OriginalString);
        }
        public void Query_WithParams()
        {
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query));

            Assert.IsNull(this.OperationInvokedArgs);

            var result = proxy.GetEntitiesWithParams("123", 499, 501, new Uri("http://param4", UriKind.Absolute));

            // Verify results
            Assert.IsNotNull(this.OperationInvokedArgs);
            Assert.IsNotNull(result);
            Assert.IsTrue(MockDomainService.QueryReturnValue.SequenceEqual(result));
            Assert.AreEqual("GetEntitiesWithParams", this.OperationInvokedArgs.Name);

            // Verify parameters
            Assert.AreEqual(4, this.OperationInvokedArgs.Parameters.Count);
            Assert.AreEqual("123", this.OperationInvokedArgs.Parameters["param1"]);
            Assert.AreEqual(499, this.OperationInvokedArgs.Parameters["param2"]);
            Assert.AreEqual((long)501, this.OperationInvokedArgs.Parameters["param3"]);
            Assert.AreEqual("http://param4", ((Uri)this.OperationInvokedArgs.Parameters["param4"]).OriginalString);
        }
        public void Create_DomainServiceContext()
        {
            var context = new MockDomainServiceContext(DomainOperationType.Query);

            // Create proxy, verify it's not null.
            var proxy = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(context);

            Assert.IsNotNull(proxy);

            // Examine its Context property
            PropertyInfo         contextProp  = proxy.GetType().GetProperty("Context");
            DomainServiceContext proxyContext = (DomainServiceContext)contextProp.GetGetMethod().Invoke(proxy, null);

            Assert.AreSame(context, proxyContext);

            // Examine its DomainServiceType property
            PropertyInfo typeProp  = proxy.GetType().GetProperty("DomainServiceType");
            Type         proxyType = (Type)typeProp.GetGetMethod().Invoke(proxy, null);

            Assert.AreEqual(typeof(MockDomainService), proxyType);
        }
Beispiel #19
0
        /// <summary>
        ///     Start
        /// </summary>
        public bool Start()
        {
            Task.Run(() =>
            {
                Channel.ExchangeDeclare(
                    exchange: TimingConfig.DeadLetterExchange,
                    type: "direct");

                Channel.QueueDeclare(queue: TimingConfig.ReceiveQueueName,
                                     durable: true,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null);

                Channel.QueueBind(
                    queue: TimingConfig.ReceiveQueueName,
                    exchange: TimingConfig.DeadLetterExchange,
                    routingKey: TimingConfig.DeadLetterRoutingKey);

                //回调,当consumer收到消息后会执行该函数
                var consumer       = new EventingBasicConsumer(Channel);
                consumer.Received += (model, ea) =>
                {
                    var body    = ea.Body;
                    var content = Encoding.UTF8.GetString(body);
                    var message = JsonConvert.DeserializeObject <Message>(content);
                    var proxy   = new DomainServiceProxy(
                        IocManager.Instance.ResolveName <IDomainService>(message.DomainService.FullName),
                        Bus);
                    proxy.Execute(message);
                };

                Channel.BasicConsume(queue: TimingConfig.ReceiveQueueName,
                                     autoAck: true,
                                     consumer: consumer);
            });

            return(true);
        }
 public static void Callback_MediumTrust_Proxies()
 {
     var proxy   = DomainServiceProxy.Create <IMockDomainServiceContract, MockDomainService>(new MockDomainServiceContext(DomainOperationType.Query));
     var results = proxy.GetEntities();
 }