public void SetUp()
        {
            _objectFactory = MockRepository.GenerateStub<ObjectFactory>();
            _metadata = MockRepository.GenerateStub<Metadata>();
            _parametersParser = MockRepository.GenerateStub<ParametersParser>();
            _target = new DirectHandler(_objectFactory, _metadata, _parametersParser);

            _metadata.Stub(x => x.GetActionType("Action")).Return(typeof(Action));
            _metadata.Stub(x => x.GetMethodInfo("Action", "method")).Return(typeof(Action).GetMethod("Method"));
            _metadata.Stub(x => x.GetMethodInfo("Action", "methodWithParams")).Return(typeof(Action).GetMethod("MethodWithParams"));
            _metadata.Stub(x => x.GetMethodInfo("Action", "methodThatThrowException")).Return(typeof(Action).GetMethod("MethodThatThrowException"));
            _metadata.Stub(x => x.GetMethodInfo("Action", "methodWithRawParameters")).Return(typeof(Action).GetMethod("MethodWithRawParameters"));
        }
Exemplo n.º 2
0
        public void Should_return_null_result_if_interceptor_does_not_invoke_handler()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, delegate { });

            DirectResponse actual = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "methodThatThrowException",
                JsonData = new JArray(),
                Tid      = 123,
                Type     = "rpc"
            });

            actual.Type.Should().Be.EqualTo("rpc");
            actual.Result.Should().Be.Null();
        }
Exemplo n.º 3
0
        public void Should_call_interceptor_with_expected_parameters()
        {
            var       parametersParser         = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata                 = BuildMockMetadata();
            var       directHandlerInterceptor = MockRepository.GenerateMock <DirectHandlerInterceptor>();
            var       target = new DirectHandler(metadata, parametersParser, directHandlerInterceptor);

            directHandlerInterceptor.Expect(x => x.Invoke(Arg <Type> .Is.Same(typeof(Action)), Arg <MethodInfo> .Is.Same(typeof(Action).GetMethod("Method")), Arg <DirectHandlerInvoker> .Is.Anything));

            target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "method",
                JsonData = new JArray()
            });

            directHandlerInterceptor.VerifyAllExpectations();
        }
Exemplo n.º 4
0
        public void Should_call_interceptor_with_expected_parameters()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var directHandlerInterceptor = MockRepository.GenerateMock<DirectHandlerInterceptor>();
            var target = new DirectHandler(metadata, parametersParser, directHandlerInterceptor);

            directHandlerInterceptor.Expect(x => x.Invoke(Arg<Type>.Is.Same(typeof(Action)), Arg<MethodInfo>.Is.Same(typeof(Action).GetMethod("Method")), Arg<DirectHandlerInvoker>.Is.Anything));

            target.Handle(new DirectRequest {
                Action = "Action",
                Method = "method",
                JsonData = new JArray()
            });

            directHandlerInterceptor.VerifyAllExpectations();
        }
Exemplo n.º 5
0
        public void Should_return_error_when_fail_to_get_methodinfo()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, (type, info, invoker) => invoker.Invoke());

            metadata.Stub(x => x.GetMethodInfo("Action", "nonExistentMethod")).Throw(new Exception("Method not found"));

            DirectResponse response = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "nonExistentMethod",
                JsonData = new JArray()
            });

            response.Result.Should().Be.Null();
            response.Type.Should().Be.EqualTo("exception");
            response.Message.Should().Be.EqualTo("Method not found");
            response.Where.Should().Contain("Method not found");
        }
Exemplo n.º 6
0
        public void Should_invoke_expected_method_passing_parameters_and_returning_result()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       actionInstance   = MockRepository.GenerateMock <Action>();
            var       target           = new DirectHandler(metadata, parametersParser, (type, method, invoker) => invoker.Invoke(actionInstance));

            parametersParser.Stub(x => x.Parse(Arg <ParameterInfo[]> .Is.Anything, Arg <JToken> .Is.Anything, Arg <IDictionary <string, object> > .Is.Anything, Arg <JsonSerializer> .Is.Anything)).Return(new object[] { 123, "str", true });
            actionInstance.Expect(x => x.MethodWithParams(123, "str", true)).Return("ret");

            DirectResponse response = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "methodWithParams",
                JsonData = new JArray(new JValue(123), new JValue("str"), new JValue(true))
            });

            response.Result.ToString().Should().Be.EqualTo("ret");

            actionInstance.VerifyAllExpectations();
        }
Exemplo n.º 7
0
        public void Should_return_error_if_interceptor_throws_exceptions()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, delegate {
                throw new Exception("error from interceptor");
            });

            DirectResponse actual = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "method",
                JsonData = new JArray(),
                Tid      = 123,
                Type     = "rpc"
            });

            actual.Type.Should().Be.EqualTo("exception");
            actual.Message.Should().Be.EqualTo("error from interceptor");
            actual.Where.Should().Contain("error from interceptor");
        }
Exemplo n.º 8
0
        public void Should_use_actioninstance_from_interceptor()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            var       actionInstance   = MockRepository.GenerateMock <Action>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, delegate(Type type, MethodInfo method, DirectHandlerInvoker invoker) {
                invoker.Invoke(actionInstance);
            });

            actionInstance.Expect(x => x.Method());

            target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "method",
                JsonData = new JArray(),
                Tid      = 123,
                Type     = "rpc"
            });

            actionInstance.VerifyAllExpectations();
        }
Exemplo n.º 9
0
        public void Should_build_response_based_on_request_data()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, (type, info, invoker) => invoker.Invoke());

            DirectResponse actual = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "method",
                JsonData = new JArray(),
                Tid      = 123,
                Type     = "rpc"
            });

            actual.Action.Should().Be.EqualTo("Action");
            actual.Method.Should().Be.EqualTo("method");
            actual.Tid.Should().Be.EqualTo(123);
            actual.Type.Should().Be.EqualTo("rpc");
            actual.Message.Should().Be.Null();
            actual.Where.Should().Be.Null();
            actual.Result.Should().Be.Null();
        }
Exemplo n.º 10
0
        public void Should_return_error_when_fail_to_parse_parameters()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, (type, info, invoker) => invoker.Invoke());

            var actionInstance = MockRepository.GenerateMock <Action>();

            actionInstance.Expect(x => x.MethodWithRawParameters(Arg <JToken> .Matches(y => y.ToString() == "value"))).Return(new JValue("ret"));
            parametersParser.Stub(x => x.Parse(Arg <ParameterInfo[]> .Is.Anything, Arg <JToken> .Is.Anything, Arg <IDictionary <string, object> > .Is.Anything, Arg <JsonSerializer> .Is.Anything)).Throw(new Exception("stubexc"));

            DirectResponse response = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "method",
                JsonData = new JArray()
            });

            response.Result.Should().Be.Null();
            response.Type.Should().Be.EqualTo("exception");
            response.Message.Should().Be.EqualTo("stubexc");
            response.Where.Should().Contain("stubexc");
        }
Exemplo n.º 11
0
        public void Should_build_expected_response_when_target_method_throws_exception()
        {
            var       parametersParser = MockRepository.GenerateStub <ParametersParser>();
            IMetadata metadata         = BuildMockMetadata();
            var       target           = new DirectHandler(metadata, parametersParser, (type, method, invoker) => invoker.Invoke());

            DirectResponse actual = target.Handle(new DirectRequest {
                Action   = "Action",
                Method   = "methodThatThrowException",
                JsonData = new JArray(),
                Tid      = 123,
                Type     = "rpc"
            });

            actual.Action.Should().Be.EqualTo("Action");
            actual.Method.Should().Be.EqualTo("methodThatThrowException");
            actual.Tid.Should().Be.EqualTo(123);
            actual.Type.Should().Be.EqualTo("exception");
            actual.Message.Should().Be.EqualTo("something wrong happened");
            actual.Where.Should().Contain("something wrong happened");
            actual.Result.Should().Be.Null();
        }
Exemplo n.º 12
0
        public void Should_build_response_based_on_request_data()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, (type, info, invoker) => invoker.Invoke());

            DirectResponse actual = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "method",
                JsonData = new JArray(),
                Tid = 123,
                Type = "rpc"
            });

            actual.Action.Should().Be.EqualTo("Action");
            actual.Method.Should().Be.EqualTo("method");
            actual.Tid.Should().Be.EqualTo(123);
            actual.Type.Should().Be.EqualTo("rpc");
            actual.Message.Should().Be.Null();
            actual.Where.Should().Be.Null();
            actual.Result.Should().Be.Null();
        }
Exemplo n.º 13
0
        public void Should_build_expected_response_when_target_method_throws_exception()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, (type, method, invoker) => invoker.Invoke());

            DirectResponse actual = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "methodThatThrowException",
                JsonData = new JArray(),
                Tid = 123,
                Type = "rpc"
            });

            actual.Action.Should().Be.EqualTo("Action");
            actual.Method.Should().Be.EqualTo("methodThatThrowException");
            actual.Tid.Should().Be.EqualTo(123);
            actual.Type.Should().Be.EqualTo("exception");
            actual.Message.Should().Be.EqualTo("something wrong happened");
            actual.Where.Should().Contain("something wrong happened");
            actual.Result.Should().Be.Null();
        }
Exemplo n.º 14
0
        public void Should_return_error_if_interceptor_throws_exceptions()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, delegate {
                throw new Exception("error from interceptor");
            });

            DirectResponse actual = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "method",
                JsonData = new JArray(),
                Tid = 123,
                Type = "rpc"
            });

            actual.Type.Should().Be.EqualTo("exception");
            actual.Message.Should().Be.EqualTo("error from interceptor");
            actual.Where.Should().Contain("error from interceptor");
        }
Exemplo n.º 15
0
        public void Should_invoke_expected_method_passing_parameters_and_returning_result()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var actionInstance = MockRepository.GenerateMock<Action>();
            var target = new DirectHandler(metadata, parametersParser, (type, method, invoker) => invoker.Invoke(actionInstance));

            parametersParser.Stub(x => x.Parse(Arg<ParameterInfo[]>.Is.Anything, Arg<JToken>.Is.Anything, Arg<IDictionary<string, object>>.Is.Anything, Arg<JsonSerializer>.Is.Anything)).Return(new object[] { 123, "str", true });
            actionInstance.Expect(x => x.MethodWithParams(123, "str", true)).Return("ret");

            DirectResponse response = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "methodWithParams",
                JsonData = new JArray(new JValue(123), new JValue("str"), new JValue(true))
            });

            response.Result.ToString().Should().Be.EqualTo("ret");

            actionInstance.VerifyAllExpectations();
        }
Exemplo n.º 16
0
        public void Should_return_error_when_fail_to_get_methodinfo()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, (type, info, invoker) => invoker.Invoke());

            metadata.Stub(x => x.GetMethodInfo("Action", "nonExistentMethod")).Throw(new Exception("Method not found"));

            DirectResponse response = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "nonExistentMethod",
                JsonData = new JArray()
            });

            response.Result.Should().Be.Null();
            response.Type.Should().Be.EqualTo("exception");
            response.Message.Should().Be.EqualTo("Method not found");
            response.Where.Should().Contain("Method not found");
        }
Exemplo n.º 17
0
        public void Should_use_actioninstance_from_interceptor()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            var actionInstance = MockRepository.GenerateMock<Action>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, delegate(Type type, MethodInfo method, DirectHandlerInvoker invoker) {
                invoker.Invoke(actionInstance);
            });

            actionInstance.Expect(x => x.Method());

            target.Handle(new DirectRequest {
                Action = "Action",
                Method = "method",
                JsonData = new JArray(),
                Tid = 123,
                Type = "rpc"
            });

            actionInstance.VerifyAllExpectations();
        }
Exemplo n.º 18
0
        public void Should_return_null_result_if_interceptor_does_not_invoke_handler()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, delegate { });

            DirectResponse actual = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "methodThatThrowException",
                JsonData = new JArray(),
                Tid = 123,
                Type = "rpc"
            });

            actual.Type.Should().Be.EqualTo("rpc");
            actual.Result.Should().Be.Null();
        }
Exemplo n.º 19
0
        public void Should_return_error_when_fail_to_parse_parameters()
        {
            var parametersParser = MockRepository.GenerateStub<ParametersParser>();
            IMetadata metadata = BuildMockMetadata();
            var target = new DirectHandler(metadata, parametersParser, (type, info, invoker) => invoker.Invoke());

            var actionInstance = MockRepository.GenerateMock<Action>();
            actionInstance.Expect(x => x.MethodWithRawParameters(Arg<JToken>.Matches(y => y.ToString() == "value"))).Return(new JValue("ret"));
            parametersParser.Stub(x => x.Parse(Arg<ParameterInfo[]>.Is.Anything, Arg<JToken>.Is.Anything, Arg<IDictionary<string, object>>.Is.Anything, Arg<JsonSerializer>.Is.Anything)).Throw(new Exception("stubexc"));

            DirectResponse response = target.Handle(new DirectRequest {
                Action = "Action",
                Method = "method",
                JsonData = new JArray()
            });

            response.Result.Should().Be.Null();
            response.Type.Should().Be.EqualTo("exception");
            response.Message.Should().Be.EqualTo("stubexc");
            response.Where.Should().Contain("stubexc");
        }