def test_make_null(self): test_filter = edit_response.filter_factory(self.make_null)(self.app) resp = test_filter(webob.Request.blank("/sauce", method="GET")) new_body = json.dumps(dict(result=None)) resp_json = json.dumps(json.loads(resp.body)) self.assertEqual(resp_json, new_body) self.assertEqual(resp.status_code, 200)
def test_attrib_deletion(self): test_filter = edit_response.filter_factory(self.delete_conf)(self.app) resp = test_filter(webob.Request.blank("/secrets", method="PUT")) new_body = self.body del (new_body["result"]["passcode"]) self.assertEqual(resp.json, new_body) self.assertEqual(resp.status_code, 200)
def test_attrib_rename(self): test_filter = edit_response.filter_factory(self.redact_conf)(self.app) resp = test_filter(webob.Request.blank("/sauce", method="GET")) new_body = self.body new_body["result"]["recipe"] = "REDACTED" self.assertEqual(resp.json, new_body) self.assertEqual(resp.status_code, 200)
def test_attrib_deletion(self): test_filter = edit_response.filter_factory(self.delete_conf)(self.app) resp = test_filter(webob.Request.blank("/secrets", method="PUT")) new_body = self.body del (new_body['result']['passcode']) self.assertEqual(resp.json, new_body) self.assertEqual(resp.status_code, 200)
def test_resource_with_alternate_methods(self): test_filter = edit_response.filter_factory(self.combo_conf)(self.app) put_resp = test_filter(webob.Request.blank("/data", method="PUT")) get_resp = test_filter(webob.Request.blank("/data", method="GET")) head_resp = test_filter(webob.Request.blank("/data", method="HEAD")) self.assertEqual(put_resp, self.app) self.assertEqual(get_resp, self.app) self.assertEqual(head_resp, self.app)
def test_attrib_combo(self): test_filter = edit_response.filter_factory(self.combo_conf)(self.app) resp = test_filter(webob.Request.blank("/data", method="POST")) new_body = self.body new_body["result"]["combination"] = "REDACTED" del (new_body["result"]["secret"]) self.assertEqual(resp.json, new_body) self.assertEqual(resp.status_code, 200)
def test_url_garbage(self): test_filter = edit_response.filter_factory(self.combo_conf)(self.app) resp1 = test_filter(webob.Request.blank("/gibberish/data", method="POST")) resp2 = test_filter(webob.Request.blank("/hacks?stuff=/data", method="POST")) resp3 = test_filter(webob.Request.blank("/stuffanddata", method="POST")) self.assertEqual(resp1, self.app) self.assertEqual(resp2, self.app) self.assertEqual(resp3, self.app)
def test_attrib_combo(self): test_filter = edit_response.filter_factory(self.combo_conf)(self.app) resp = test_filter(webob.Request.blank("/data", method="POST")) new_body = self.body new_body['result']['combination'] = 'REDACTED' del (new_body['result']['secret']) self.assertEqual(resp.json, new_body) self.assertEqual(resp.status_code, 200)
def test_none_request(self): app_body = "garbage" @webob.dec.wsgify def app(req): return webob.Response(body=app_body, status=200) test_filter = edit_response.filter_factory(self.test_none)(app) resp = test_filter(webob.Request.blank("/sauce/None", method="GET")) self.assertEqual(resp.body, app_body)
def test_attrib_case_sensitivity(self): app_body = {"results": {"Combination": "DONT LOOK", "SECRET": "<encrypted text>"}} @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(self.combo_conf)(app) resp = test_filter(webob.Request.blank("/data", method="POST")) self.assertEqual(resp.json, app_body)
def test_keep_if(self): app_body = {"results": [{"some": "here"}, {"some": "there"}, {"derp": "derp"}]} processed_body = {"results": [{"some": "there"}, {"derp": "derp"}]} @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(self.drop_if)(app) resp = test_filter(webob.Request.blank("/sauce", method="GET")) self.assertEqual(resp.json, processed_body)
def test_url_garbage(self): test_filter = edit_response.filter_factory(self.combo_conf)(self.app) resp1 = test_filter( webob.Request.blank("/gibberish/data", method="POST")) resp2 = test_filter( webob.Request.blank("/hacks?stuff=/data", method="POST")) resp3 = test_filter(webob.Request.blank("/stuffanddata", method="POST")) self.assertEqual(resp1, self.app) self.assertEqual(resp2, self.app) self.assertEqual(resp3, self.app)
def test_http_status_replace_delete(self): app_body = {"garbage": {"garbage": "here"}} test_status = {"enabled": "true", "filters": "httpdelete", "httpdelete_resource": "DELETE /sauce/{id}", "httpdelete_key": "http_status_code", "httpdelete_value": "replace_if:200:201"} @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(test_status)(app) resp = test_filter(webob.Request.blank("/sauce/id", method="DELETE")) self.assertEqual(resp.status_code, 201, resp)
def test_http_status_replace_delete(self): app_body = {"garbage": {"garbage": "here"}} test_status = { "enabled": "true", "filters": "httpdelete", "httpdelete_resource": "DELETE /sauce/{id}", "httpdelete_key": "http_status_code", "httpdelete_value": "replace_if:200:201" } @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(test_status)(app) resp = test_filter(webob.Request.blank("/sauce/id", method="DELETE")) self.assertEqual(resp.status_code, 201, resp)
def test_nested_lists_and_dicts(self): app_body = { "results": [ {"some": "here"}, {"some": "there"}, ["random_string", {"secret": "MY SECRETS", "nested": {"combination": "1,2,3,4"}}], ] } processed_body = { "results": [{"some": "here"}, {"some": "there"}, ["random_string", {"nested": {"combination": "REDACTED"}}]] } @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(self.combo_conf)(app) resp = test_filter(webob.Request.blank("/data", method="POST")) self.assertEqual(resp.json, processed_body)
def test_drop_if(self): app_body = { "results": [{ "some": "here" }, { "some": "there" }, { "derp": "derp" }] } processed_body = {"results": [{"some": "here"}]} @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(self.keep_if)(app) resp = test_filter(webob.Request.blank("/sauce", method="GET")) self.assertEqual(resp.json, processed_body)
def test_nested_lists_and_dicts(self): app_body = {"results": [{"some": "here"}, {"some": "there"}, ["random_string", {"secret": "MY SECRETS", "nested": {"combination": "1,2,3,4"}}]]} processed_body = {"results": [{"some": "here"}, {"some": "there"}, ["random_string", {"nested": {"combination": "REDACTED"}}]]} @webob.dec.wsgify def app(req): return webob.Response(body=json.dumps(app_body), status=200) test_filter = edit_response.filter_factory(self.combo_conf)(app) resp = test_filter(webob.Request.blank("/data", method="POST")) self.assertEqual(resp.json, processed_body)
def test_filter_creation(self): test_filter = edit_response.filter_factory(self.combo_conf)(self.app) self.assertIsNotNone(test_filter) self.assertIsInstance(test_filter, edit_response.EditResponse) self.assertTrue(callable(test_filter))
def test_disabled_filter(self): conf = {"enabled": "false"} test_filter = edit_response.filter_factory(conf)(self.app) resp = test_filter(webob.Request.blank("/cheeseburger", method="GET")) self.assertEqual(resp, self.app)