Commit 6e9016cf authored by justcoding121's avatar justcoding121

cleanup integration tests

parent 2e0864c4
......@@ -36,7 +36,7 @@ function Install-DocFx()
{
if(!(Test-Path $env:ChocolateyInstall\lib\docfx\tools*))
{
choco install docfx --version 2.40.1
choco install docfx --version 2.40.1
}
$env:Path += ";$env:ChocolateyInstall\lib\docfx\tools"
}
......
......@@ -15,46 +15,36 @@ namespace Titanium.Web.Proxy.IntegrationTests
public async Task Can_Intercept_Post_Requests()
{
string testUrl = "http://interceptthis.com";
int proxyPort = 8086;
var proxy = new ProxyTestController();
proxy.StartProxy(proxyPort);
using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort))
using (var proxy = new ProxyTestController())
{
var response = await client.PostAsync(new Uri(testUrl), new StringContent("hello!"));
using (var client = TestHelper.CreateHttpClient(testUrl, proxy.ListeningPort))
{
var response = await client.PostAsync(new Uri(testUrl), new StringContent("hello!"));
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
var body = await response.Content.ReadAsStringAsync();
Assert.IsTrue(body.Contains("TitaniumWebProxy-Stopped!!"));
var body = await response.Content.ReadAsStringAsync();
Assert.IsTrue(body.Contains("TitaniumWebProxy-Stopped!!"));
}
}
}
private class ProxyTestController
private class ProxyTestController : IDisposable
{
private readonly ProxyServer proxyServer;
public int ListeningPort => proxyServer.ProxyEndPoints[0].Port;
public ProxyTestController()
{
proxyServer = new ProxyServer();
proxyServer.CertificateManager.RootCertificateName = "root-certificate-for-integration-test.pfx";
}
public void StartProxy(int proxyPort)
{
proxyServer.BeforeRequest += OnRequest;
var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, proxyPort, true);
var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 0, true);
proxyServer.AddEndPoint(explicitEndPoint);
proxyServer.BeforeRequest += OnRequest;
proxyServer.Start();
}
public void Stop()
{
proxyServer.BeforeRequest -= OnRequest;
proxyServer.Stop();
proxyServer.Dispose();
}
public async Task OnRequest(object sender, SessionEventArgs e)
{
if (e.WebSession.Request.Url.Contains("interceptthis.com"))
......@@ -70,6 +60,14 @@ namespace Titanium.Web.Proxy.IntegrationTests
await Task.FromResult(0);
}
public void Dispose()
{
proxyServer.BeforeRequest -= OnRequest;
proxyServer.Stop();
proxyServer.Dispose();
}
}
}
}
\ No newline at end of file
using System;
using System.Net;
using System.Net.Http;
using System.Net.Security;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Titanium.Web.Proxy.EventArguments;
using Titanium.Web.Proxy.Models;
namespace Titanium.Web.Proxy.IntegrationTests
......@@ -16,41 +13,35 @@ namespace Titanium.Web.Proxy.IntegrationTests
public async Task TestSsl()
{
string testUrl = "https://google.com";
int proxyPort = 8086;
var proxy = new ProxyTestController();
proxy.StartProxy(proxyPort);
using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort))
using (var proxy = new ProxyTestController())
{
var response = await client.GetAsync(new Uri(testUrl));
Assert.IsNotNull(response);
using (var client = TestHelper.CreateHttpClient(testUrl, proxy.ListeningPort))
{
var response = await client.GetAsync(new Uri(testUrl));
Assert.IsNotNull(response);
}
}
}
private class ProxyTestController
private class ProxyTestController : IDisposable
{
private readonly ProxyServer proxyServer;
public int ListeningPort => proxyServer.ProxyEndPoints[0].Port;
public ProxyTestController()
{
proxyServer = new ProxyServer();
proxyServer.CertificateManager.RootCertificateName = "root-certificate-for-integration-test.pfx";
}
public void StartProxy(int proxyPort)
{
var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, proxyPort, true);
var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 0, true);
proxyServer.AddEndPoint(explicitEndPoint);
proxyServer.Start();
}
public void Stop()
public void Dispose()
{
proxyServer.Stop();
proxyServer.Dispose();
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment