public static Task <Session> OpenAndLinkEndpointAsync(LinkEndpoint endpoint) { ILinkProcessor fakeLinkProcessor = Substitute.For <ILinkProcessor>(); fakeLinkProcessor .When(instance => instance.Process(Arg.Any <AttachContext>())) .Do(call => call.Arg <AttachContext>().Complete(endpoint, 3)); return(OpenAndLinkProcessorAsync(fakeLinkProcessor)); }
public async Task IsAuthorized_ReturnsFalse_WhenSessionConnectionClosedBeforeAuthorized() { ListenerLink link = null; var authorized = false; ILinkProcessor fakeLinkProcessor = Substitute.For <ILinkProcessor>(); fakeLinkProcessor .When(instance => instance.Process(Arg.Any <AttachContext>())) .Do(c => { AttachContext attachContext = c.ArgAt <AttachContext>(0); link = attachContext.Link; attachContext.Complete(new Error(ErrorCode.IllegalState) { Description = "Test" }); }); ContainerHost host = TestAmqpHost.Open(); try { host.RegisterLinkProcessor(fakeLinkProcessor); Connection connection = await host.ConnectAndAttachAsync(); await connection.CloseAsync(); await Task.Delay(500); var securityContext = new SecurityContext(); securityContext.Authorize(link.Session.Connection); authorized = securityContext.IsAuthorized(link.Session.Connection); } finally { host.Close(); } authorized.ShouldBeFalse(); }
public async Task IsAuthorized_ReturnsTrue_WhenSameConnectionAuthorizedTwice() { var authorized = false; var links = new List <ListenerLink>(); ILinkProcessor fakeLinkProcessor = Substitute.For <ILinkProcessor>(); fakeLinkProcessor .When(instance => instance.Process(Arg.Any <AttachContext>())) .Do(c => { AttachContext attachContext = c.ArgAt <AttachContext>(0); links.Add(attachContext.Link); attachContext.Complete(new Error(ErrorCode.IllegalState) { Description = "Test" }); }); ContainerHost host = TestAmqpHost.Open(); try { host.RegisterLinkProcessor(fakeLinkProcessor); Connection connection = await host.ConnectAndAttachAsync(2); var securityContext = new SecurityContext(); securityContext.Authorize(links[0].Session.Connection); securityContext.Authorize(links[1].Session.Connection); authorized = securityContext.IsAuthorized(links[1].Session.Connection); await connection.CloseAsync(); } finally { host.Close(); } authorized.ShouldBeTrue(); }