Esempio n. 1
0
        public void ShouldAllowRegistrationByPassingTypeToRegisterMethod()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register(typeof(Quote));
            uriFactory.Register(typeof(OrderForm));

            Assert.AreEqual(new Uri("http://restbucks.com/quote/1234"), uriFactory.CreateAbsoluteUri<Quote>(new Uri("http://restbucks.com"), 1234));
            Assert.AreEqual(new Uri("order-form/1234", UriKind.Relative), uriFactory.CreateRelativeUri<OrderForm>(1234));
            Assert.AreEqual(new Uri("http://restbucks.com/"), uriFactory.CreateBaseUri<Quote>(new Uri("http://restbucks.com/quote/1234")));
        }
        public void ShouldAllowRegistrationByPassingTypeToRegisterMethod()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register(typeof(Treasure));
            uriFactory.Register(typeof(Monster));

            Assert.AreEqual(new Uri("http://restinpractice.com/treasures/1234"), uriFactory.CreateAbsoluteUri<Treasure>(new Uri("http://restinpractice.com"), 1234));
            Assert.AreEqual(new Uri("monsters/1234", UriKind.Relative), uriFactory.CreateRelativeUri<Monster>(1234));
            Assert.AreEqual(new Uri("http://restinpractice.com/"), uriFactory.CreateBaseUri<Treasure>(new Uri("http://restinpractice.com/treasures/1234")));
        }
        public void ShouldReturnUriTemplateValueForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<Monster>();

            Assert.AreEqual("{id}", uriFactory.GetUriTemplateValue<Monster>());
        }
        public void ShouldReturnRoutePrefixForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<Monster>();

            Assert.AreEqual("monsters", uriFactory.GetRoutePrefix<Monster>());
        }
        public void ShouldCreateRelativeUriForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<Monster>();

            Assert.AreEqual(new Uri("monsters/1", UriKind.Relative), uriFactory.CreateRelativeUri<Monster>("1"));
        }
        public void ShouldCreateBaseUriForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<Monster>();

            Assert.AreEqual(new Uri("http://localhost:8080/virtual-directory/"), uriFactory.CreateBaseUri<Monster>(new Uri("http://localhost:8080/virtual-directory/monsters/1")));
        }
Esempio n. 7
0
        public void ShouldReturnRoutePrefixForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<OrderForm>();

            Assert.AreEqual("order-form", uriFactory.GetRoutePrefix<OrderForm>());
        }
Esempio n. 8
0
        public void ShouldCreateRelativeUriForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<OrderForm>();

            Assert.AreEqual(new Uri("order-form/1", UriKind.Relative), uriFactory.CreateRelativeUri<OrderForm>("1"));
        }
Esempio n. 9
0
        public void ShouldCreateAbsoluteUriForRegisteredClass()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<OrderForm>();

            Assert.AreEqual(new Uri("http://localhost:8080/virtual-directory/order-form/1"), uriFactory.CreateAbsoluteUri<OrderForm>(new Uri("http://localhost:8080/virtual-directory/"), "1"));
        }
Esempio n. 10
0
        protected void Application_Start(object sender, EventArgs e)
        {
            XmlConfigurator.Configure();

            Log.Debug("Starting Restbucks.Quoting.Service...");

            var formsIntegrityUtility = new FormsIntegrityUtility(Signature.Instance, OrderForm.SignedFormPlaceholder);
            Action<Collection<HttpOperationHandler>> handlers = c => c.Add(new FormsIntegrityResponseHandler(formsIntegrityUtility));

            var configuration = HttpHostConfiguration.Create()
                .SetResourceFactory(
                    (type, ctx, message) =>
                        {
                            Log.DebugFormat("Getting instance of type [{0}].", type.FullName);
                            return container.GetService(type);
                        },
                    (ctx, service) =>
                        {
                            if (service is IDisposable)
                            {
                                Log.DebugFormat("Calling Dispose() on instance of type [{0}].", service.GetType().FullName);
                                ((IDisposable) service).Dispose();
                            }
                        })
                .AddFormatters(RestbucksMediaType.Formatter)
                .AddResponseHandlers(handlers, (endpoint, operation) => operation.DeclaringContract.ContractType.Equals(typeof (OrderForm)));

            var uriFactory = new UriFactory();
            var resources = new ResourceCollection(Assembly.GetExecutingAssembly());
            resources.ForEach(r =>
                                  {
                                      container.Register(Component.For(r.Type).LifeStyle.Transient);
                                      uriFactory.Register(r.Type);
                                      RouteTable.Routes.MapServiceRoute(r.Type, r.UriTemplate.RoutePrefix, configuration);
                                      Log.DebugFormat("Registered resource. Type: [{0}]. Prefix: [{1}]. UriTemplate: [{2}].", r.Type.Name, r.UriTemplate.RoutePrefix, r.UriTemplate.UriTemplateValue);
                                  });

            container.Register(Component.For(typeof (IQuotationEngine)).ImplementedBy(typeof (QuotationEngine)).LifeStyle.Singleton);
            container.Register(Component.For(typeof (IDateTimeProvider)).ImplementedBy(typeof (DateTimeProvider)).LifeStyle.Singleton);
            container.Register(Component.For(typeof (IGuidProvider)).ImplementedBy(typeof (GuidProvider)).LifeStyle.Singleton);
            container.Register(Component.For(typeof (UriFactory)).Instance(uriFactory).LifeStyle.Singleton);
        }
 public void ThrowsExceptionIfEntryAlreadyExistsForType()
 {
     var uriFactory = new UriFactory();
     uriFactory.Register<Monster>();
     uriFactory.Register<Monster>();
 }
        public void WhenPassingGuidAsUriTemplateParameterShouldRemoveAllDashes()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<Monster>();

            Assert.AreEqual(new Uri("monsters/00000000000000000000000000000000", UriKind.Relative), uriFactory.CreateRelativeUri<Monster>(Guid.Empty));
        }
 public void ThrowsExceptionIfTypeIsNotAttributedWithUriTemplateAttribute()
 {
     var uriFactory = new UriFactory();
     uriFactory.Register<string>();
 }
Esempio n. 14
0
        public void ShouldReturnUriTemplateValueForRegisteredType()
        {
            var uriFactory = new UriFactory();
            uriFactory.Register<OrderForm>();

            Assert.AreEqual("{id}", uriFactory.GetUriTemplateValueFor(typeof (OrderForm)));
        }