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"))); }
public void ShouldReturnRoutePrefixForRegisteredClass() { var uriFactory = new UriFactory(); uriFactory.Register<OrderForm>(); Assert.AreEqual("order-form", uriFactory.GetRoutePrefix<OrderForm>()); }
public void ShouldCreateRelativeUriForRegisteredClass() { var uriFactory = new UriFactory(); uriFactory.Register<OrderForm>(); Assert.AreEqual(new Uri("order-form/1", UriKind.Relative), uriFactory.CreateRelativeUri<OrderForm>("1")); }
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")); }
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>(); }
public void ShouldReturnUriTemplateValueForRegisteredType() { var uriFactory = new UriFactory(); uriFactory.Register<OrderForm>(); Assert.AreEqual("{id}", uriFactory.GetUriTemplateValueFor(typeof (OrderForm))); }