def test_parse_options_parseOptions_verbosity_verbose(self): """If we use `-v` once on the commandline, ``opts['verbosity']`` should equal ``50``. """ fakeSysArgv = ['bridgedb', '-v', '-v', 'mock', '-n', '-1'] sys.argv = fakeSysArgv opts = options.parseOptions() self.assertEqual(opts['verbosity'], 50)
def test_parse_options_parseOptions_verbosity_quiet_quiet(self): """If we use `-q` twice on the commandline, ``opts['verbosity']`` should equal ``10``. """ fakeSysArgv = ['bridgedb', '-q', '-q', 'mock', '-n', '-1'] sys.argv = fakeSysArgv opts = options.parseOptions() self.assertEqual(opts['verbosity'], 10)
def test_parse_options_parseOptions_with_valid_options(self): """:func:`options.parseOptions` should return a :class:`options.MainOptions` when given valid commandline arguments. """ fakeSysArgv = ['bridgedb', 'mock', '-n', '-1'] sys.argv = fakeSysArgv opts = options.parseOptions() self.assertIsInstance(opts, options.MainOptions)
def test_Main_run(self): """Main.run() should run and then finally raise SystemExit.""" config = """ BRIDGE_FILES = ["../run/bridge-descriptors"] EXTRA_INFO_FILES = ["../run/cached-extrainfo", "../run/cached-extrainfo.new"] STATUS_FILE = "../run/networkstatus-bridges" HTTPS_CERT_FILE="cert" HTTPS_KEY_FILE="privkey.pem" LOGFILE = "bridgedb.log" PIDFILE = "bridgedb.pid" DB_FILE = "bridgedist.db" DB_LOG_FILE = "bridgedist.log" MASTER_KEY_FILE = "secret_key" ASSIGNMENTS_FILE = "assignments.log" LOGLEVEL = "DEBUG" SAFELOGGING = True LOGFILE_COUNT = 5 LOGFILE_ROTATE_SIZE = 10000000 LOG_THREADS = False LOG_TRACE = True LOG_TIME_FORMAT = "%H:%M:%S" COLLECT_TIMESTAMPS = False NO_DISTRIBUTION_COUNTRIES = ['IR', 'SY'] PROXY_LIST_FILES = [] N_IP_CLUSTERS = 3 FORCE_PORTS = [(443, 1)] FORCE_FLAGS = [("Stable", 1)] BRIDGE_PURPOSE = "bridge" TASKS = {'GET_TOR_EXIT_LIST': 3 * 60 * 60,} SERVER_PUBLIC_FQDN = 'bridges.torproject.org' SERVER_PUBLIC_EXTERNAL_IP = '38.229.72.19' HTTPS_DIST = True HTTPS_BIND_IP = None HTTPS_PORT = None HTTPS_N_BRIDGES_PER_ANSWER = 3 HTTPS_INCLUDE_FINGERPRINTS = True HTTPS_USE_IP_FROM_FORWARDED_HEADER = False HTTP_UNENCRYPTED_BIND_IP = "127.0.0.1" HTTP_UNENCRYPTED_PORT = 55555 HTTP_USE_IP_FROM_FORWARDED_HEADER = False RECAPTCHA_ENABLED = False RECAPTCHA_PUB_KEY = '' RECAPTCHA_SEC_KEY = '' RECAPTCHA_REMOTEIP = '' GIMP_CAPTCHA_ENABLED = False GIMP_CAPTCHA_DIR = 'captchas' GIMP_CAPTCHA_HMAC_KEYFILE = 'captcha_hmac_key' GIMP_CAPTCHA_RSA_KEYFILE = 'captcha_rsa_key' EMAIL_DIST = True EMAIL_FROM_ADDR = "*****@*****.**" EMAIL_SMTP_FROM_ADDR = "*****@*****.**" EMAIL_SMTP_HOST = "127.0.0.1" EMAIL_SMTP_PORT = 55556 EMAIL_USERNAME = "******" EMAIL_DOMAINS = ["somewhere.com", "somewhereelse.net"] EMAIL_DOMAIN_MAP = { "mail.somewhere.com": "somewhere.com", "mail.somewhereelse.net": "somewhereelse.net", } EMAIL_DOMAIN_RULES = { 'somewhere.com': ["ignore_dots", "dkim"], 'somewhereelse.net': ["dkim"], } EMAIL_WHITELIST = {} EMAIL_BLACKLIST = [] EMAIL_FUZZY_MATCH = 4 EMAIL_RESTRICT_IPS = [] EMAIL_BIND_IP = "127.0.0.1" EMAIL_PORT = 55557 EMAIL_N_BRIDGES_PER_ANSWER = 3 EMAIL_INCLUDE_FINGERPRINTS = True EMAIL_GPG_SIGNING_ENABLED = False EMAIL_GPG_HOMEDIR = '../.gnupg' EMAIL_GPG_PRIMARY_KEY_FINGERPRINT = '0017098C5DF4197E3C884DCFF1B240D43F148C21' EMAiL_GPG_PASSPHRASE = None EMAIL_GPG_PASSPHRASE_FILE = None HTTPS_SHARE = 10 EMAIL_SHARE = 5 RESERVED_SHARE = 2 FILE_BUCKETS = {}""" configFile = self._writeConfig(config) # Fake some options: sys.argv = ['bridgedb', '-r', os.getcwd(), '-c', configFile] options = parseOptions() self.assertRaises(SystemExit, Main.run, options, reactor=None)
def test_main_run(self): """main.run() should run and then finally raise SystemExit.""" config = """ BRIDGE_FILES = ["../run/bridge-descriptors"] EXTRA_INFO_FILES = ["../run/cached-extrainfo", "../run/cached-extrainfo.new"] STATUS_FILE = "../run/networkstatus-bridges" HTTPS_CERT_FILE="cert" HTTPS_KEY_FILE="privkey.pem" LOGFILE = "bridgedb.log" PIDFILE = "bridgedb.pid" DB_FILE = "bridgedist.db" DB_LOG_FILE = "bridgedist.log" MASTER_KEY_FILE = "secret_key" ASSIGNMENTS_FILE = "assignments.log" LOGLEVEL = "DEBUG" SAFELOGGING = True LOGFILE_COUNT = 5 LOGFILE_ROTATE_SIZE = 10000000 LOG_THREADS = False LOG_TRACE = True LOG_TIME_FORMAT = "%H:%M:%S" COLLECT_TIMESTAMPS = False NO_DISTRIBUTION_COUNTRIES = ['IR', 'SY'] PROXY_LIST_FILES = [] N_IP_CLUSTERS = 3 FORCE_PORTS = [(443, 1)] FORCE_FLAGS = [("Stable", 1)] BRIDGE_PURPOSE = "bridge" TASKS = {'GET_TOR_EXIT_LIST': 3 * 60 * 60,} SERVER_PUBLIC_FQDN = 'bridges.torproject.org' SERVER_PUBLIC_EXTERNAL_IP = '38.229.72.19' HTTPS_DIST = True HTTPS_BIND_IP = None HTTPS_PORT = None HTTPS_N_BRIDGES_PER_ANSWER = 3 HTTPS_INCLUDE_FINGERPRINTS = True HTTPS_USE_IP_FROM_FORWARDED_HEADER = False HTTP_UNENCRYPTED_BIND_IP = "127.0.0.1" HTTP_UNENCRYPTED_PORT = 55555 HTTP_USE_IP_FROM_FORWARDED_HEADER = False RECAPTCHA_ENABLED = False RECAPTCHA_PUB_KEY = '' RECAPTCHA_SEC_KEY = '' RECAPTCHA_REMOTEIP = '' GIMP_CAPTCHA_ENABLED = False GIMP_CAPTCHA_DIR = 'captchas' GIMP_CAPTCHA_HMAC_KEYFILE = 'captcha_hmac_key' GIMP_CAPTCHA_RSA_KEYFILE = 'captcha_rsa_key' EMAIL_DIST = True EMAIL_FROM_ADDR = "*****@*****.**" EMAIL_SMTP_FROM_ADDR = "*****@*****.**" EMAIL_SMTP_HOST = "127.0.0.1" EMAIL_SMTP_PORT = 55556 EMAIL_USERNAME = "******" EMAIL_DOMAINS = ["somewhere.com", "somewhereelse.net"] EMAIL_DOMAIN_MAP = { "mail.somewhere.com": "somewhere.com", "mail.somewhereelse.net": "somewhereelse.net", } EMAIL_DOMAIN_RULES = { 'somewhere.com': ["ignore_dots", "dkim"], 'somewhereelse.net': ["dkim"], } EMAIL_WHITELIST = {} EMAIL_BLACKLIST = [] EMAIL_FUZZY_MATCH = 4 EMAIL_RESTRICT_IPS = [] EMAIL_BIND_IP = "127.0.0.1" EMAIL_PORT = 55557 EMAIL_N_BRIDGES_PER_ANSWER = 3 EMAIL_INCLUDE_FINGERPRINTS = True EMAIL_GPG_SIGNING_ENABLED = False EMAIL_GPG_HOMEDIR = '../.gnupg' EMAIL_GPG_PRIMARY_KEY_FINGERPRINT = '0017098C5DF4197E3C884DCFF1B240D43F148C21' EMAiL_GPG_PASSPHRASE = None EMAIL_GPG_PASSPHRASE_FILE = None HTTPS_SHARE = 10 EMAIL_SHARE = 5 RESERVED_SHARE = 2""" configFile = self._writeConfig(config) # Fake some options: sys.argv = ['bridgedb', '-r', os.getcwd(), '-c', configFile] options = parseOptions() self.assertRaises(SystemExit, main.run, options, reactor=None)
def test_parse_options_parseOptions_rundir(self): """The automatic rundir should be our current directory.""" fakeSysArgv = ['bridgedb', 'mock', '-n', '-1'] sys.argv = fakeSysArgv opts = options.parseOptions() self.assertEqual(opts['rundir'], os.getcwd())