public async Task Should_Process_Query() { const string expectedResult = "value"; var query = new StubQuery <string>(); var handler = Substitute.For <IQueryHandler <StubQuery <string>, string> >(); handler .HandleAsync(Arg.Any <StubQuery <string> >(), Arg.Any <CancellationToken>()) .Returns(expectedResult); using (var container = new Container()) { container.Register(() => handler); container.Verify(); IProcessor processor = new SimpleInjectorProcessor(container); var actualResult = await processor.ProcessAsync(query); await handler .Received() .HandleAsync(Arg.Any <StubQuery <string> >(), Arg.Any <CancellationToken>()); Assert.Equal(expectedResult, actualResult); } }
public async Task WhenRequestIsGetThenParametersAreAddedToUrl() { var settings = TestConfiguration.GetSettings(); var credentials = TestConfiguration.GetCredentials(); var query = new StubQuery { Item1 = "Value" }; using (var testHttpListener = new TestHttpListener(settings.URL, HttpStatusCode.OK, null)) { bool containsItemInUrl = false; testHttpListener.MessageReceived += (sender, requestEventArgs) => { var request = requestEventArgs.Request; containsItemInUrl = request.Url.Query.Contains("Item1") && request.Url.Query.Contains("Value"); }; OauthRequestSender oauthSender = new OauthRequestSender(credentials, settings.URL); var apiRequest = new Request <bool> { Uri = "/fake/api", HTTPMethod = HttpMethod.Get, Query = query }; var user = await oauthSender.SendRequestAsync(apiRequest); Assert.IsTrue(containsItemInUrl); } }
public void OneItemPerContentItemShouldBeCreated() { var query = new StubQuery(new[] { new ContentItem(), new ContentItem(), }); var builder = new ContainerBuilder(); builder.RegisterType <FeedController>(); builder.RegisterType <RssFeedBuilder>().As <IFeedBuilderProvider>(); builder.RegisterInstance(new StubItemBuilder()).As <IFeedItemBuilder>(); builder.RegisterInstance(query).As <IFeedQueryProvider>(); var container = builder.Build(); var controller = container.Resolve <FeedController>(); controller.ValueProvider = Values.From(new { }); var result = controller.Index("rss"); Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf <RssResult>()); var doc = ((RssResult)result).Document; var items = doc.Elements("rss").Elements("channel").Elements("item"); Assert.That(items.Count(), Is.EqualTo(2)); }
public void RssFeedShouldBeStructuredAppropriately() { var query = new StubQuery(Enumerable.Empty <ContentItem>()); var builder = new ContainerBuilder(); builder.RegisterType <FeedController>(); builder.RegisterType <RssFeedBuilder>().As <IFeedBuilderProvider>(); builder.RegisterInstance(query).As <IFeedQueryProvider>(); builder.RegisterInstance(new StubItemBuilder()).As <IFeedItemBuilder>(); var container = builder.Build(); var controller = container.Resolve <FeedController>(); controller.ValueProvider = Values.From(new { }); var result = controller.Index("rss"); Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf <RssResult>()); var doc = ((RssResult)result).Document; Assert.That(doc.Root.Name, Is.EqualTo(XName.Get("rss"))); Assert.That(doc.Root.Elements().Single().Name, Is.EqualTo(XName.Get("channel"))); }
public void CorePartValuesAreExtracted() { var clock = new StubClock(); var hello = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("hello").Build()) .Weld <CommonPart>() .Weld <TitlePart>() .Weld <BodyPart>() .Weld <InfosetPart>() .Build(); hello.As <CommonPart>().Record = new CommonPartRecord(); hello.As <TitlePart>().Record = new TitlePartRecord(); hello.As <BodyPart>().Record = new BodyPartRecord(); hello.As <CommonPart>().PublishedUtc = clock.UtcNow; hello.As <TitlePart>().Title = "alpha"; // hello.As<RoutePart>().Slug = "beta"; hello.As <BodyPart>().Text = "gamma"; var query = new StubQuery(new[] { hello, }); var mockContentManager = new Mock <IContentManager>(); mockContentManager.Setup(x => x.GetItemMetadata(It.IsAny <IContent>())) .Returns(new ContentItemMetadata() { DisplayText = "foo" }); var builder = new ContainerBuilder(); //builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterType <FeedController>(); builder.RegisterInstance(new RouteCollection()); builder.RegisterInstance(mockContentManager.Object).As <IContentManager>(); builder.RegisterType <RssFeedBuilder>().As <IFeedBuilderProvider>(); builder.RegisterType <CorePartsFeedItemBuilder>().As <IFeedItemBuilder>(); builder.RegisterInstance(query).As <IFeedQueryProvider>(); var container = builder.Build(); var controller = container.Resolve <FeedController>(); controller.ValueProvider = Values.From(new { }); var result = controller.Index("rss"); Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf <RssResult>()); var doc = ((RssResult)result).Document; var item = doc.Elements("rss").Elements("channel").Elements("item").Single(); Assert.That(item.Element("title").Value, Is.EqualTo("foo")); Assert.That(item.Element("description").Value, Is.EqualTo("gamma")); }
public ApiRequestSenderTest() { _oAuthServiceMock = new Mock <IOAuthService>(); _httpSenderMock = new Mock <IHttpRequestSender>(); _query = new StubQuery { Item1 = _queryValue }; _expectedResponseBody = new List <string> { "foo", "bar" }; }
public ApiRequestSenderTest() { _oAuthServiceMock = new Mock <IOAuthService>(); _bynderClientMock = new Mock <IBynderClient>(); _bynderClientMock .Setup(bynderClient => bynderClient.GetOAuthService()) .Returns(_oAuthServiceMock.Object); _httpSenderMock = new Mock <IHttpRequestSender>(); _query = new StubQuery { Item1 = _queryValue }; _expectedResponseBody = new List <string> { "foo", "bar" }; }
public async Task WhenCredentialInvalidTwoRequestsSent() { var httpSenderMock = new Mock <IHttpRequestSender>(); var query = new StubQuery { Item1 = "Value" }; var accessToken = "access_token"; using (ApiRequestSender apiRequestSender = new ApiRequestSender( new Configuration { BaseUrl = new Uri("https://example.bynder.com"), }, GetCredentials(false, accessToken), httpSenderMock.Object )) { var apiRequest = new ApiRequest <bool>() { Path = "/fake/api", HTTPMethod = HttpMethod.Get, Query = query }; await apiRequestSender.SendRequestAsync(apiRequest); httpSenderMock.Verify(sender => sender.SendHttpRequest( It.Is <HttpRequestMessage>( req => req.RequestUri.PathAndQuery.Contains("/oauth2/token") && req.Method == HttpMethod.Post ))); httpSenderMock.Verify(sender => sender.SendHttpRequest( It.Is <HttpRequestMessage>( req => req.RequestUri.PathAndQuery.Contains("/fake/api") && req.Method == HttpMethod.Get && req.Headers.Authorization.ToString() == $"Bearer {accessToken}" && req.RequestUri.Query.Contains("Item1=Value") ))); httpSenderMock.Verify(sender => sender.SendHttpRequest( It.IsAny <HttpRequestMessage>() ), Times.Exactly(2)); } }
public async Task Should_Not_Wrap_Exception_When_QueryHandler_Throws_Exception() { var query = new StubQuery <object>(); var handler = Substitute.For <IQueryHandler <StubQuery <object>, object> >(); handler .HandleAsync(Arg.Any <StubQuery <object> >(), Arg.Any <CancellationToken>()) .Throws(new ArgumentException()); using (var container = new Container()) { container.Register(() => handler); container.Verify(); IProcessor processor = new SimpleInjectorProcessor(container); await Assert.ThrowsAsync <ArgumentException>(async() => await processor.ProcessAsync(query)); } }
public async Task WhenRequestIsPostThenParametersAreAddedToContent() { var httpSenderMock = new Mock <IHttpRequestSender>(); var query = new StubQuery { Item1 = "Value" }; var accessToken = "access_token"; using (ApiRequestSender apiRequestSender = new ApiRequestSender( new Configuration { BaseUrl = new Uri("https://example.bynder.com"), }, GetCredentials(true, accessToken), httpSenderMock.Object )) { var apiRequest = new ApiRequest <bool>() { Path = "/fake/api", HTTPMethod = HttpMethod.Post, Query = query }; await apiRequestSender.SendRequestAsync(apiRequest); httpSenderMock.Verify(sender => sender.SendHttpRequest( It.Is <HttpRequestMessage>( req => req.RequestUri.PathAndQuery.Contains("/fake/api") && req.Method == HttpMethod.Post && req.Headers.Authorization.ToString() == $"Bearer {accessToken}" && req.Content.ReadAsStringAsync().Result.Contains("Item1=Value") ))); httpSenderMock.Verify(sender => sender.SendHttpRequest( It.IsAny <HttpRequestMessage>() ), Times.Once); } }
public void RssFeedShouldBeStructuredAppropriately() { var query = new StubQuery(Enumerable.Empty<ContentItem>()); var builder = new ContainerBuilder(); builder.RegisterType<FeedController>(); builder.RegisterType<RssFeedBuilder>().As<IFeedBuilderProvider>(); builder.RegisterInstance(query).As<IFeedQueryProvider>(); builder.RegisterInstance(new StubItemBuilder()).As<IFeedItemBuilder>(); var container = builder.Build(); var controller = container.Resolve<FeedController>(); controller.ValueProvider = Values.From(new { }); var result = controller.Index("rss"); Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf<RssResult>()); var doc = ((RssResult)result).Document; Assert.That(doc.Root.Name, Is.EqualTo(XName.Get("rss"))); Assert.That(doc.Root.Elements().Single().Name, Is.EqualTo(XName.Get("channel"))); }
public void CorePartValuesAreExtracted() { var clock = new StubClock(); var hello = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("hello").Build()) .Weld<CommonPart>() .Weld<TitlePart>() .Weld<BodyPart>() .Weld<InfosetPart>() .Build(); hello.As<CommonPart>().Record = new CommonPartRecord(); hello.As<TitlePart>().Record = new TitlePartRecord(); hello.As<BodyPart>().Record = new BodyPartRecord(); hello.As<CommonPart>().PublishedUtc = clock.UtcNow; hello.As<TitlePart>().Title = "alpha"; // hello.As<RoutePart>().Slug = "beta"; hello.As<BodyPart>().Text = "gamma"; var query = new StubQuery(new[] { hello, }); var mockContentManager = new Mock<IContentManager>(); mockContentManager.Setup(x => x.GetItemMetadata(It.IsAny<IContent>())) .Returns(new ContentItemMetadata() { DisplayText = "foo" }); var builder = new ContainerBuilder(); //builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterType<FeedController>(); builder.RegisterInstance(new RouteCollection()); builder.RegisterInstance(mockContentManager.Object).As<IContentManager>(); builder.RegisterType<RssFeedBuilder>().As<IFeedBuilderProvider>(); builder.RegisterType<CorePartsFeedItemBuilder>().As<IFeedItemBuilder>(); builder.RegisterInstance(query).As<IFeedQueryProvider>(); var container = builder.Build(); var controller = container.Resolve<FeedController>(); controller.ValueProvider = Values.From(new { }); var result = controller.Index("rss"); Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf<RssResult>()); var doc = ((RssResult)result).Document; var item = doc.Elements("rss").Elements("channel").Elements("item").Single(); Assert.That(item.Element("title").Value, Is.EqualTo("foo")); Assert.That(item.Element("description").Value, Is.EqualTo("gamma")); }
public void OneItemPerContentItemShouldBeCreated() { var query = new StubQuery(new[] { new ContentItem(), new ContentItem(), }); var builder = new ContainerBuilder(); builder.RegisterType<FeedController>(); builder.RegisterType<RssFeedBuilder>().As<IFeedBuilderProvider>(); builder.RegisterInstance(new StubItemBuilder()).As<IFeedItemBuilder>(); builder.RegisterInstance(query).As<IFeedQueryProvider>(); var container = builder.Build(); var controller = container.Resolve<FeedController>(); controller.ValueProvider = Values.From(new { }); var result = controller.Index("rss"); Assert.That(result, Is.Not.Null); Assert.That(result, Is.InstanceOf<RssResult>()); var doc = ((RssResult)result).Document; var items = doc.Elements("rss").Elements("channel").Elements("item"); Assert.That(items.Count(), Is.EqualTo(2)); }