diff --git a/internal/deploy/deploy.go b/internal/deploy/deploy.go index e62ae9f..a98d70c 100644 --- a/internal/deploy/deploy.go +++ b/internal/deploy/deploy.go @@ -107,6 +107,7 @@ func RunNewDeployment(t *testing.T, shouldTCPDump bool) *SlidingSyncDeployment { Env: map[string]string{}, Cmd: []string{ "mitmdump", "--mode", "reverse:http://hs1:8008@3000", "--mode", "reverse:http://hs2:8008@3001", "-s", "/addons/__init__.py", + //"--set", "statuscode=400", }, // WaitingFor: wait.ForLog("listening"), Networks: []string{networkName}, diff --git a/tests/addons/__init__.py b/tests/addons/__init__.py index feb1d2e..efc8c06 100644 --- a/tests/addons/__init__.py +++ b/tests/addons/__init__.py @@ -1,4 +1,4 @@ -from add_header import AddHeader +from status_code import StatusCode -addons = [AddHeader()] +addons = [StatusCode()] diff --git a/tests/addons/add_header.py b/tests/addons/add_header.py deleted file mode 100644 index 13c792f..0000000 --- a/tests/addons/add_header.py +++ /dev/null @@ -1,9 +0,0 @@ -class AddHeader: - def __init__(self): - self.num = 0 - - def response(self, flow): - self.num = self.num + 1 - print("got response num", self.num) - flow.response.headers["count"] = str(self.num) - \ No newline at end of file diff --git a/tests/addons/status_code.py b/tests/addons/status_code.py new file mode 100644 index 0000000..955cc5b --- /dev/null +++ b/tests/addons/status_code.py @@ -0,0 +1,31 @@ +import logging + +from mitmproxy import ctx +from mitmproxy.http import Response + +class StatusCode: + def __init__(self): + self.return_status_code = 0 # disabled + + def load(self, loader): + loader.add_option( + name="statuscode", + typespec=int, + default=0, + help="Change the response status code", + ) + + def configure(self, updates): + if "statuscode" not in updates: + self.return_status_code = 0 + return + if ctx.options.statuscode is None or ctx.options.statuscode == 0: + self.return_status_code = 0 + return + self.return_status_code = ctx.options.statuscode + logging.info(f"statuscode will return HTTP {self.return_status_code}") + + def response(self, flow): + if self.return_status_code == 0: + return + flow.response = Response.make(self.return_status_code)