public void Should_not_throw_exception_when_handlerequest_is_invoked_and_pre_request_hook_is_null() { // Given var pipelines = new Pipelines { BeforeRequest = null }; engine.RequestPipelinesFactory = (ctx) => pipelines; // When var request = new Request("GET", "/", "http"); // Then this.engine.HandleRequest(request); }
/// <summary> /// 页面下载 /// </summary> private void ProcessRequest(Request request, IDownLoader downLoader) { var page = downLoader.DownLoader(request, this); PageProcessor.Process(page); Scheduler.AddFinishRequest(request); SpiderListening.ForEach(item => item.AfterSuccess(request)); if (page.IsSave) { Pipelines.ForEach(item => item.Process(page.PageResult)); } GetPageUrl(page).ForEach(item => Scheduler.AddWaitRequest(new Request(item))); }
/// <summary> /// Gets all <see cref="IRequestStartup"/> instances from the <see cref="IServiceContainer"/> /// and calls the <see cref="IRequestStartup.Initialize"/> method. /// </summary> /// <param name="context">The current <see cref="NancyContext"/>.</param> /// <returns><see cref="IPipelines"/>.</returns> protected override IPipelines InitializeRequestPipelines(NancyContext context) { var pipelines = new Pipelines(ApplicationPipelines); EnsureScopeIsStarted(context); var requestStartupTasks = serviceContainer.GetAllInstances <IRequestStartup>(); foreach (var requestStartupTask in requestStartupTasks) { requestStartupTask.Initialize(pipelines, context); } return(pipelines); }
static void Main(string[] args) { var iterationCount = args.Length > 0 ? int.Parse(args[0]) : DefaultIterationCount; Console.WriteLine("Timing pipelines!"); var pipelines = new Pipelines(); var serialTimeSpan = GetSerialRunTime(pipelines, iterationCount); Console.WriteLine("serial run time (seconds) per iteration:" + serialTimeSpan.TotalSeconds / DefaultIterationCount); var serialFileSize = new FileInfo(Pipelines.SerialJson).Length; // var concurrentTimeSpan = GetConcurrentRunTime(pipelines, iterationCount); // Console.WriteLine("Concurrent queue run time (seconds) per iteration:"+ concurrentTimeSpan.TotalSeconds/iterationCount); // var concurrentFileSize = new FileInfo(Pipelines.ConcurrentQueueJson).Length; //if (concurrentFileSize != serialFileSize) //Console.WriteLine($"ERROR:Concurrent queue file size ({concurrentFileSize}) is different from serial ({serialFileSize})"); // var batchTimeSpan = GetBatchRunTime(pipelines, iterationCount); // Console.WriteLine("Batch (parallel) run time (seconds) per iteration:" + // batchTimeSpan.TotalSeconds / DefaultIterationCount); // var batchFileSize = new FileInfo(Pipelines.BatchJson).Length; // if (batchFileSize != serialFileSize) //Console.WriteLine($"ERROR:Batch parallel file size ({batchFileSize}) is different from serial ({serialFileSize})"); // var parallelTimeSpan = GetParallelRunTime(pipelines, iterationCount); // Console.WriteLine("parallel run time (seconds) per iteration:" + // parallelTimeSpan.TotalSeconds / DefaultIterationCount); // var parallelFileSize = new FileInfo(Pipelines.ParallelJson).Length; // if (parallelFileSize != serialFileSize) // Console.WriteLine($"ERROR:Parallel file size ({parallelFileSize}) is different from serial ({serialFileSize})"); // var channelTimeSpan = GetChannelRunTime(pipelines, iterationCount); // Console.WriteLine("Channel annotator run time (seconds) per iteration:"+ channelTimeSpan.TotalSeconds/iterationCount); // var channelFileSize = new FileInfo(Pipelines.ChannelJson).Length; // if (channelFileSize != serialFileSize) // Console.WriteLine($"ERROR:Channel file size ({channelFileSize}) is different from serial ({serialFileSize})"); var batchChannelTimeSpan = GetBatchChannelRunTime(pipelines, iterationCount); Console.WriteLine("Batch channel annotator run time (seconds) per iteration:" + batchChannelTimeSpan.TotalSeconds / iterationCount); var batchChannelFileSize = new FileInfo(Pipelines.BatchChannelJson).Length; if (batchChannelFileSize != serialFileSize) { Console.WriteLine($"ERROR:Batch Channel file size ({batchChannelFileSize}) is different from serial ({serialFileSize})"); } }
protected void InitComponent() { Scheduler.Init(this); if (Downloader == null) { Downloader = new HttpClientDownloader(); } Downloader.SetThreadNum(ThreadNum); if (Pipelines.Count == 0) { Pipelines.Add(new FilePipeline()); } if (ThreadPool == null || ThreadPool.IsShutdown) { ThreadPool = new CountableThreadPool(ThreadNum); } if (StartRequests != null) { Parallel.ForEach(StartRequests, new ParallelOptions() { MaxDegreeOfParallelism = 100 }, request => { Scheduler.Push((Request)request.Clone(), this); }); ClearStartRequests(); Logger.InfoFormat("Push Request to Scheduler success."); } if (!_registConsoleCtrlHandler) { Console.Title = Identify; Console.CancelKeyPress += Console_CancelKeyPress; _registConsoleCtrlHandler = true; //根据控制台标题找控制台 int windowHandler = FindWindow(null, Identify); //找关闭按钮 IntPtr closeMenu = GetSystemMenu((IntPtr)windowHandler, IntPtr.Zero); int SC_CLOSE = 0xF060; //关闭按钮禁用 RemoveMenu(closeMenu, SC_CLOSE, 0x0); } }
public void Should_persist_and_unwrap_multiple_nested_original_exception_in_requestexecutionexception_with_exceptions_on_multiple_levels() { // Given var expectedException1 = new Exception(); var expectedException2 = new Exception(); var expectedException3 = new Exception(); var expectedException4 = new Exception(); var expectgedInnerExceptions = 4; var exceptionsListInner = new List <Exception>() { expectedException1, expectedException2, expectedException3 }; var expectedExceptionInner = new AggregateException(exceptionsListInner); var exceptionsListOuter = new List <Exception>() { expectedExceptionInner, expectedException4 }; var aggregateExceptionOuter = new AggregateException(exceptionsListOuter); var resolvedRoute = new ResolveResult( new FakeRoute(), DynamicDictionary.Empty, null, null, null); A.CallTo(() => resolver.Resolve(A <NancyContext> .Ignored)).Returns(resolvedRoute); A.CallTo(() => this.requestDispatcher.Dispatch(context, A <CancellationToken> ._)) .Returns(TaskHelpers.GetFaultedTask <Response>(aggregateExceptionOuter)); var pipelines = new Pipelines(); pipelines.OnError.AddItemToStartOfPipeline((ctx, exception) => null); engine.RequestPipelinesFactory = (ctx) => pipelines; var request = new Request("GET", "/", "http"); // When var result = this.engine.HandleRequest(request); var returnedException = result.Items["ERROR_EXCEPTION"] as RequestExecutionException; // Then var returnedInnerException = returnedException.InnerException as AggregateException; returnedInnerException.ShouldBeOfType(typeof(AggregateException)); Assert.Equal(expectgedInnerExceptions, returnedInnerException.InnerExceptions.Count); }
public virtual IProjectBase Compile() { var context = Factory.CompileContext(this); Trace.SetOut(CaptureTrace); try { Pipelines.GetPipeline <CompilePipeline>().Execute(context); } finally { Trace.SetOut(null); } return(this); }
public void Should_not_set_username_in_context_with_broken_encryption_data() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake <IUserMapper>(); var fakeUser = A.Fake <IUserIdentity>(); fakeUser.UserName = "******"; A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.cookieWithBrokenEncryptedData); var result = fakePipelines.BeforeRequest.Invoke(this.context); context.CurrentUser.ShouldBeNull(); }
public void Should_set_user_in_context_with_valid_cookie() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake <IUserMapper>(); var fakeUser = A.Fake <IUserIdentity>(); fakeUser.UserName = "******"; A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.validCookieValue); var result = fakePipelines.BeforeRequest.Invoke(this.context); context.CurrentUser.ShouldBeSameAs(fakeUser); }
public void Squre() { var sut = new Pipelines(); var numbers = new int[] { 1, 2, 3 }; var expected = new int[] { 1, 4, 9 }; var source = sut.Generate(numbers); var sequence = sut.Squre(source).GetConsumingEnumerable(); var i = 0; foreach (var n in sequence) { Assert.Equal(expected[i], n); i++; } Assert.Equal(3, i); }
public void Should_invoke_the_error_request_hook_if_one_exists_when_dispatcher_throws() { // Given var testEx = new Exception(); var errorRoute = new Route("GET", "/", null, (x, c) => { throw testEx; }); var resolvedRoute = new ResolveResult( errorRoute, DynamicDictionary.Empty, null, null, null); A.CallTo(() => resolver.Resolve(A <NancyContext> .Ignored)).Returns(resolvedRoute); A.CallTo(() => this.requestDispatcher.Dispatch(context, A <CancellationToken> ._)) .Returns(TaskHelpers.GetFaultedTask <Response>(testEx)); Exception handledException = null; NancyContext handledContext = null; var errorResponse = new Response(); Func <NancyContext, Exception, Response> routeErrorHook = (ctx, ex) => { handledContext = ctx; handledException = ex; return(errorResponse); }; var pipelines = new Pipelines(); pipelines.OnError.AddItemToStartOfPipeline(routeErrorHook); engine.RequestPipelinesFactory = (ctx) => pipelines; var request = new Request("GET", "/", "http"); // When var result = this.engine.HandleRequest(request); // Then Assert.Equal(testEx, handledException); Assert.Equal(result, handledContext); Assert.Equal(result.Response, errorResponse); }
public void InitComponent() { if (_init) { return; } Console.CancelKeyPress += ConsoleCancelKeyPress; if (Downloader == null) { Downloader = new HttpClientDownloader(); } Downloader.ThreadNum = ThreadNum; if (Pipelines.Count == 0) { Pipelines.Add(new FilePipeline()); } if (StartRequests != null && StartRequests.Count > 0) { Logger.Info($"添加链接到调度中心, 数量: {StartRequests.Count}."); if ((Scheduler is QueueDuplicateRemovedScheduler) || (Scheduler is PriorityScheduler)) { Parallel.ForEach(StartRequests, new ParallelOptions() { MaxDegreeOfParallelism = 4 }, request => { Scheduler.Push(request); }); } else { Scheduler.Load(new HashSet <Request>(StartRequests)); ClearStartRequests(); } } else { Logger.Info("添加链接到调度中心, 数量: 0."); } _init = true; }
public ConsolidationMapEtlProcess( Table targetTable, string adminConnectionString, string publicConnectionString, int timeoutSecs, Pipelines pipelineOptions) { if (pipelineOptions.PublicConsolidation.SingleThreaded) { PipelineExecuter = new SingleThreadedPipelineExecuter(); } _targetTable = targetTable; _adminConnectionString = adminConnectionString; _publicConnectionString = publicConnectionString; _timeoutSecs = timeoutSecs; }
public static void AddLogPipelines_Should_Add_Pipelines() { // arrange IPipelines pipelines = new Pipelines(); TinyIoCContainer container = new TinyIoCContainer(); container.Register <ICommunicationLogger, CommunicationLoggerMock>(); container.Register(JsonUtility.CamelCaseJsonSerializerSettings); // act pipelines.AddLogPipelines(container); // assert Assert.Single(pipelines.BeforeRequest.PipelineItems); Assert.Equal(2, pipelines.AfterRequest.PipelineItems.ToList().Count); Assert.Equal(2, pipelines.OnError.PipelineItems.ToList().Count); }
public void Should_not_set_user_in_context_with_no_hmac() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake <IUserMapper>(); var fakeUser = new FakeUserIdentity { UserName = "******" }; A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.cookieWithNoHmac); var result = fakePipelines.BeforeRequest.Invoke(this.context, new CancellationToken()); context.CurrentUser.ShouldBeNull(); }
protected override void InitPipelines(params string[] arguments) { if (Pipelines == null || Pipelines.Count == 0) { var defaultPipeline = GetDefaultPipeline(); if (defaultPipeline != null) { Pipelines.Add(defaultPipeline); } } if (!arguments.Contains("skip")) { var entityProcessors = PageProcessors.Where(p => p is IEntityProcessor).ToList(); var entityPipelines = Pipelines.Where(p => p is BaseEntityPipeline).ToList(); if (entityProcessors.Count != 0 && entityPipelines.Count == 0) { throw new SpiderException("You may miss a entity pipeline."); } foreach (var processor in entityProcessors) { foreach (var pipeline in entityPipelines) { var entityProcessor = processor as IEntityProcessor; if (pipeline is BaseEntityPipeline newPipeline) { if (entityProcessor != null) { newPipeline.AddEntity(entityProcessor.EntityDefine); } } } } } if (PageProcessors == null || PageProcessors.Count == 0) { throw new SpiderException("Count of PageProcessor is zero."); } foreach (var pipeline in Pipelines) { pipeline.InitPipeline(this); } }
private static TimeSpan GetParallelRunTime(Pipelines pipelines, int iterationCount) { Console.WriteLine("running in parallel"); var tick = DateTime.Now; for (int i = 0; i < iterationCount; i++) { pipelines.ParallelAnnotation(); //Console.WriteLine($"completed run {i + 1}"); } var tock = DateTime.Now; var batchTimeSpan = new TimeSpan(tock.Ticks - tick.Ticks); return(batchTimeSpan); }
public NancyEngineFixture() { this.environment = new DefaultNancyEnvironment(); this.environment.Tracing( enabled: true, displayErrorTraces: true); this.resolver = A.Fake <IRouteResolver>(); this.response = new Response(); this.route = new FakeRoute(response); this.context = new NancyContext(); this.statusCodeHandler = A.Fake <IStatusCodeHandler>(); this.requestDispatcher = A.Fake <IRequestDispatcher>(); this.negotiator = A.Fake <IResponseNegotiator>(); A.CallTo(() => this.requestDispatcher.Dispatch(A <NancyContext> ._, A <CancellationToken> ._)) .Returns(Task.FromResult(new Response())); A.CallTo(() => this.statusCodeHandler.HandlesStatusCode(A <HttpStatusCode> .Ignored, A <NancyContext> .Ignored)).Returns(false); contextFactory = A.Fake <INancyContextFactory>(); A.CallTo(() => contextFactory.Create(A <Request> ._)).Returns(context); var resolveResult = new ResolveResult { Route = route, Parameters = DynamicDictionary.Empty, Before = null, After = null, OnError = null }; A.CallTo(() => resolver.Resolve(A <NancyContext> .Ignored)).Returns(resolveResult); var applicationPipelines = new Pipelines(); this.routeInvoker = A.Fake <IRouteInvoker>(); A.CallTo(() => this.routeInvoker.Invoke(A <Route> ._, A <CancellationToken> ._, A <DynamicDictionary> ._, A <NancyContext> ._)).ReturnsLazily(arg => { return(((Route)arg.Arguments[0]).Action.Invoke((DynamicDictionary)arg.Arguments[1], A <CancellationToken> ._).Result); }); this.engine = new NancyEngine(this.requestDispatcher, this.contextFactory, new[] { this.statusCodeHandler }, A.Fake <IRequestTracing>(), new DisabledStaticContentProvider(), this.negotiator, this.environment) { RequestPipelinesFactory = ctx => applicationPipelines }; }
public PublicStagingEtlProcess( Table targetTable, string adminConnectionString, string publicConnectionString, int timeoutSecs, Pipelines pipelineOptions) { if (pipelineOptions.PublicStaging.SingleThreaded) { PipelineExecuter = new SingleThreadedPipelineExecuter(); } _targetTable = targetTable; _adminConnectionString = adminConnectionString; _publicConnectionString = publicConnectionString; _timeoutSecs = timeoutSecs; _rowCountAndDuration = new RowCountAndDuration(); }
public async Task Should_allow_post_request_hook_to_replace_response() { // Given var newResponse = new Response(); var pipelines = new Pipelines(); pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => ctx.Response = newResponse); engine.RequestPipelinesFactory = (ctx) => pipelines; var request = new Request("GET", "/", "http"); // When var result = await this.engine.HandleRequest(request); // Then result.Response.ShouldBeSameAs(newResponse); }
public void FanIn() { var sut = new Pipelines(); var numbers = new int[] { 1, 2, 3, 4 }; var expected = new int[] { 1, 4, 9, 16 }; var source = sut.Generate(numbers); var sequence1 = sut.Squre(source); var sequence2 = sut.Squre(source); var count = 0; var merged = sut.FanIn(sequence1, sequence2).GetConsumingEnumerable(); foreach (var n in merged) { Assert.Contains(n, expected); count++; } Assert.Equal(4, count); }
/// <summary> /// Checks existence and validity of the admin database... /// </summary> public static void Execute( string connectionString, int commandTimeout, int maxDegreeOfParallelism, Pipelines pipelineOptions) { _log.Debug("Checking existence and validity of admin database"); // Check that db is the current version... var ctrl = new ControlSchema(connectionString, commandTimeout, maxDegreeOfParallelism, pipelineOptions); int ver = ctrl.GetDatabaseVersion(); _log.DebugFormat("Admin database version = {0}", ver); if (ver > 0 && ver != ControlSchema.LatestAdminDbVersion) { throw new ApplicationException($"Admin database version = {ver}, expecting {ControlSchema.LatestAdminDbVersion}"); } _log.Debug("Admin database version is correct"); }
/// <summary> /// Download urls synchronizing. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="urls"></param> /// <returns></returns> public IList <T> GetAll <T>(params string[] urls) { DestroyWhenExit = false; SpawnUrl = false; foreach (Request request in UrlUtils.ConvertToRequests(urls)) { AddRequest(request); } ICollectorPipeline collectorPipeline = GetCollectorPipeline(); Pipelines.Add(collectorPipeline); Run(); SpawnUrl = true; DestroyWhenExit = true; ICollection collection = collectorPipeline.GetCollected(); return((from object o in collection select(T) o).ToList()); }
public void Clear() { Renderpasses.Clear(); Pipelines.Clear(); StencilWrites.Clear(); Viewports.Clear(); Scissors.Clear(); DepthBias.Clear(); LineWidths.Clear(); DepthBounds.Clear(); BlendConstants.Clear(); VAOs.Clear(); StencilFunctions.Clear(); Draws.Clear(); DrawIndexeds.Clear(); DrawIndirects.Clear(); DrawIndexedIndirects.Clear(); DescriptorSets.Clear(); }
public static void AddHandlerExceptionsPipelines_Should_Add_Pipelines() { // arrange var pipelines = new Pipelines(); var container = new TinyIoCContainer(); container.Register <ICommunicationLogger, CommunicationLoggerMock>(); container.Register(JsonUtility.CamelCaseJsonSerializerSettings); var context = NancyContextMock.Create(); // act pipelines.AddHandlerExceptionsPipelines(container); pipelines.OnError.Invoke(context, null); // assert Assert.Single(pipelines.OnError.PipelineItems); Assert.Empty(pipelines.AfterRequest.PipelineItems); Assert.Empty(pipelines.BeforeRequest.PipelineItems); }
public void Should_retain_querystring_when_redirecting_to_login_page() { // Given var fakePipelines = new Pipelines(); FormsAuthentication.Enable(fakePipelines, this.config); var queryContext = new NancyContext() { Request = new FakeRequest("GET", "/secure", "?foo=bar"), Response = HttpStatusCode.Unauthorized }; // When fakePipelines.AfterRequest.Invoke(queryContext, new CancellationToken()); // Then queryContext.Response.Headers["Location"].ShouldEqual("/login?returnUrl=/secure%3ffoo%3dbar"); }
public async Task Should_return_response_from_pre_request_hook_when_not_null() { // Given var returnedResponse = A.Fake <Response>(); var pipelines = new Pipelines(); pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => returnedResponse); engine.RequestPipelinesFactory = (ctx) => pipelines; var request = new Request("GET", "/", "http"); // When var result = await this.engine.HandleRequest(request); // Then result.Response.ShouldBeSameAs(returnedResponse); }
public void Should_change_the_forms_authentication_redirect_uri_querystring_key_returnUrl_if_config_redirectQuerystringKey_is_empty() { // Given var fakePipelines = new Pipelines(); this.config.RedirectQuerystringKey = string.Empty; FormsAuthentication.Enable(fakePipelines, this.config); var queryContext = new NancyContext() { Request = new FakeRequest("GET", "/secure", "?foo=bar"), Response = HttpStatusCode.Unauthorized }; // When fakePipelines.AfterRequest.Invoke(queryContext, new CancellationToken()); // Then queryContext.Response.Headers["Location"].ShouldEqual("/login?returnUrl=/secure%3ffoo%3dbar"); }
public void Should_change_the_forms_authentication_redirect_uri_querystring_key() { // Given var fakePipelines = new Pipelines(); this.config.RedirectQuerystringKey = "next"; FormsAuthentication.Enable(fakePipelines, this.config); var queryContext = new NancyContext() { Request = new FakeRequest("GET", "/secure", "?foo=bar"), Response = HttpStatusCode.Unauthorized }; // When fakePipelines.AfterRequest.Invoke(queryContext); // Then queryContext.Response.Headers["Location"].ShouldEqual("/login?next=/secure%3ffoo%3dbar"); }
public async Task HandleRequest_prereq_returns_response_should_still_run_postreq() { // Given var returnedResponse = A.Fake <Response>(); var postReqCalled = false; var pipelines = new Pipelines(); pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => returnedResponse); pipelines.AfterRequest.AddItemToEndOfPipeline(ctx => postReqCalled = true); engine.RequestPipelinesFactory = (ctx) => pipelines; var request = new Request("GET", "/", "http"); // When await this.engine.HandleRequest(request); // Then postReqCalled.ShouldBeTrue(); }
public async Task Should_allow_post_request_hook_to_modify_context_items() { // Given var pipelines = new Pipelines(); pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => { ctx.Items.Add("PostReqTest", new object()); return(null); }); engine.RequestPipelinesFactory = (ctx) => pipelines; var request = new Request("GET", "/", "http"); // When var result = await this.engine.HandleRequest(request); // Then result.Items.ContainsKey("PostReqTest").ShouldBeTrue(); }
public void Should_set_user_in_context_with_valid_cookie() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake<IUserMapper>(); var fakeUser = new FakeUserIdentity {UserName = "******"}; A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.validCookieValue); var result = fakePipelines.BeforeRequest.Invoke(this.context, new CancellationToken()); context.CurrentUser.ShouldBeSameAs(fakeUser); }
public void Should_not_set_user_in_context_with_empty_hmac() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake<IUserMapper>(); var fakeUser = new ClaimsPrincipal(new GenericIdentity("Bob")); A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.cookieWithEmptyHmac); var result = fakePipelines.BeforeRequest.Invoke(this.context, new CancellationToken()); context.CurrentUser.ShouldBeNull(); }
public void Should_not_set_user_in_context_with_no_hmac() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake<IUserMapper>(); var fakeUser = A.Fake<IUserIdentity>(); fakeUser.UserName = "******"; A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.cookieWithNoHmac); var result = fakePipelines.BeforeRequest.Invoke(this.context); context.CurrentUser.ShouldBeNull(); }
public void Should_get_username_from_mapping_service_with_valid_cookie() { var fakePipelines = new Pipelines(); var mockMapper = A.Fake<IUserMapper>(); this.config.UserMapper = mockMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.validCookieValue); fakePipelines.BeforeRequest.Invoke(this.context, new CancellationToken()); A.CallTo(() => mockMapper.GetUserFromIdentifier(this.userGuid, this.context)) .MustHaveHappened(Repeated.Exactly.Once); }
public void Should_retain_querystring_when_redirecting_to_login_page() { // Given var fakePipelines = new Pipelines(); FormsAuthentication.Enable(fakePipelines, this.config); var queryContext = new NancyContext() { Request = new FakeRequest("GET", "/secure", "?foo=bar"), Response = HttpStatusCode.Unauthorized }; // When fakePipelines.AfterRequest.Invoke(queryContext, new CancellationToken()); // Then queryContext.Response.Headers["Location"].ShouldEqual("/login?returnUrl=/secure%3ffoo%3dbar"); }
public void Should_not_set_username_in_context_with_broken_encryption_data() { var fakePipelines = new Pipelines(); var fakeMapper = A.Fake<IUserMapper>(); var fakeUser = new FakeUserIdentity { UserName = "******" }; A.CallTo(() => fakeMapper.GetUserFromIdentifier(this.userGuid, this.context)).Returns(fakeUser); this.config.UserMapper = fakeMapper; FormsAuthentication.Enable(fakePipelines, this.config); this.context.Request.Cookies.Add(FormsAuthentication.FormsAuthenticationCookieName, this.cookieWithBrokenEncryptedData); var result = fakePipelines.BeforeRequest.Invoke(this.context, new CancellationToken()); context.CurrentUser.ShouldBeNull(); }