From fe4bab2e6ff2e14397b7563d17a02550b320fc5b Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 8 Feb 2014 12:33:59 +1300 Subject: [PATCH] Cleanup: fix unit tests, simpler app test, remove print statements --- test/data/confdir/mitmproxy-ca-cert.cer | 17 ++++++++ test/data/confdir/mitmproxy-ca-cert.p12 | Bin 0 -> 1689 bytes test/data/confdir/mitmproxy-ca-cert.pem | 17 ++++++++ test/data/confdir/mitmproxy-ca.pem | 32 +++++++++++++++ test/data/serverkey.pem | 32 --------------- test/test_app.py | 50 +++--------------------- test/test_flow.py | 2 - test/test_server.py | 1 + test/tservers.py | 10 ++--- 9 files changed, 76 insertions(+), 85 deletions(-) create mode 100644 test/data/confdir/mitmproxy-ca-cert.cer create mode 100644 test/data/confdir/mitmproxy-ca-cert.p12 create mode 100644 test/data/confdir/mitmproxy-ca-cert.pem create mode 100644 test/data/confdir/mitmproxy-ca.pem delete mode 100644 test/data/serverkey.pem diff --git a/test/data/confdir/mitmproxy-ca-cert.cer b/test/data/confdir/mitmproxy-ca-cert.cer new file mode 100644 index 000000000..cc7f8f199 --- /dev/null +++ b/test/data/confdir/mitmproxy-ca-cert.cer @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICnzCCAgigAwIBAgIGDKiSwuJOMA0GCSqGSIb3DQEBBQUAMCgxEjAQBgNVBAMT +CW1pdG1wcm94eTESMBAGA1UEChMJbWl0bXByb3h5MB4XDTE0MDIwNzIzMjcwOFoX +DTE2MDEyODIzMjcwOFowKDESMBAGA1UEAxMJbWl0bXByb3h5MRIwEAYDVQQKEwlt +aXRtcHJveHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKsZ+XnBvjCjAJ00 +9M+v41AT91h7v7cF1UG0BpS3y4MOysN88btHM/IWRCllnmY+zx5LTMAEtbnqyOIk +nkgJ0sU3CFWHRIfwkinssEtMM2mOAFXm0wqffECxwe1p5z84M7nOolzuuw4FtkaK +G9/UqANdRVs6uOwz+CuyOSY7illTAgMBAAGjgdMwgdAwDwYDVR0TAQH/BAUwAwEB +/zAUBglghkgBhvhCAQEBAf8EBAMCAgQwewYDVR0lAQH/BHEwbwYIKwYBBQUHAwEG +CCsGAQUFBwMCBggrBgEFBQcDBAYIKwYBBQUHAwgGCisGAQQBgjcCARUGCisGAQQB +gjcCARYGCisGAQQBgjcKAwEGCisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG ++EIEATALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFFKVDIF+w2Ns4KsJx6tJZpILqWwG +MA0GCSqGSIb3DQEBBQUAA4GBABWYxoYFLgZh/ujz/0jrNsx0pvSNVTU1T669374z +PhO+ScvzuxVbgI2NQv86aqih35pzakK/DyKaTck85QduDiSiLNw2Yb5UfJvO4C0d +dPzQMIKNTInFFiLBjbvxx9cuDwAPyYOF247Xj9M6C2x6e/gq1L+GR75wT5288x9h +rFTJ +-----END CERTIFICATE----- diff --git a/test/data/confdir/mitmproxy-ca-cert.p12 b/test/data/confdir/mitmproxy-ca-cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..d4cec0d47d5df46b1bba5d4bc5387dc42163f18f GIT binary patch literal 1689 zcmZXTdpHvcAII%t%(XU`EYcMRVk2Ba@sH{#M;OzCR^?j$;@$$lp5Nb zYeaH+dqssdR2vSH47nfYdEWQ!eV+5j@A*B?=llG=fBilv8YBk@0HJ7*00>k!$suV) z9v}r^(I75h8szK_c0kcU_CF&Ciw45%prb&5#LhzgOaLf#h|GT)9p)r$?phj&7_bsx24Yf{TT zF{nrlRE~Od^(c0`^M|^Z{93Z?7(K{5h@W42{zf()(cx3n{L2XvtloENU+Cc@RKJnD zf7$eHAM*E?&Q$8z12kL_eveC;h>KOC0Be(ejB%QduVLjEMd6SP`w-%%tJGpR-EeVC z(cS3Xb*o}rz^dSVTGOT04pI@WTy;QTG3me}KUdJpQxYe&*ZIO+a-}!rpg0So#wo86 zQevv&{ardu<|~&UXHHoY=~WLX7EJiFQ4?*8%JaA9%1E=l=^1SoJ$S$~y(NWT?Xx-sKyz0PVk!{`=6v9J1*H*Dq)b?Y2;i2Jbgc7`*l~md;+nZK3kG4*Y!(A5aqqL z8|#`XtM)XqaLOKZYh%9m3Kkieez`mN>$x+Hd`^`eF`RXb$eqZu+{3Wft$7g3Pr;)P zc;5^g5*WX)d9hF9mSqC*zWT(d5&1D((><=52a7N_jjDdoqf;J{~RifLSp_)P5Y%7?&iP>IAy34=TV%TCXjnigC zm9W{UEE#5!gdZ>O(VAgwL}lb_4mL2&%6r%tIpMRKqF`&bVbzEHAi#z;r(Nmqyp(O6 zSG~t$`d6pp)cEy|5az_*beUYoGvO9KV9|Q}wF<~GkRtlR?cH27UmQ6z~vr4;O zKeQCSB${M;qP=?`&zJ;<>c8Xg?z|9@uw{*!OHW+S>$iljg3`rT&ExySDr(hIQ)Z41 zNB0-4x9V`_I#E|#j{p8hKo2b8$!M1K#a`@2>KSI=_(t6;p^aMY$Ru*uGbkEx_5Xxn z(SS2x8c?u94nXAY6U`kzygvc?8>0fi!OrPt1NWg(2qpisK z9t)>T{ZKP1Z`UxH&pi$*m&-m(M!>jteNXzn!ttW(=P(p8AJ%2!*Q)e#m zGX9?)K+M`Q_0_Ckfy}L#v zmm(pi&3lCqDpUR85I$>aig66*$YuXy;=tF6Lb98!UhkJ23b#JuE@6LEbCaiZcO=U* zdA4vNX}2q*Pt(-gkYV}Ec6J_fScQ~`UWi$OB~k+a9kPnE`3hQu^L3uL2QZ4c%Xa$X zS3ZAS{4FDMkPyf^SH{#j_a@?p@O7F9zjr0Sxe+J&U|moW7^Y^FZ`Q&|SjIfHQH%p} zOdAwlqE1uP5x|*)iR^fUowE}=Pu6nAdwra!%ntJgF>aPFUoJHb>bq2H&kL>ynwNFRbq><_qpjF6l%-2I6AJzYvj@G93YP>J9**cR7YCUgYw z&__^*{`b{TWwZ)diO-?JpDZhgNBRWCZF4=~O9c#T6cTj+1%*iJDS&_oNeQsh#ro`% fXC(_Y&f(X^qavl<)pEw)!P3{N(9K(ZHAa5|&aD*~ literal 0 HcmV?d00001 diff --git a/test/data/confdir/mitmproxy-ca-cert.pem b/test/data/confdir/mitmproxy-ca-cert.pem new file mode 100644 index 000000000..cc7f8f199 --- /dev/null +++ b/test/data/confdir/mitmproxy-ca-cert.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICnzCCAgigAwIBAgIGDKiSwuJOMA0GCSqGSIb3DQEBBQUAMCgxEjAQBgNVBAMT +CW1pdG1wcm94eTESMBAGA1UEChMJbWl0bXByb3h5MB4XDTE0MDIwNzIzMjcwOFoX +DTE2MDEyODIzMjcwOFowKDESMBAGA1UEAxMJbWl0bXByb3h5MRIwEAYDVQQKEwlt +aXRtcHJveHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKsZ+XnBvjCjAJ00 +9M+v41AT91h7v7cF1UG0BpS3y4MOysN88btHM/IWRCllnmY+zx5LTMAEtbnqyOIk +nkgJ0sU3CFWHRIfwkinssEtMM2mOAFXm0wqffECxwe1p5z84M7nOolzuuw4FtkaK +G9/UqANdRVs6uOwz+CuyOSY7illTAgMBAAGjgdMwgdAwDwYDVR0TAQH/BAUwAwEB +/zAUBglghkgBhvhCAQEBAf8EBAMCAgQwewYDVR0lAQH/BHEwbwYIKwYBBQUHAwEG +CCsGAQUFBwMCBggrBgEFBQcDBAYIKwYBBQUHAwgGCisGAQQBgjcCARUGCisGAQQB +gjcCARYGCisGAQQBgjcKAwEGCisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG ++EIEATALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFFKVDIF+w2Ns4KsJx6tJZpILqWwG +MA0GCSqGSIb3DQEBBQUAA4GBABWYxoYFLgZh/ujz/0jrNsx0pvSNVTU1T669374z +PhO+ScvzuxVbgI2NQv86aqih35pzakK/DyKaTck85QduDiSiLNw2Yb5UfJvO4C0d +dPzQMIKNTInFFiLBjbvxx9cuDwAPyYOF247Xj9M6C2x6e/gq1L+GR75wT5288x9h +rFTJ +-----END CERTIFICATE----- diff --git a/test/data/confdir/mitmproxy-ca.pem b/test/data/confdir/mitmproxy-ca.pem new file mode 100644 index 000000000..2a2343a63 --- /dev/null +++ b/test/data/confdir/mitmproxy-ca.pem @@ -0,0 +1,32 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCrGfl5wb4wowCdNPTPr+NQE/dYe7+3BdVBtAaUt8uDDsrDfPG7 +RzPyFkQpZZ5mPs8eS0zABLW56sjiJJ5ICdLFNwhVh0SH8JIp7LBLTDNpjgBV5tMK +n3xAscHtaec/ODO5zqJc7rsOBbZGihvf1KgDXUVbOrjsM/grsjkmO4pZUwIDAQAB +AoGAUtjn4Fm8cqZqpLRAmdOruFmCmbiJ0uAjK4Y07Yu1IgdmjJOSJMFMWLsJVBYd +RZrCBQQm7I8bQyN5E27xqSYAhKz7ymjgHGWlTXENtvfx/XlIIn9DYENKpN1N8Y/5 +BCt0O/F9h2/Z+zGNdV3R2tX3WuSjYlqzzD2RDBIDPe6Fr8kCQQDSLcyqGRXamt0X +MjPtltJHIjIXHp+++qQDT3n8eaP0maWtAm+75PzWGqOvfg4F2VoWMTGdDEbHbCmH +Qa6EW0B/AkEA0Gc90xLD+qLqVEbzdveca+yO1lAastqoYzRuM1StZ1Y4pW7F5D23 +MNhV0zV6z7ejZYnnsGvuQLTx51X8Ff59LQJAF1mxQECTNfs4jugr7rxv1ilNaVYk +p0IPULLWuZ8GARnE10jLAxP4pwzEnK2jfzDbmlWSzoDbqDIzFuzMJ7Y/nwJBAL+s +dNxRAhbfCA6DQyFEE4XfiG/sNOIS4ZR8gG6Njv7f+jGNdEy7xmUSU71yDoZFK+8T +qxhD7FlvEp3mI3hHG/ECQQC0x7z/lr5KRsFGqVZOErkc3nOZO+4rjApHSlbuhDLU +mnUwIi06KyjbN+0XL+6bJl+L5nfL3TIlnyHMJAta2uta +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIICnzCCAgigAwIBAgIGDKiSwuJOMA0GCSqGSIb3DQEBBQUAMCgxEjAQBgNVBAMT +CW1pdG1wcm94eTESMBAGA1UEChMJbWl0bXByb3h5MB4XDTE0MDIwNzIzMjcwOFoX +DTE2MDEyODIzMjcwOFowKDESMBAGA1UEAxMJbWl0bXByb3h5MRIwEAYDVQQKEwlt +aXRtcHJveHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKsZ+XnBvjCjAJ00 +9M+v41AT91h7v7cF1UG0BpS3y4MOysN88btHM/IWRCllnmY+zx5LTMAEtbnqyOIk +nkgJ0sU3CFWHRIfwkinssEtMM2mOAFXm0wqffECxwe1p5z84M7nOolzuuw4FtkaK +G9/UqANdRVs6uOwz+CuyOSY7illTAgMBAAGjgdMwgdAwDwYDVR0TAQH/BAUwAwEB +/zAUBglghkgBhvhCAQEBAf8EBAMCAgQwewYDVR0lAQH/BHEwbwYIKwYBBQUHAwEG +CCsGAQUFBwMCBggrBgEFBQcDBAYIKwYBBQUHAwgGCisGAQQBgjcCARUGCisGAQQB +gjcCARYGCisGAQQBgjcKAwEGCisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG ++EIEATALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFFKVDIF+w2Ns4KsJx6tJZpILqWwG +MA0GCSqGSIb3DQEBBQUAA4GBABWYxoYFLgZh/ujz/0jrNsx0pvSNVTU1T669374z +PhO+ScvzuxVbgI2NQv86aqih35pzakK/DyKaTck85QduDiSiLNw2Yb5UfJvO4C0d +dPzQMIKNTInFFiLBjbvxx9cuDwAPyYOF247Xj9M6C2x6e/gq1L+GR75wT5288x9h +rFTJ +-----END CERTIFICATE----- diff --git a/test/data/serverkey.pem b/test/data/serverkey.pem deleted file mode 100644 index 289bfa71f..000000000 --- a/test/data/serverkey.pem +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQC+N+9bv1YC0GKbGdv2wMuuWTGSNwE/Hq5IIxYN1eITsvbD1GgB -69x++XJd6KTIthnta0KCpCAtbaYbCkhUfxCVv2bP+iQt2AjwMOZlgRZ+RGJ25dBu -AjAxQmqDJcAdS6MoRHWziomnUNfNogVrfqjpvJor+1iRnrj2q00ab9WYCwIDAQAB -AoGBAIM7V9l2UcKzPbQ/zO+Z52urgXWcmTGQ2zBNdIOrEcQBbhmAyxi4PnEja3G6 -dSU77PtNSp+S19g/k5+IIoqY9zkGigdaPhRVRKJgBTAzFzMz+WHpQIffDojFKCnL -gyDnzMRJY8+cnsCqbHRY4hqFiCr8Rq9sCdlynAytdtrnxzqhAkEA9bha6MO+L0JA -6IEEbVY1vtaUO9Xg5DUDjRxQcfniSJACb/2IvF0tvxAnG7I/S8AavCXqtlDPtYkI -WOxY5Sd62QJBAMYtKUxGka4XxwCyBK8EUNaN8m9C++mpjoHD1kFri9B1bXm91nCO -iGWqtqdarwyEc/pAHw5UGzVyBXticPIcs4MCQQCcPvsHsZhYoq91aLyw7bXFQNsH -ZUvYsOEuNIfuwa+i5ne2UKhG5pU1PgcwNFrNRz140D98aMx7KcS2DqvEIyOZAkBF -6Yi4L+0Uza6WwDaGx679AfaU6byVIgv0G3JqgdZBJCwK1r3f12im9SKax5MZh2Ci -2Bwcoe83W5IzhPbzcsyhAkBo8O2U2vig5PQWQ0BUKJrCGHLq//D/ttdLVtmc6eWc -zqssCF3Unkk3bOq35swSKeAx8WotPPVsALWr87N2hCB+ ------END RSA PRIVATE KEY----- ------BEGIN CERTIFICATE----- -MIICsDCCAhmgAwIBAgIJANwogM9sqMHLMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV -BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX -aWRnaXRzIFB0eSBMdGQwHhcNMTAwMTMxMDEzOTEzWhcNMTEwMTMxMDEzOTEzWjBF -MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 -ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB -gQC+N+9bv1YC0GKbGdv2wMuuWTGSNwE/Hq5IIxYN1eITsvbD1GgB69x++XJd6KTI -thnta0KCpCAtbaYbCkhUfxCVv2bP+iQt2AjwMOZlgRZ+RGJ25dBuAjAxQmqDJcAd -S6MoRHWziomnUNfNogVrfqjpvJor+1iRnrj2q00ab9WYCwIDAQABo4GnMIGkMB0G -A1UdDgQWBBTTnBZyw7ZZsb8+/6gvZFIHhVgtDzB1BgNVHSMEbjBsgBTTnBZyw7ZZ -sb8+/6gvZFIHhVgtD6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt -U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJANwogM9s -qMHLMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEApz428aOar0EBuAib -I+liefRlK4I3MQQxq3tOeB1dgAIo0ivKtdVJGi1kPg8EO0KMvFfn6IRtssUmFgCp -JBD+HoDzFxwI1bLMVni+g7OzaNSwL3nQ94lZUdpWMYDxqY4bLUv3goX1TlN9lmpG -8FiBLYUC0RNTCCRDFGfDr/wUT/M= ------END CERTIFICATE----- diff --git a/test/test_app.py b/test/test_app.py index 1046be20b..f0eab7cc7 100644 --- a/test/test_app.py +++ b/test/test_app.py @@ -2,56 +2,18 @@ import mock, socket, os, time from libmproxy import dump from netlib import certutils, tcp from libpathod.pathoc import Pathoc -import tutils - -def get_free_port(): - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.bind(("127.0.0.1", 0)) - port = s.getsockname()[1] - s.close() - return port - - -class AppTestMixin(object): - def request(self, spec): - t_start = time.time() - while (time.time() - t_start) < 5: - try: - p = Pathoc(("127.0.0.1", self.port)) - p.connect() # might fail as the server might not be online yet. - return p.request(spec) - except tcp.NetLibError: - time.sleep(0.01) - assert False - +import tutils, tservers +class TestApp(tservers.HTTPProxTest): def test_basic(self): - assert self.request("get:/").status_code == 200 - assert self.request("get:/").status_code == 200 # Check for connection close - assert len(self.m.apps.apps) == 0 + assert self.app("/").status_code == 200 def test_cert(self): + path = tutils.test_data.path("data/confdir/") + "mitmproxy-ca-cert." with tutils.tmpdir() as d: - # Create Certs - path = os.path.join(d, "test") - assert certutils.dummy_ca(path) - self.m.server.config.cacert = path - for ext in ["pem", "p12"]: - resp = self.request("get:/cert/%s" % ext) + resp = self.app("/cert/%s" % ext) assert resp.status_code == 200 - with open(path + "-cert.%s" % ext, "rb") as f: + with open(path + ext, "rb") as f: assert resp.content == f.read() -class TestAppExternal(AppTestMixin): - @classmethod - def setupAll(cls): - cls.port = get_free_port() - o = dump.Options(app=True, app_external=True, app_host="127.0.0.1", app_port=cls.port) - s = mock.MagicMock() - cls.m = dump.DumpMaster(s, o, None) - - - @classmethod - def teardownAll(cls): - cls.m.shutdown() \ No newline at end of file diff --git a/test/test_flow.py b/test/test_flow.py index 65e153ea3..fbead1ca9 100644 --- a/test/test_flow.py +++ b/test/test_flow.py @@ -980,8 +980,6 @@ class TestRequest: r = tutils.treq() r.headers = h result = len(r._assemble_headers()) - print result - print r._assemble_headers() assert result == 62 def test_get_content_type(self): diff --git a/test/test_server.py b/test/test_server.py index 756492934..2f9e67284 100644 --- a/test/test_server.py +++ b/test/test_server.py @@ -153,6 +153,7 @@ class TestHTTP(tservers.HTTPProxTest, CommonMixin, AppMixin): connection.close() assert "content-length" in resp.lower() + class TestHTTPAuth(tservers.HTTPProxTest): authenticator = http_auth.BasicProxyAuth(http_auth.PassManSingleUser("test", "test"), "realm") def test_auth(self): diff --git a/test/tservers.py b/test/tservers.py index ee84db574..812e8921d 100644 --- a/test/tservers.py +++ b/test/tservers.py @@ -51,7 +51,6 @@ class ProxyThread(threading.Thread): threading.Thread.__init__(self) self.tmaster = tmaster self.name = "ProxyThread (%s:%s)" % (tmaster.server.address.host, tmaster.server.address.port) - controller.should_exit = False @property @@ -85,7 +84,7 @@ class ProxTestBase(object): pconf = cls.get_proxy_config() config = proxy.ProxyConfig( no_upstream_cert = cls.no_upstream_cert, - cacert = tutils.test_data.path("data/serverkey.pem"), + cacert = tutils.test_data.path("data/confdir/mitmproxy-ca.pem"), authenticator = cls.authenticator, **pconf ) @@ -162,9 +161,7 @@ class HTTPProxTest(ProxTestBase): def app(self, page): if self.ssl: p = libpathod.pathoc.Pathoc(("127.0.0.1", self.proxy.port), True) - print "PRE" p.connect((APP_HOST, APP_PORT)) - print "POST" return p.request("get:'/%s'"%page) else: p = self.pathoc() @@ -255,9 +252,8 @@ class ChainProxTest(ProxTestBase): """ n = 2 chain_config = [lambda: proxy.ProxyConfig( - cacert = tutils.test_data.path("data/serverkey.pem") + cacert = tutils.test_data.path("data/confdir/mitmproxy-ca.pem"), )] * n - @classmethod def setupAll(cls): super(ChainProxTest, cls).setupAll() @@ -295,4 +291,4 @@ class HTTPChainProxyTest(ChainProxTest): p.connect(("127.0.0.1", self.server.port)) else: p.connect() - return p \ No newline at end of file + return p