public async Task HandlesAWebSocketRequest() { HttpContext httpContext = this.ContextWithRequestedSubprotocols("abc"); var listener = Mock.Of <IWebSocketListener>(wsl => wsl.SubProtocol == "abc"); var registry = new WebSocketListenerRegistry(); registry.TryRegister(listener); var middleware = new WebSocketHandlingMiddleware(this.ThrowingNextDelegate(), registry, Task.FromResult(Mock.Of <IHttpProxiedCertificateExtractor>())); await middleware.Invoke(httpContext); Mock.Get(listener).Verify(r => r.ProcessWebSocketRequestAsync(It.IsAny <WebSocket>(), It.IsAny <Option <EndPoint> >(), It.IsAny <EndPoint>(), It.IsAny <string>())); }
public async Task AuthorizedRequestWhenProxyAuthSuccess() { var next = Mock.Of <RequestDelegate>(); var listener = new Mock <IWebSocketListener>(); listener.Setup(wsl => wsl.SubProtocol).Returns("abc"); listener.Setup( wsl => wsl.ProcessWebSocketRequestAsync( It.IsAny <WebSocket>(), It.IsAny <Option <EndPoint> >(), It.IsAny <EndPoint>(), It.IsAny <string>(), It.IsAny <X509Certificate2>(), It.IsAny <IList <X509Certificate2> >(), It.Is <IAuthenticator>(auth => auth == null))) .Returns(Task.CompletedTask); var registry = new WebSocketListenerRegistry(); registry.TryRegister(listener.Object); var certContentBytes = Util.Test.Common.CertificateHelper.GenerateSelfSignedCert($"test_cert").Export(X509ContentType.Cert); string certContentBase64 = Convert.ToBase64String(certContentBytes); string clientCertString = $"-----BEGIN CERTIFICATE-----\n{certContentBase64}\n-----END CERTIFICATE-----\n"; clientCertString = WebUtility.UrlEncode(clientCertString); HttpContext httpContext = this.ContextWithRequestedSubprotocolsAndForwardedCert(new StringValues(clientCertString), "abc"); var certExtractor = new Mock <IHttpProxiedCertificateExtractor>(); certExtractor.Setup(p => p.GetClientCertificate(It.IsAny <HttpContext>())).ReturnsAsync(Option.Some(new X509Certificate2(certContentBytes))); var middleware = new WebSocketHandlingMiddleware(next, registry, Task.FromResult(certExtractor.Object)); await middleware.Invoke(httpContext); listener.VerifyAll(); }