def test_task_with_ayncio_loop_and_fuct_token_set_configuration(): """Test spintest with a strict match on custom body.""" httpretty.enable() httpretty.register_uri( httpretty.GET, "http://test.com/test", body=json.dumps({ "a": "a", "b": "b", "c": "c" }), status=200, ) loop = asyncio.new_event_loop() token_func = FakeCreatedToken() manager = TaskManager( ["http://test.com"], [{ "method": "GET", "route": "/test" }, { "method": "GET", "route": "/test" }], token=token_func, ) result = loop.run_until_complete(manager.next()) assert "SUCCESS" == result["status"] assert token_func.call_count == 1 result1 = loop.run_until_complete(manager.next()) assert "SUCCESS" == result1["status"] assert token_func.call_count == 2 httpretty.disable() httpretty.reset()
def test_task_next_async_failed(): """Test spintest accessing with next asynchronously.""" httpretty.enable() httpretty.register_uri(httpretty.GET, "http://foo.com/test") httpretty.register_uri(httpretty.GET, "http://bar.com/test", status=500) loop = asyncio.new_event_loop() manager = TaskManager( ["http://foo.com", "http://bar.com"], [{ "method": "GET", "route": "/test" }], parallel=True, ) results = loop.run_until_complete(manager.next()) assert "SUCCESS" in [result["status"] for result in results] assert "FAILED" in [result["status"] for result in results] with pytest.raises(StopAsyncIteration): loop.run_until_complete(manager.next()) httpretty.disable() httpretty.reset()
def test_rollback_multi_rollbacks_parallel(): """Test spintest with multiple rollbacks parallel.""" httpretty.enable() httpretty.register_uri(httpretty.POST, "http://test.com/test", status=201) httpretty.register_uri(httpretty.GET, "http://test.com/test", status=500) httpretty.register_uri(httpretty.DELETE, "http://test.com/test", status=500) httpretty.register_uri(httpretty.DELETE, "http://test.com/test_2", status=204) loop = asyncio.new_event_loop() manager = TaskManager( ["http://test.com"], [ { "method": "POST", "route": "/test", "rollback": ["delete_test", "delete_test_2"], }, { "method": "GET", "route": "/test" }, { "name": "delete_test", "method": "DELETE", "route": "/test" }, { "name": "delete_test_2", "method": "DELETE", "route": "/test_2" }, ], ) for _ in range(4): result = loop.run_until_complete(manager.next()) assert result["name"] == "delete_test_2" assert result["ignore"] is True httpretty.disable() httpretty.reset()
def test_rollback_multi_urls(): """Test spintest with rollback on multiple URLS.""" httpretty.enable() httpretty.register_uri(httpretty.POST, "http://foo.com/test", status=201) httpretty.register_uri(httpretty.GET, "http://foo.com/test", status=500) httpretty.register_uri(httpretty.DELETE, "http://foo.com/test", status=204) httpretty.register_uri(httpretty.POST, "http://bar.com/test", status=201) httpretty.register_uri(httpretty.GET, "http://bar.com/test", status=200) httpretty.register_uri(httpretty.DELETE, "http://bar.com/test", status=204) loop = asyncio.new_event_loop() manager = TaskManager( ["http://foo.com", "http://bar.com"], [ { "method": "POST", "route": "/test", "rollback": ["delete_test"] }, { "method": "GET", "route": "/test" }, { "name": "delete_test", "method": "DELETE", "route": "/test" }, ], ) for _ in range(3): result = loop.run_until_complete(manager.next()) assert result["name"] == "delete_test" assert result["ignore"] is True for _ in range(3): result = loop.run_until_complete(manager.next()) assert result["name"] == "delete_test" assert result["ignore"] is False httpretty.disable() httpretty.reset()
def test_task_with_token_token_is_not_visible_on_log(): """Test spintest with a strict match on custom body.""" TOKEN = str(uuid.uuid4()) httpretty.enable() httpretty.register_uri( httpretty.GET, "http://test.com/test", body=json.dumps({ "a": "a", "b": "b", "c": "c" }), status=200, ) tasks = [{ "method": "GET", "route": "/test", "expected": { "code": 200, "body": { "a": "a", "b": "b", "c": "c" }, "expected_match": "strict", }, }] loop = asyncio.get_event_loop() results = [] manager = TaskManager(["http://test.com"], tasks, token=TOKEN) for i in range(len(tasks)): result = loop.run_until_complete(manager.next()) results.append(result) assert TOKEN not in results[0]["task"]["headers"]["Authorization"] httpretty.disable() httpretty.reset()
def test_task_next(): """Test spintest accessing with next.""" httpretty.enable() httpretty.register_uri(httpretty.GET, "http://test.com/test", body=json.dumps({"foo": "bar"})) loop = asyncio.new_event_loop() manager = TaskManager(["http://test.com"], [{ "method": "GET", "route": "/test" }]) result = loop.run_until_complete(manager.next()) assert "SUCCESS" == result["status"] assert "OK." == result["message"] assert 200 == result["code"] assert {"foo": "bar"} == result["body"] assert "http://test.com" == result["url"] assert "/test" == result["route"] # Because comparing floats is hard and is not the goal of this test result["task"]["duration_sec"] = 42.0 assert { "method": "GET", "route": "/test", "headers": { "Accept": "application/json", "Content-Type": "application/json" }, "retry": 0, "delay": 1, "ignore": False, "duration_sec": 42.0, } == result["task"] assert {"__token__": None} == result["output"] with pytest.raises(StopAsyncIteration): loop.run_until_complete(manager.next()) httpretty.disable() httpretty.reset()
def test_two_tokens_are_generated_with_one_task_with_two_retry(): httpretty.enable() httpretty.register_uri( httpretty.GET, "http://test.com/test", status=200, body=json.dumps({"status": "CREATED"}), ) httpretty.register_uri( httpretty.GET, "http://test.com/test", status=200, body=json.dumps({"status": "CREATING"}), ) loop = asyncio.new_event_loop() token_func = FakeCreatedToken() manager = TaskManager( ["http://test.com"], [{ "method": "GET", "route": "/test", "expected": { "body": { "status": "CREATED" } }, "retry": 1, }], token=token_func, ) result = loop.run_until_complete(manager.next()) assert "SUCCESS" == result["status"] assert token_func.call_count == 2 httpretty.disable() httpretty.reset()
"expected": { "code": 201 }, }, { "method": "GET", "route": "one_by_one/{{id['id']}}", "expected": { "body": { "one_by_one": payload } }, }, ] loop = asyncio.get_event_loop() manager = TaskManager(url, tasks) fake_payload = {"toto": "FAKE"} def read_file(id): with open(os.environ["HOME"] + "/tmp/meetup.txt", "r") as f: result = f.read() payload["id"] = id if result == str(payload): # if result == str(fake_payload): return True else: raise Exception