import __builtin__ import mock import pytest import StringIO from twisted.internet import defer next_mock_id = 0 class ClassDeleted(): pass def func_deleted(*args, **kwargs): raise NotImplementedError() def func_ignored(*args, **kwargs): pass def func_ignored_deferred(*args, **kwargs): return mock_deferred(None) def mock_deferred(value): # Generates a function that can be used to make a deferred that can be used # to mock out deferred-returning responses def g(data): return value d = defer.Deferred() d.addCallback(g) d.callback(None) return d @pytest.fixture(autouse=True) def no_tcp(mocker): # Don't make tcp connections mocker.patch("twisted.internet.reactor.connectTCP", new=func_deleted) mocker.patch("twisted.internet.reactor.connectSSL", new=func_deleted) @pytest.fixture def ignore_tcp(mocker): # Don't make tcp connections mocker.patch("twisted.internet.reactor.connectTCP", new=func_ignored) mocker.patch("twisted.internet.reactor.connectSSL", new=func_ignored) @pytest.fixture(autouse=True) def no_database(mocker): # Don't make database queries mocker.patch("twisted.enterprise.adbapi.ConnectionPool", new=ClassDeleted) def fake_save_request(r): global next_mock_id r.reqid = next_mock_id next_mock_id += 1 return mock_deferred(None) def fake_save_response(r): global next_mock_id r.rspid = next_mock_id next_mock_id += 1 return mock_deferred(None) @pytest.fixture def fake_saving(mocker): mocker.patch("pappyproxy.http.Request.async_save", new=fake_save_request) mocker.patch("pappyproxy.http.Response.async_save", new=fake_save_response) @pytest.fixture def mock_deep_save(mocker, fake_saving): new_deep_save = mock.MagicMock() new_deep_save.return_value = mock_deferred(None) mocker.patch("pappyproxy.http.Request.async_deep_save", new=new_deep_save) return new_deep_save def print_fuck(*args, **kwargs): print 'fuck'