Skip to content

Commit

Permalink
More work on #5 , introducing mutually exclusive arguments for argpas…
Browse files Browse the repository at this point in the history
…e. Adding some test cases as well
  • Loading branch information
pgaref committed Aug 1, 2017
1 parent 4f75687 commit 6f9e600
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 17 deletions.
41 changes: 24 additions & 17 deletions http_request_randomizer/requests/runners/proxyList.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import argparse

import sys

from http_request_randomizer.requests.parsers.FreeProxyParser import FreeProxyParser
from http_request_randomizer.requests.parsers.ProxyForEuParser import ProxyForEuParser
from http_request_randomizer.requests.parsers.RebroWeeblyParser import RebroWeeblyParser
Expand Down Expand Up @@ -29,26 +31,31 @@ def run(args, proxyList):
print("* id: {0:<30} url: {1:<50}".format(p.id, p.get_url()))


def main():
proxyList = ProxyList()

def create_parser(proxyList):
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter,
description='ProxyList tool retrieving proxies from publicly available providers.')
parser.add_argument('-ls', '--listSources',
help='List all available proxy providers sources.',
required=False)
parser.add_argument('-s', '--sources',
default='all',
const='all',
nargs='?',
choices=proxyList.get_source_options(),
help='Use specific proxy provider source.',
required=False)
args = parser.parse_args()
print(args)
run(args, proxyList)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-ls', '--list',
nargs='+',
choices=['providers', 'agents'],
help='List all available proxy providers sources.',
default='providers',
required=False)
group.add_argument('-s', '--sources',
nargs='+',
choices=proxyList.get_source_options(),
help='Use specific proxy provider source.',
default='all',
required=False)
parser.add_argument('-o', '--outfile', nargs='?', type=argparse.FileType('w'),
metavar='output-file/sys.stdout', default=sys.stdout, required=False)
return parser


# Wrapper method to satisfy setup.py entry_point
if __name__ == '__main__':
main()
proxyList = ProxyList()
parser = create_parser(proxyList)
parser.parse_args(sys.argv[1:])
print(parser.args)
run(parser.args, proxyList)
42 changes: 42 additions & 0 deletions tests/test_proxyList.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from __future__ import absolute_import

import os
import sys
import unittest

sys.path.insert(0, os.path.abspath('.'))
from http_request_randomizer.requests.runners.proxyList import ProxyList, create_parser


class ParserTest(unittest.TestCase):

def setUp(self):
self.proxyList = ProxyList()
self.parser = create_parser(self.proxyList)

def test_ParserSource(self):
parsed = self.parser.parse_args(['-s', 'freeproxy'])
self.assertEqual(parsed.sources, ['freeproxy'])

parsed = self.parser.parse_args(['-s', 'freeproxy', 'all', 'proxyforeu'])
self.assertEqual(parsed.sources, ['freeproxy', 'all', 'proxyforeu'])

with self.assertRaises(SystemExit):
self.parser.parse_args(['-s'])
self.parser.parse_args(['-s', 'blah'])

def test_ParserList(self):
parsed = self.parser.parse_args(['-ls', 'providers'])
self.assertEqual(parsed.list, ['providers'])

parsed = self.parser.parse_args(['-ls', 'agents'])
self.assertEqual(parsed.list, ['agents'])

with self.assertRaises(SystemExit):
self.parser.parse_args(['-ls'])
self.parser.parse_args(['-ls', 'test'])


if __name__ == '__main__':
unittest.main()

0 comments on commit 6f9e600

Please sign in to comment.