def test_export(tmpdir): f = str(tmpdir.join("path")) e = export.Export() with taddons.context(): assert e.formats() == [ "curl", "httpie", "raw", "raw_request", "raw_response" ] with pytest.raises(exceptions.CommandError): e.file("nonexistent", tflow.tflow(resp=True), f) e.file("raw_request", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f) e.file("raw_response", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f) e.file("curl", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f) e.file("httpie", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f)
def default_addons(): return [ core.Core(), browser.Browser(), block.Block(), anticache.AntiCache(), anticomp.AntiComp(), check_ca.CheckCA(), clientplayback.ClientPlayback(), command_history.CommandHistory(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), script.ScriptLoader(), serverplayback.ServerPlayback(), mapremote.MapRemote(), modifybody.ModifyBody(), modifyheaders.ModifyHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), ]
async def test_clip(tmpdir): e = export.Export() with taddons.context() as tctx: with pytest.raises(exceptions.CommandError): e.clip("nonexistent", tflow.tflow(resp=True)) with mock.patch('pyperclip.copy') as pc: e.clip("raw_request", tflow.tflow(resp=True)) assert pc.called with mock.patch('pyperclip.copy') as pc: e.clip("raw_response", tflow.tflow(resp=True)) assert pc.called with mock.patch('pyperclip.copy') as pc: e.clip("curl", tflow.tflow(resp=True)) assert pc.called with mock.patch('pyperclip.copy') as pc: e.clip("httpie", tflow.tflow(resp=True)) assert pc.called with mock.patch('pyperclip.copy') as pc: log_message = "Pyperclip could not find a " \ "copy/paste mechanism for your system." pc.side_effect = pyperclip.PyperclipException(log_message) e.clip("raw_request", tflow.tflow(resp=True)) assert await tctx.master.await_log(log_message, level="error")
def default_addons(): return [ core.Core(), core_option_validation.CoreOptionValidation(), allowremote.AllowRemote(), anticache.AntiCache(), anticomp.AntiComp(), check_alpn.CheckALPN(), check_ca.CheckCA(), clientplayback.ClientPlayback(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), replace.Replace(), script.ScriptLoader(), serverplayback.ServerPlayback(), setheaders.SetHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), ]
def default_addons(): return [ core.Core(), browser.Browser(), block.Block(), blocklist.BlockList(), anticache.AntiCache(), anticomp.AntiComp(), clientplayback.ClientPlayback(), command_history.CommandHistory(), comment.Comment(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), proxyserver.Proxyserver(), script.ScriptLoader(), next_layer.NextLayer(), serverplayback.ServerPlayback(), mapremote.MapRemote(), maplocal.MapLocal(), modifybody.ModifyBody(), modifyheaders.ModifyHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), save.Save(), tlsconfig.TlsConfig(), upstream_auth.UpstreamAuth(), ]
def test_export(tmp_path) -> None: f = tmp_path / "outfile" e = export.Export() with taddons.context() as tctx: tctx.configure(e) assert e.formats() == [ "curl", "httpie", "raw", "raw_request", "raw_response" ] with pytest.raises(exceptions.CommandError): e.file("nonexistent", tflow.tflow(resp=True), f) e.file("raw_request", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f) e.file("raw_response", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f) e.file("curl", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f) e.file("httpie", tflow.tflow(resp=True), f) assert qr(f) os.unlink(f)
async def test_export_open(exception, log_message, tmpdir): f = str(tmpdir.join("path")) e = export.Export() with taddons.context() as tctx: with mock.patch("mitmproxy.addons.export.open") as m: m.side_effect = exception(log_message) e.file("raw", tflow.tflow(resp=True), f) assert await tctx.master.await_log(log_message, level="error")
def test_clip(tmpdir): e = export.Export() with taddons.context(): with pytest.raises(exceptions.CommandError): e.clip("nonexistent", tflow.tflow(resp=True)) with mock.patch('pyperclip.copy') as pc: e.clip("raw", tflow.tflow(resp=True)) assert pc.called with mock.patch('pyperclip.copy') as pc: e.clip("curl", tflow.tflow(resp=True)) assert pc.called
def test_correct_host_used(self, get_request): e = export.Export() with taddons.context() as tctx: tctx.configure(e) get_request.request.headers["host"] = "domain:22" result = """curl -H 'header: qvalue' -H 'host: domain:22' 'http://domain:22/path?a=foo&a=bar&b=baz'""" assert export.curl_command(get_request) == result tctx.options.export_preserve_original_ip = True result = """curl --resolve 'domain:22:[192.168.0.1]' -H 'header: qvalue' -H 'host: domain:22' """ \ """'http://domain:22/path?a=foo&a=bar&b=baz'""" assert export.curl_command(get_request) == result
def default_addons(): return [ core.Core(), browser.Browser(), block.Block(), anticache.AntiCache(), anticomp.AntiComp(), check_ca.CheckCA(), clientplayback.ClientPlayback(), cut.Cut(), disable_h2c.DisableH2C(), export.Export(), onboarding.Onboarding(), proxyauth.ProxyAuth(), replace.Replace(), script.ScriptLoader(), serverplayback.ServerPlayback(), setheaders.SetHeaders(), stickyauth.StickyAuth(), stickycookie.StickyCookie(), streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), ]
def export_curl(): e = export.Export() with taddons.context() as tctx: tctx.configure(e) yield export.curl_command