-
-
Save blopker/8186a79792d39022e33eccb094c433ea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Settings: | |
def __init__(self, installed_apps, debug, debug_toolbar, internal_ips): | |
self.INSTALLED_APPS = installed_apps | |
self.DEBUG = debug | |
self.DEBUG_TOOLBAR = debug_toolbar | |
self.INTERNAL_IPS = internal_ips | |
class Request: | |
def __init__(self, remote_addr): | |
self.META = {"REMOTE_ADDR": remote_addr} | |
def should_enable(settings, request): | |
if "debug_toolbar" not in settings.INSTALLED_APPS: | |
return False | |
if settings.DEBUG is not True: | |
return False | |
if settings.DEBUG_TOOLBAR is True: | |
return True | |
if settings.INTERNAL_IPS: | |
return request.META["REMOTE_ADDR"] in settings.INTERNAL_IPS | |
return True | |
def test_new_user(): | |
request = Request(remote_addr="1.1.1.1") | |
# New user with no settings | |
settings = Settings( | |
installed_apps=[], | |
debug=False, | |
debug_toolbar=None, | |
internal_ips=[], | |
) | |
assert should_enable(settings, request) is False | |
# New user with debug_toolbar installed | |
settings = Settings( | |
installed_apps=["debug_toolbar"], | |
debug=False, | |
debug_toolbar=None, | |
internal_ips=[], | |
) | |
assert should_enable(settings, request) is False | |
# New user with debug_toolbar installed and debug enabled | |
settings = Settings( | |
installed_apps=["debug_toolbar"], | |
debug=True, | |
debug_toolbar=None, | |
internal_ips=[], | |
) | |
assert should_enable(settings, request) is True | |
def test_existing_user(): | |
request = Request(remote_addr="1.1.1.1") | |
# Existing user with debug_toolbar and INTERNAL_IPS set, debug off | |
settings = Settings( | |
installed_apps=["debug_toolbar"], | |
debug=False, | |
debug_toolbar=None, | |
internal_ips=["1.1.1.1", "2.2.2.2"], | |
) | |
assert should_enable(settings, request) is False | |
# Existing user with debug_toolbar and INTERNAL_IPS set, debug on | |
settings = Settings( | |
installed_apps=["debug_toolbar"], | |
debug=True, | |
debug_toolbar=None, | |
internal_ips=["1.1.1.1", "2.2.2.2"], | |
) | |
assert should_enable(settings, request) is True | |
# Existing user with INTERNAL_IPS set, but broken | |
settings = Settings( | |
installed_apps=["debug_toolbar"], | |
debug=True, | |
debug_toolbar=None, | |
internal_ips=["2.2.2.2"], | |
) | |
assert should_enable(settings, request) is False | |
# Existing user with debug_toolbar and INTERNAL_IPS set (broken), debug_toolbar on | |
settings = Settings( | |
installed_apps=["debug_toolbar"], | |
debug=True, | |
debug_toolbar=True, | |
internal_ips=["2.2.2.2"], | |
) | |
assert should_enable(settings, request) is True | |
if __name__ == "__main__": | |
test_new_user() | |
test_existing_user() | |
print("All tests passed!") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment