public void HttpProxy_CredentialParsing_Basic() { RemoteInvoke(() => { IWebProxy p; Environment.SetEnvironmentVariable("all_proxy", "http://*****:*****@1.1.1.1:3000"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); Assert.NotNull(p.Credentials); // Use user only without password. Environment.SetEnvironmentVariable("all_proxy", "http://[email protected]:3000"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); Assert.NotNull(p.Credentials); // Use different user for http and https Environment.SetEnvironmentVariable("https_proxy", "http://*****:*****@1.1.1.1:3000"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); Uri u = p.GetProxy(fooHttp); Assert.NotNull(p.Credentials.GetCredential(u, "Basic")); u = p.GetProxy(fooHttps); Assert.NotNull(p.Credentials.GetCredential(u, "Basic")); // This should not match Proxy Uri Assert.Null(p.Credentials.GetCredential(fooHttp, "Basic")); Assert.Null(p.Credentials.GetCredential(null, null)); return(SuccessExitCode); }).Dispose(); }
public void HttpProxy_Exceptions_Match() { RemoteInvoke(() => { IWebProxy p; Environment.SetEnvironmentVariable("no_proxy", ".test.com,, foo.com"); Environment.SetEnvironmentVariable("all_proxy", "http://*****:*****@1.1.1.1:3000"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); Assert.True(p.IsBypassed(fooHttp)); Assert.True(p.IsBypassed(fooHttps)); Assert.True(p.IsBypassed(new Uri("http://test.com"))); Assert.False(p.IsBypassed(new Uri("http://1test.com"))); Assert.True(p.IsBypassed(new Uri("http://www.test.com"))); return(SuccessExitCode); }).Dispose(); }
// On Unix we get default proxy configuration from environment variables private static IWebProxy ConstructSystemProxy() { return(HttpEnvironmentProxy.TryToCreate()); }
public void HttpProxy_EnvironmentProxy_Loaded() { RemoteInvoke(() => { IWebProxy p; Uri u; // It should not return object if there are no variables set. Assert.Null(HttpEnvironmentProxy.TryToCreate()); Environment.SetEnvironmentVariable("all_proxy", "http://1.1.1.1:3000"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); Assert.Null(p.Credentials); u = p.GetProxy(fooHttp); Assert.True(u != null && u.Host == "1.1.1.1"); u = p.GetProxy(fooHttps); Assert.True(u != null && u.Host == "1.1.1.1"); Environment.SetEnvironmentVariable("http_proxy", "http://1.1.1.2:3001"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); // Protocol specific variables should take precedence over all_ // and https should still use all_proxy. u = p.GetProxy(fooHttp); Assert.True(u != null && u.Host == "1.1.1.2" && u.Port == 3001); u = p.GetProxy(fooHttps); Assert.True(u != null && u.Host == "1.1.1.1" && u.Port == 3000); // Set https to invalid strings and use only IP & port for http. Environment.SetEnvironmentVariable("http_proxy", "1.1.1.3:3003"); Environment.SetEnvironmentVariable("https_proxy", "ab!cd"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); u = p.GetProxy(fooHttp); Assert.True(u != null && u.Host == "1.1.1.3" && u.Port == 3003); u = p.GetProxy(fooHttps); Assert.True(u != null && u.Host == "1.1.1.1" && u.Port == 3000); // Try valid URI with unsupported protocol. It will be ignored // to mimic curl behavior. Environment.SetEnvironmentVariable("https_proxy", "socks5://1.1.1.4:3004"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); u = p.GetProxy(fooHttps); Assert.True(u != null && u.Host == "1.1.1.1" && u.Port == 3000); // Set https to valid URI but different from http. Environment.SetEnvironmentVariable("https_proxy", "http://1.1.1.5:3005"); p = HttpEnvironmentProxy.TryToCreate(); Assert.NotNull(p); u = p.GetProxy(fooHttp); Assert.True(u != null && u.Host == "1.1.1.3" && u.Port == 3003); u = p.GetProxy(fooHttps); Assert.True(u != null && u.Host == "1.1.1.5" && u.Port == 3005); return(SuccessExitCode); }).Dispose(); }