def test_run_plugin_post_echo_x_forwarded_path_reverse_proxy_rewrite(): s = "pds" try: apc = echo_pc plugin_config.add_plugin_configs([apc]) plugin.run_container(apc) container_name = apc["name"] time.sleep(CLIENT_DELAY) reverse_proxy_rewrite = "reverse_proxy_path" resp = requests.post(f"{base_url}/plugin/{container_name}/index.json", headers={"Content-Type": "application/json", "X-Forwarded-Path": reverse_proxy_rewrite}, json=s) assert resp.status_code == 200 assert resp.json()["data"] == json.dumps(s) assert resp.json()["method"] == "POST" assert "X-Forwarded-Path" in resp.json()["headers"] assert resp.json()["headers"]["X-Forwarded-Path"] == f"{reverse_proxy_rewrite}/v1/plugin/{container_name}" finally: plugin.stop_container(apc) plugin.remove_container(apc) plugin_config.delete_plugin_configs({})
def test_run_container_from_init_dep(): apcs = echo_pcs_dep try: init_plugin_path = "/plugin" os.mkdir(init_plugin_path) with open(f"{init_plugin_path}/echo.yaml", "w+") as f: write_config(apcs, f) os.environ["INIT_PLUGIN_PATH"] = init_plugin_path plugin.init_plugin() assert bag_contains(plugin_config.get_plugin_configs({}), apcs) time.sleep(CLIENT_DELAY) for apc in apcs: container_name = apc["name"] resp = requests.get(f"http://{container_name}/") assert resp.status_code == 200 assert resp.json()["method"] == "GET" shutil.rmtree(init_plugin_path) finally: for apc in apcs: plugin.stop_container(apc) plugin.remove_container(apc) plugin_config.delete_plugin_configs(apc)
def test_run_container_from_init2(): try: apc = echo_pc apc2 = echo_pc2 apcs = [apc, apc2] init_plugin_path = "/plugin" os.mkdir(init_plugin_path) with open(f"{init_plugin_path}/echo.yaml", "w+") as f: write_config(apcs, f) os.environ["INIT_PLUGIN_PATH"] = init_plugin_path plugin.init_plugin() assert bag_contains(plugin_config.get_plugin_configs({}), apcs) container_name = apc["name"] container_name2 = apc2["name"] time.sleep(CLIENT_DELAY) resp = requests.get("http://{host}/".format(host=container_name)) assert resp.status_code == 200 assert resp.json()["method"] == "GET" resp2 = requests.get("http://{host}/".format(host=container_name2)) assert resp2.status_code == 200 assert resp2.json()["method"] == "GET" shutil.rmtree(init_plugin_path) finally: plugin.stop_container(apc) plugin.remove_container(apc) plugin_config.delete_plugin_configs(apc) plugin.stop_container(apc2) plugin.remove_container(apc2) plugin_config.delete_plugin_configs(apc2)
def test_get_plugin_config_api(): with tempfile.TemporaryDirectory(prefix="/tmp/") as temp_dir_name: os.chmod(temp_dir_name, 0o755) s = "pds" with open(os.path.join(temp_dir_name, "index.json"), "w+") as f: f.write(json.dumps(s)) try: apc = pc(temp_dir_name) plugin_config.add_plugin_configs([apc]) ps = plugin_config.get_plugin_configs({"name": name}) assert len(ps) == 1 apc = ps[0] apc["_id"] = str(apc["_id"]) resp = requests.put(f"{base_url}/admin/plugin/{name}/container", headers=headers) assert (resp.status_code == 200 or resp.status_code == 204) resp = requests.get(f"{base_url}/admin/plugin/{name}", headers=headers) assert resp.status_code == 200 assert resp.json() == apc finally: api.delete_containers() plugin_config.delete_plugin_configs({})
def test_get_plugin_containers_api(): with tempfile.TemporaryDirectory(prefix="/tmp/") as temp_dir_name: os.chmod(temp_dir_name, 0o755) s = "pds" with open(os.path.join(temp_dir_name, "index.json"), "w+") as f: f.write(json.dumps(s)) try: apc = pc(temp_dir_name) apc2 = pc2(temp_dir_name) plugin_config.add_plugin_configs([apc, apc2]) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 2 apc = ps[0] resp = requests.put(f"{base_url}/admin/container", headers=headers) assert (resp.status_code == 200 or resp.status_code == 204) resp = requests.get(f"{base_url}/admin/container", headers=headers) assert resp.status_code == 200 assert bag_equal(resp.json(), [{"name": name, "container": {"status": "running"}}, {"name": name2, "container": {"status": "running"}}]) finally: api.delete_containers() plugin_config.delete_plugin_configs({})
def test_add_plugin_config(): try: apc = pc("/tmp") plugin_config.add_plugin_configs([apc]) ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 1 finally: plugin_config.delete_plugin_configs({})
def test_add_plugin_config2(): try: apc = pc("/tmp") plugin_config.add_plugin_configs([apc]) with pytest.raises(Exception): plugin_config.add_plugin_configs([apc]) finally: plugin_config.delete_plugin_configs({})
def test_add_plugin_config_api(): try: apc = pc("/tmp") resp = requests.put(f"{base_url}/admin/plugin", headers={"Content-Type": "application/json", **headers}, json=[apc]) assert resp.status_code == 200 ps = plugin_config.get_plugin_configs({}) assert len(ps) == 1 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 1 finally: plugin_config.delete_plugin_configs({})
def test_delete_plugin_configs_name_regex(): try: apc = pc("/tmp") apc2 = pc2("/tmp") plugin_config.add_plugin_configs([apc, apc2]) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 2 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 1 plugin_config.delete_plugin_configs({"name": {"$regex": "nginx.*"}}) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 0 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 0 finally: plugin_config.delete_plugin_configs({})
def test_run_plugin_container_get_echo_405(): try: apc = echo_pc plugin_config.add_plugin_configs([apc]) container_name = apc["name"] ps = plugin_config.get_plugin_configs({"name": container_name}) assert len(ps) == 1 apc = ps[0] plugin.run_container(apc) time.sleep(CLIENT_DELAY) resp = requests.get(f"{base_url}/plugin/{container_name}/index.json?status=405") assert resp.status_code == 405 finally: api.delete_containers() plugin_config.delete_plugin_configs({})
def test_update_plugin_config(): try: apc = pc("/tmp") apc2 = pc2("/tmp") plugin_config.add_plugin_configs([apc]) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 1 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 1 plugin_config.replace_plugin_config(name, apc2) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 1 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 0 ps = plugin_config.get_plugin_configs(fil2) assert len(ps) == 1 finally: plugin_config.delete_plugin_configs({})
def test_delete_plugin_configs_api_name_regex(): try: apc = pc("/tmp") apc2 = pc2("/tmp") resp = requests.put(f"{base_url}/admin/plugin", headers={"Content-Type": "application/json", **headers}, json=[apc]) assert resp.status_code == 200 resp = requests.put(f"{base_url}/admin/plugin", headers={"Content-Type": "application/json", **headers}, json=[apc2]) assert resp.status_code == 200 ps = plugin_config.get_plugin_configs({}) assert len(ps) == 2 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 1 resp = requests.delete(f"{base_url}/admin/plugin?name_regex=nginx.*", headers=headers) assert resp.status_code == 200 ps = plugin_config.get_plugin_configs({}) assert len(ps) == 0 ps = plugin_config.get_plugin_configs(fil) assert len(ps) == 0 finally: plugin_config.delete_plugin_configs({})
def test_run_plugin_container_post_echo_405(): s = "pds" try: apc = echo_pc plugin_config.add_plugin_configs([apc]) container_name = apc["name"] ps = plugin_config.get_plugin_configs({"name": container_name}) assert len(ps) == 1 apc = ps[0] plugin.run_container(apc) time.sleep(CLIENT_DELAY) resp = requests.post(f"{base_url}/plugin/{container_name}/index.json?status=405", headers={"Content-Type": "application/json"}, json=s) assert resp.status_code == 405 finally: api.delete_containers() plugin_config.delete_plugin_configs({})
def test_run_plugin_get_echo_x_forwarded_path(): try: apc = echo_pc plugin_config.add_plugin_configs([apc]) plugin.run_container(apc) container_name = apc["name"] time.sleep(CLIENT_DELAY) resp = requests.get(f"{base_url}/plugin/{container_name}/index.json") assert resp.status_code == 200 assert resp.json()["method"] == "GET" assert "X-Forwarded-Path" in resp.json()["headers"] assert resp.json()["headers"]["X-Forwarded-Path"] == f"/v1/plugin/{container_name}" finally: plugin.stop_container(apc) plugin.remove_container(apc) plugin_config.delete_plugin_configs({})
def test_run_plugin_container(): with tempfile.TemporaryDirectory(prefix="/tmp/") as temp_dir_name: os.chmod(temp_dir_name, 0o755) s = "pds" with open(os.path.join(temp_dir_name, "index.json"), "w+") as f: f.write(json.dumps(s)) try: apc = pc(temp_dir_name) plugin_config.add_plugin_configs([apc]) ps = plugin_config.get_plugin_configs({"name": name}) assert len(ps) == 1 apc = ps[0] plugin.run_container(apc) resp = requests.get(f"{base_url}/plugin/{name}/index.json") assert resp.status_code == 200 assert resp.json() == s finally: api.delete_containers() plugin_config.delete_plugin_configs({})
def test_get_plugin_configs_api_name_regex(): with tempfile.TemporaryDirectory(prefix="/tmp/") as temp_dir_name: os.chmod(temp_dir_name, 0o755) s = "pds" with open(os.path.join(temp_dir_name, "index.json"), "w+") as f: f.write(json.dumps(s)) try: apc = pc(temp_dir_name) apc2 = pc2(temp_dir_name) plugin_config.add_plugin_configs([apc, apc2]) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 2 for apc0 in ps: apc0["_id"] = str(apc0["_id"]) resp = requests.get(f"{base_url}/admin/plugin?name_regex=nginx.*", headers=headers) assert resp.status_code == 200 assert bag_equal(resp.json(), ps) finally: plugin_config.delete_plugin_configs({})
def test_get_plugin_configs_name_regex(): with tempfile.TemporaryDirectory(prefix="/tmp/") as temp_dir_name: os.chmod(temp_dir_name, 0o755) s = "pds" with open(os.path.join(temp_dir_name, "index.json"), "w+") as f: f.write(json.dumps(s)) try: apc = pc(temp_dir_name) apc2 = pc2(temp_dir_name) plugin_config.add_plugin_configs([apc, apc2]) ps = plugin_config.get_plugin_configs({}) assert len(ps) == 2 for apc0 in ps: apc0["_id"] = str(apc0["_id"]) ps2 = plugin_config.get_plugin_configs({"name": {"$regex": "nginx.*"}}) for a in ps2: a["_id"] = str(a["_id"]) assert bag_equal(ps2, ps) finally: plugin_config.delete_plugin_configs({})
def test_run_container_from_init_env(): try: apc = echo_pc apcs = [apc] init_plugin_path = "/plugin" os.mkdir(init_plugin_path) with open(f"{init_plugin_path}/echo.yaml", "w+") as f: f.write(''' services: echo: image: tx-router-test-flask-echo-server:${TAG} environment: {} port: 80 environment: HOST: 0.0.0.0 PORT: "80" volumes: [] ''') os.environ["INIT_PLUGIN_PATH"] = init_plugin_path os.environ["TAG"] = tag plugin.init_plugin() del os.environ["TAG"] del os.environ["INIT_PLUGIN_PATH"] assert bag_contains(plugin_config.get_plugin_configs({}), apcs) container_name = apc["name"] time.sleep(CLIENT_DELAY) resp = requests.get("http://{host}/".format(host=container_name)) assert resp.status_code == 200 assert resp.json()["method"] == "GET" shutil.rmtree(init_plugin_path) finally: plugin.stop_container(apc) plugin.remove_container(apc) plugin_config.delete_plugin_configs(apc)
def delete_plugin_configs(name=None, name_regex=None): return plugin_config.delete_plugin_configs(fil(name, name_regex))