public void CanRetrieveSimpleResourceDetails()
        {
            using (var host = new InMemoryHost(new SampleApi.Configuration()))
            {
                var request = new InMemoryRequest
                {
                    Uri        = new Uri("http://localhost/api-docs/simple"),
                    HttpMethod = "GET",
                    Entity     = { ContentType = MediaType.Json }
                };

                request.Entity.Headers["Accept"] = "application/json";

                var response   = host.ProcessRequest(request);
                var statusCode = response.StatusCode;
                Assert.AreEqual(200, statusCode);

                Assert.IsTrue(response.Entity.ContentLength > 0);

                response.Entity.Stream.Seek(0, SeekOrigin.Begin);

                var serializer      = new DataContractJsonSerializer(typeof(ResourceDetails));
                var resourceDetails = (ResourceDetails)serializer.ReadObject(response.Entity.Stream);

                Assert.IsNotNull(resourceDetails);
            }
        }
Beispiel #2
0
        public void Create_server_and_issue_a_get_request()
        {
            using (var host = new InMemoryHost(new OpenRastaConfiguration()))
            {
                var request = new InMemoryRequest()
                {
                    Uri        = new Uri("http://localhost/10000/refData"),
                    HttpMethod = "GET"
                };

                // set up code formats

                request.Entity.ContentType       = MediaType.Json;
                request.Entity.Headers["Accept"] = "application/json";

                // send the request and save the resulting response
                var response   = host.ProcessRequest(request);
                int statusCode = response.StatusCode;

                // deserialize the content from the response

                if (response.Entity.ContentLength > 0)
                {
                    // rewind the stream, as OpenRasta won't do this
                    response.Entity.Stream.Seek(0, SeekOrigin.Begin);

                    var serializer =
                        new DataContractJsonSerializer(typeof(RefData));

                    refData = (RefData)serializer.ReadObject(response.Entity.Stream);
                }
            }
        }
Beispiel #3
0
        private IResponse ProcessRequest(InMemoryHost x)
        {
            IResponse response = x.ProcessRequest(BuildRequest());

            response.Entity.Stream.Seek(0, SeekOrigin.Begin);
            return(response);
        }
Beispiel #4
0
        public void Ensure_that_error_handling_works_for_put()
        {
            // Override the config to give it a broken logger

            /*var mockLogger = new Mock<ILog>();
             * mockLogger.Setup(s => s.Debug(It.Is<string>(m => m.Contains("Entering ConfigHandler"))))
             *  .Throws(new ApplicationException("ha ha!"));*/

            _mockFileSystem = (new MockFileSystemProvider()).MockFileSystem;
            _repository     = new DurableMemoryRepository <ConfigRoot>(DataPath, _mockFileSystem.Object);

            var container = new Container();

            container.Configure(x =>
            {
                x.For <IRepository <IJsonEntity <ConfigRoot> > >().Singleton().Use(_repository);
                //x.For<ILog>().Singleton().Use(mockLogger.Object);
            });

            _host = new InMemoryHost(new Configuration(container));

            var configRoot = new ConfigRoot
            {
                ComponentName = "tabOuli",
                Data          = new ConfigNode
                {
                    Name     = "tabouli",
                    Value    = "tomatoes",
                    Children =
                        new List <ConfigNode> {
                        new ConfigNode {
                            Name = "Side", Value = "Rice"
                        }
                    }
                }
            };

            IRequest request = new InMemoryRequest
            {
                HttpMethod = "PUT",
                Uri        = new Uri("http://localhost/Config/tacos")
            };

            request.Headers["Content-Type"] = "application/json";
            var length = WriteConfigRootToStream(request.Entity.Stream, configRoot);

            request.Headers["Content-Length"] = length.ToString(CultureInfo.InvariantCulture);

            var response = _host.ProcessRequest(request);

            Assert.AreEqual(500, response.StatusCode);
        }
        public IResponse ExecuteRequest(IClientRequest request)
        {
            if (request.Entity.Stream.Length > 0)
            {
                request.Entity.Stream.Position = 0;
            }
            var response = _host.ProcessRequest(request);

            if (response.StatusCode == 303)
            {
                response = RedirectOn303SeeOther(response);
            }
            else if (response.StatusCode == 401)
            {
                response = RetryWithHttpAuthenticationCredentials(request, response);
            }

            if (response.Entity.ContentLength > 0 && response.Entity.Stream.CanSeek)
            {
                response.Entity.Stream.Position = 0;
            }
            return(response);
        }
Beispiel #6
0
        public void Missing_registration_throws_exception()
        {
            var container = new Container();

            _host = new InMemoryHost(new Configuration(container));

            IRequest request = new InMemoryRequest
            {
                HttpMethod = "GET",
                Uri        = new Uri("http://localhost/Config/tacos")
            };

            var response = _host.ProcessRequest(request);

            Assert.AreEqual(500, response.StatusCode);
        }
Beispiel #7
0
        protected void when_executing_request(string uri)
        {
            _host = new InMemoryHost(_configuration);
            _host.Resolver.AddDependencyInstance(typeof(caching), this, DependencyLifetime.Singleton);
            var request = new InMemoryRequest
            {
                HttpMethod = _method,
                Uri        = new Uri(new Uri("http://localhost"), new Uri(uri, UriKind.RelativeOrAbsolute))
            };

            foreach (var kv in _requestHeaders)
            {
                request.Headers.Add(kv);
            }
            response = _host.ProcessRequest(request);
        }
        protected void when_executing_request(string uri)
        {
            _host = new InMemoryHost(_configuration, startup: new StartupProperties()
            {
                OpenRasta = { Errors = { HandleAllExceptions = false, HandleCatastrophicExceptions = false } }
            });
            _host.Resolver.AddDependencyInstance(typeof(caching), this, DependencyLifetime.Singleton);
            var request = new InMemoryRequest
            {
                HttpMethod = _method,
                Uri        = new Uri(new Uri("http://localhost"), new Uri(uri, UriKind.RelativeOrAbsolute))
            };

            foreach (var kv in _requestHeaders)
            {
                request.Headers.Add(kv);
            }
            response = _host.ProcessRequest(request);
        }
Beispiel #9
0
        public void Get_component_list_returns_list()
        {
            var entity = _repository.Create();

            entity.Contents = new ConfigRoot
            {
                ComponentName = "tacos",
                Data          = new ConfigNode {
                    Name = "host", Value = "tortilla"
                }
            };
            _repository.Add(entity);
            _repository.Save();

            IRequest request = new InMemoryRequest
            {
                HttpMethod = "GET",
                Uri        = new Uri("http://localhost/Config")
            };

            var response = _host.ProcessRequest(request);
            var data     = GetStringListFromResponseStream(response.Entity.Stream);

            Assert.AreEqual(200, response.StatusCode);
            Assert.AreEqual("tacos", data.ToArray()[0]);
        }