mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-12-03 12:23:46 +00:00
Add test for upstream-auth
This commit is contained in:
parent
0077e0f8d9
commit
b8ae666c78
@ -1,6 +1,7 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import base64
|
||||||
|
|
||||||
import configargparse
|
import configargparse
|
||||||
|
|
||||||
@ -117,6 +118,15 @@ def parse_server_spec(url):
|
|||||||
return config.ServerSpec(scheme, address)
|
return config.ServerSpec(scheme, address)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_upstream_auth(auth):
|
||||||
|
pattern = re.compile(":")
|
||||||
|
if pattern.search(auth) is None:
|
||||||
|
raise configargparse.ArgumentTypeError(
|
||||||
|
"Invalid upstream auth specification: %s" % auth
|
||||||
|
)
|
||||||
|
return "Basic" + " " + base64.b64encode(auth)
|
||||||
|
|
||||||
|
|
||||||
def get_common_options(options):
|
def get_common_options(options):
|
||||||
stickycookie, stickyauth = None, None
|
stickycookie, stickyauth = None, None
|
||||||
if options.stickycookie_filt:
|
if options.stickycookie_filt:
|
||||||
@ -373,6 +383,7 @@ def proxy_options(parser):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--upstream-auth",
|
"--upstream-auth",
|
||||||
action="store", dest="upstream_auth", default=None,
|
action="store", dest="upstream_auth", default=None,
|
||||||
|
type=parse_upstream_auth,
|
||||||
help="""
|
help="""
|
||||||
Proxy Authentication:
|
Proxy Authentication:
|
||||||
username:password
|
username:password
|
||||||
|
@ -2,7 +2,6 @@ from __future__ import (absolute_import, print_function, division)
|
|||||||
import Cookie
|
import Cookie
|
||||||
import copy
|
import copy
|
||||||
import warnings
|
import warnings
|
||||||
import base64
|
|
||||||
from email.utils import parsedate_tz, formatdate, mktime_tz
|
from email.utils import parsedate_tz, formatdate, mktime_tz
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -194,8 +193,7 @@ class HTTPRequest(MessageMixin, Request):
|
|||||||
return id(self)
|
return id(self)
|
||||||
|
|
||||||
def set_auth(self, auth):
|
def set_auth(self, auth):
|
||||||
auth_str = "Basic" + " " + base64.b64encode(auth)
|
self.data.headers.set_all("Proxy-Authorization", (auth,))
|
||||||
self.data.headers.set_all("Proxy-Authorization", (auth_str,))
|
|
||||||
|
|
||||||
def replace(self, pattern, repl, *args, **kwargs):
|
def replace(self, pattern, repl, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
import base64
|
||||||
from mitmproxy import cmdline
|
from mitmproxy import cmdline
|
||||||
from . import tutils
|
from . import tutils
|
||||||
|
|
||||||
@ -53,6 +54,12 @@ def test_parse_server_spec():
|
|||||||
"http://")
|
"http://")
|
||||||
|
|
||||||
|
|
||||||
|
def test_parse_upstream_auth():
|
||||||
|
tutils.raises("Invalid upstream auth specification", cmdline.parse_upstream_auth, "")
|
||||||
|
assert cmdline.parse_upstream_auth(
|
||||||
|
"test:test") == "Basic" + " " + base64.b64encode("test:test")
|
||||||
|
|
||||||
|
|
||||||
def test_parse_setheaders():
|
def test_parse_setheaders():
|
||||||
x = cmdline.parse_setheader("/foo/bar/voing")
|
x = cmdline.parse_setheader("/foo/bar/voing")
|
||||||
assert x == ("foo", "bar", "voing")
|
assert x == ("foo", "bar", "voing")
|
||||||
|
@ -92,6 +92,10 @@ class TestProcessProxyOptions:
|
|||||||
self.assert_err("expected one argument", "-U")
|
self.assert_err("expected one argument", "-U")
|
||||||
self.assert_err("Invalid server specification", "-U", "upstream")
|
self.assert_err("Invalid server specification", "-U", "upstream")
|
||||||
|
|
||||||
|
self.assert_noerr("--upstream-auth", "test:test")
|
||||||
|
self.assert_err("expected one argument", "--upstream-auth")
|
||||||
|
self.assert_err("Invalid upstream auth specification", "--upstream-auth", "test")
|
||||||
|
|
||||||
self.assert_err("not allowed with", "-R", "http://localhost", "-T")
|
self.assert_err("not allowed with", "-R", "http://localhost", "-T")
|
||||||
|
|
||||||
def test_socks_auth(self):
|
def test_socks_auth(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user