123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- from datetime import datetime
- import os
- import unittest
- from mock import call, MagicMock, patch
- from yarg import newest_packages, latest_updated_packages, HTTPError
- from yarg.parse import _get, Package
- class GoodNewestResponse(object):
- status_code = 200
- xml = os.path.join(os.path.dirname(__file__),
- 'newest.xml')
- content = open(xml).read()
- class GoodUpdatedResponse(object):
- status_code = 200
- xml = os.path.join(os.path.dirname(__file__),
- 'updated.xml')
- content = open(xml).read()
- class BadResponse(object):
- status_code = 300
- reason = "Mocked"
- class TestParse(unittest.TestCase):
- def setUp(self):
- self.newest = self.setup_newest()
- self.updated = self.setup_updated()
- def setup_newest(self):
- item1 = {'name': 'gobble',
- 'url': 'http://pypi.python.org/pypi/gobble',
- 'description': 'Automatic functional testing for CLI apps.',
- 'date': '09 Aug 2014 06:57:42 GMT'}
- item2 = {'name': 'flask_autorest',
- 'url': 'http://pypi.python.org/pypi/flask_autorest',
- 'description': 'auto create restful apis for database, with the help of dataset.',
- 'date': '09 Aug 2014 05:24:58 GMT'}
- item3 = {'name': 'ranrod',
- 'url': 'http://pypi.python.org/pypi/ranrod',
- 'description': 'download route53 hosted zones as local json files',
- 'date': '09 Aug 2014 05:20:21 GMT'}
- return [Package(item1), Package(item2), Package(item3)]
- def setup_updated(self):
- item1 = {'name': 'pycoin',
- 'version': '0.50',
- 'url': 'http://pypi.python.org/pypi/pycoin/0.50',
- 'description': 'Utilities for Bitcoin and altcoin addresses and transaction manipulation.',
- 'date': '09 Aug 2014 08:40:20 GMT'}
- item2 = {'name': 'django-signup',
- 'version': '0.6.0',
- 'url': 'http://pypi.python.org/pypi/django-signup/0.6.0',
- 'description': 'A user registration app for Django with support for custom user models',
- 'date': '09 Aug 2014 08:33:53 GMT'}
- item3 = {'name': 'pyADC',
- 'version': '0.1.3',
- 'url': 'http://pypi.python.org/pypi/pyADC/0.1.3',
- 'description': 'Python implementation of the ADC(S) Protocol for Direct Connect.',
- 'date': '09 Aug 2014 08:19:56 GMT'}
- return [Package(item1), Package(item2), Package(item3)]
- @patch('requests.get', return_value=BadResponse)
- def test_newest_packages_bad_get(self, get_mock):
- # Python 2.6....
- try:
- newest_packages()
- except HTTPError as e:
- self.assertEqual(300, e.status_code)
- self.assertEqual(e.status_code, e.errno)
- self.assertEqual(e.reason, e.message)
- @patch('requests.get', return_value=BadResponse)
- def test_updated_packages_bad_get(self, get_mock):
- # Python 2.6....
- try:
- latest_updated_packages()
- except HTTPError as e:
- self.assertEqual(300, e.status_code)
- self.assertEqual(e.status_code, e.errno)
- self.assertEqual(e.reason, e.message)
- @patch('requests.get', return_value=GoodNewestResponse)
- def test_newest_packages(self, get_mock):
- p = newest_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=packages_rss'),
- get_mock.call_args)
- self.assertEqual(self.newest[0].name, p[0].name)
- self.assertEqual(self.newest[1].name, p[1].name)
- self.assertEqual(self.newest[2].name, p[2].name)
- @patch('requests.get', return_value=GoodNewestResponse)
- def test_newest_package(self, get_mock):
- p = newest_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=packages_rss'),
- get_mock.call_args)
- self.assertEqual('gobble', p[0].name)
- self.assertEqual('http://pypi.python.org/pypi/gobble', p[0].url)
- self.assertEqual('Automatic functional testing for CLI apps.',
- p[0].description)
- self.assertEqual(datetime.strptime('09 Aug 2014 06:57:42 GMT',
- "%d %b %Y %H:%M:%S %Z"),
- p[0].date)
- @patch('requests.get', return_value=GoodNewestResponse)
- def test_newest_package_repr(self, get_mock):
- p = newest_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=packages_rss'),
- get_mock.call_args)
- self.assertEqual('<Package gobble>', p[0].__repr__())
- @patch('requests.get', return_value=GoodNewestResponse)
- def test_newest_package_version(self, get_mock):
- p = newest_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=packages_rss'),
- get_mock.call_args)
- self.assertEqual(None, p[0].version)
- @patch('requests.get', return_value=GoodUpdatedResponse)
- def test_updated_packages(self, get_mock):
- p = latest_updated_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=rss'),
- get_mock.call_args)
- self.assertEqual(self.updated[0].name, p[0].name)
- self.assertEqual(self.updated[0].version, p[0].version)
- self.assertEqual(self.updated[1].name, p[1].name)
- self.assertEqual(self.updated[1].version, p[1].version)
- self.assertEqual(self.updated[2].name, p[2].name)
- self.assertEqual(self.updated[2].version, p[2].version)
- @patch('requests.get', return_value=GoodUpdatedResponse)
- def test_updated_package(self, get_mock):
- p = latest_updated_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=rss'),
- get_mock.call_args)
- self.assertEqual('pycoin', p[0].name)
- self.assertEqual('0.50', p[0].version)
- self.assertEqual('http://pypi.python.org/pypi/pycoin/0.50', p[0].url)
- self.assertEqual('Utilities for Bitcoin and altcoin addresses and transaction manipulation.',
- p[0].description)
- self.assertEqual(datetime.strptime('09 Aug 2014 08:40:20 GMT',
- "%d %b %Y %H:%M:%S %Z"),
- p[0].date)
- @patch('requests.get', return_value=GoodUpdatedResponse)
- def test_updated_package_repr(self, get_mock):
- p = latest_updated_packages()
- self.assertEqual(call('https://pypi.python.org/pypi?%3Aaction=rss'),
- get_mock.call_args)
- self.assertEqual('<Package pycoin>', p[0].__repr__())
|