Beispiel #1
0
        public void ProcessCall(ISocketWrapper socketWrapper)
        {
            var result = socketWrapper.PeekToString(9);

            Exception caughtException = null;

            // TODO: Add exception handlers for custom exceptions and pass
            //       the exceptions to the respective return processor
            //       Ex: BadRequestException -> HttpBadRequestReturnController
            try
            {
                IHttpCallProcessor callProcessor = VerifyAndExtractProcessor(result);
                callProcessor.ProcessCall(socketWrapper);
            }
            catch (Exception ex)
            {
                if (_exceptionHandler.HasResponse(ex.GetType().Name) == false)
                {
                    throw;
                }
                caughtException = ex;
            }

            IHttpResponse response = null;

            if (caughtException != null)
            {
                response = _exceptionHandler.GetResponseFromException(caughtException);
            }
        }
        public void RegisterCallProcessor_With_Null_Or_Null_Key_Throws()
        {
            // Arrange
            IHttpCallProcessor processor = MockRepository.GenerateStub <IHttpCallProcessor>();

            // Act
            // Assert
            Assert.Throws <NullReferenceException>(() => _controller.RegisterCallProcessor(null));
            Assert.Throws <ArgumentNullException>(() => _controller.RegisterCallProcessor(processor));
        }
Beispiel #3
0
        public void Init()
        {
            _mockResponseHandler = MockRepository.GenerateStub <IExceptionResponseHandler>();
            _controller          = new HttpCallController(_mockResponseHandler);

            _mockProcessor = MockRepository.GenerateStub <IHttpCallProcessor>();
            _mockProcessor.Stub(s => s.Method).Return("TEST");
            _controller.RegisterCallProcessor(_mockProcessor);

            _mockWrapper = MockRepository.GenerateStub <INetworkStreamWrapper>();
        }
        public void RegisterCallProcessor_Adding_Same_Twice_Throws_ArgumentException()
        {
            // Arrange
            IHttpCallProcessor processor = MockRepository.GenerateStub <IHttpCallProcessor>();

            processor.Stub(s => s.Method).Return("TEST");

            // Act
            _controller.RegisterCallProcessor(processor);

            // Assert
            Assert.Throws <ArgumentException>(() => _controller.RegisterCallProcessor(processor));
        }
        public void RegisterCallProcessor_With_A_Call_Processor_Adds_Processor()
        {
            // Arrange
            IHttpCallProcessor processor = MockRepository.GenerateStub <IHttpCallProcessor>();

            processor.Stub(s => s.Method).Return("TEST");
            var preRegisterProcessorCount = _controller.CallProcessors.Count();

            // Act
            _controller.RegisterCallProcessor(processor);
            var postRegisterProceessorCount = _controller.CallProcessors.Count();

            // Assert
            Assert.AreEqual(0, preRegisterProcessorCount);
            Assert.AreEqual(1, postRegisterProceessorCount);
            Assert.AreSame(processor, _controller.CallProcessors.First().Value);
        }
Beispiel #6
0
        public void ProcessCall(INetworkStreamWrapper socketWrapper)
        {
            var result = socketWrapper.PeekToString(9);

            Exception     caughtException = null;
            IHttpResponse response        = null;

            try
            {
                IHttpCallProcessor callProcessor = VerifyAndExtractProcessor(result);
                response = callProcessor.ProcessCall(socketWrapper);
            }
            catch (Exception ex)
            {
                if (_exceptionHandler.HasResponse(ex.GetType().Name) == false)
                {
                    throw;
                }
                response = _exceptionHandler.GetResponseFromException(caughtException);
            }

            SendResponse(response, socketWrapper);
        }
Beispiel #7
0
 public void RegisterCallProcessor(IHttpCallProcessor callProcessor)
 {
     _callProcessors.Add(callProcessor.Method, callProcessor);
 }