コード例 #1
0
            public async Task Async_with_inline_filter()
            {
                IAsynchronousFilterChain defaultFilterChain = new DefaultAsynchronousFilterChain(dataStore: null)
                                                              .Add(new DeleteInterceptorFilter());

                IAsynchronousFilterChain finalChain = new DefaultAsynchronousFilterChain(defaultFilterChain as DefaultAsynchronousFilterChain)
                                                      .Add(new DefaultAsynchronousFilter((req, next, logger, ct) =>
                {
                    return(Task.FromResult <IResourceDataResult>(new DefaultResourceDataResult(
                                                                     ResourceAction.Create,
                                                                     typeof(IDictionary <string, object>),
                                                                     req.Uri,
                                                                     httpStatus: 200,
                                                                     body: new Dictionary <string, object>()
                    {
                        { "Foo", "bar" }
                    })));
                }));

                var request = new DefaultResourceDataRequest(ResourceAction.Create, typeof(IAccount), new CanonicalUri("http://api.foo.bar"), false);
                var result  = await finalChain.FilterAsync(request, Substitute.For <ILogger>(), CancellationToken.None);

                result.Action.ShouldBe(ResourceAction.Create);
                result.Body.ShouldContainKeyAndValue("Foo", "bar");
            }
コード例 #2
0
            public void Sync_chain_terminating_on_second()
            {
                ISynchronousFilterChain filterChain = new DefaultSynchronousFilterChain(dataStore: null)
                                                      .Add(new CreateInterceptorFilter())
                                                      .Add(new DeleteInterceptorFilter());

                var request = new DefaultResourceDataRequest(ResourceAction.Delete, typeof(IAccount), new CanonicalUri("http://api.foo.bar"), false);
                var result  = filterChain.Filter(request, Substitute.For <ILogger>());

                result.Action.ShouldBe(ResourceAction.Delete);
                result.Body.ShouldBeNull();
            }
コード例 #3
0
            public async Task Async_chain_terminating_on_first()
            {
                IAsynchronousFilterChain filterChain = new DefaultAsynchronousFilterChain(dataStore: null)
                                                       .Add(new CreateInterceptorFilter())
                                                       .Add(new DeleteInterceptorFilter());

                var request = new DefaultResourceDataRequest(ResourceAction.Create, typeof(IAccount), new CanonicalUri("http://api.foo.bar"), false);
                var result  = await filterChain.FilterAsync(request, Substitute.For <ILogger>(), CancellationToken.None);

                result.Action.ShouldBe(ResourceAction.Create);
                result.Body.ShouldContainKeyAndValue("Foo", "bar");
            }