class DryAPITests(unittest.TestCase): def setUp(self): self.parms = {'site': pywikibot.Site('en'), 'action': 'query', 'meta': 'userinfo'} self.req = CachedRequest(expiry=1, **self.parms) self.expreq = CachedRequest(expiry=0, **self.parms) self.diffreq = CachedRequest(expiry=1, site=pywikibot.Site('en'), action='query', meta='siteinfo') self.diffsite = CachedRequest(expiry=1, site=pywikibot.Site('de'), action='query', meta='userinfo') def test_expiry_formats(self): self.assertEqual(self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry) def test_get_cache_dir(self): retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path()) def test_expired(self): self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue(self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2)))
class DryCachedRequestTests(TestCase): """Test CachedRequest using real site objects.""" sites = { 'basesite': { 'family': 'wikipedia', 'code': 'en', }, 'altsite': { 'family': 'wikipedia', 'code': 'de', }, } dry = True def setUp(self): super(DryCachedRequestTests, self).setUp() self.basesite = self.get_site('basesite') self.altsite = self.get_site('altsite') self.parms = {'site': self.basesite, 'action': 'query', 'meta': 'userinfo'} self.req = CachedRequest(expiry=1, **self.parms) self.expreq = CachedRequest(expiry=0, **self.parms) self.diffreq = CachedRequest(expiry=1, site=self.basesite, action='query', meta='siteinfo') self.diffsite = CachedRequest(expiry=1, site=self.altsite, action='query', meta='userinfo') def test_expiry_formats(self): self.assertEqual(self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry) def test_expired(self): self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue(self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_get_cache_dir(self): retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path())
class DryAPITests(unittest.TestCase): def setUp(self): self.basesite = pywikibot.Site('en', 'wikipedia') self.altsite = pywikibot.Site('de', 'wikipedia') self.parms = {'site': self.basesite, 'action': 'query', 'meta': 'userinfo'} self.req = CachedRequest(expiry=1, **self.parms) self.expreq = CachedRequest(expiry=0, **self.parms) self.diffreq = CachedRequest(expiry=1, site=self.basesite, action='query', meta='siteinfo') self.diffsite = CachedRequest(expiry=1, site=self.altsite, action='query', meta='userinfo') def test_expiry_formats(self): self.assertEqual(self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry) def test_get_cache_dir(self): retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path()) def test_expired(self): self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue(self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_query_constructor(self): qGen1 = QueryGenerator(action="query", meta="siteinfo") qGen2 = QueryGenerator(meta="siteinfo") self.assertEqual(str(qGen1.request), str(qGen2.request))
class DryCachedRequestTests(SiteAttributeTestCase): """Test CachedRequest using real site objects.""" sites = {"basesite": {"family": "wikipedia", "code": "en"}, "altsite": {"family": "wikipedia", "code": "de"}} dry = True def setUp(self): super(DryCachedRequestTests, self).setUp() self.parms = {"site": self.basesite, "action": "query", "meta": "userinfo"} self.req = CachedRequest(expiry=1, **self.parms) self.expreq = CachedRequest(expiry=0, **self.parms) self.diffreq = CachedRequest(expiry=1, site=self.basesite, action="query", meta="siteinfo") self.diffsite = CachedRequest(expiry=1, site=self.altsite, action="query", meta="userinfo") def test_expiry_formats(self): self.assertEqual(self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry) def test_expired(self): self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue(self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_get_cache_dir(self): retval = self.req._get_cache_dir() self.assertIn("apicache", retval) def test_create_file_name(self): self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path())
class DryCachedRequestTests(SiteAttributeTestCase): """Test CachedRequest using real site objects.""" sites = { 'basesite': { 'family': 'wikipedia', 'code': 'en', }, 'altsite': { 'family': 'wikipedia', 'code': 'de', }, } dry = True def setUp(self): """Initialize the fake requests.""" super(DryCachedRequestTests, self).setUp() self.parms = {'action': 'query', 'meta': 'userinfo'} self.req = CachedRequest(expiry=1, site=self.basesite, parameters=self.parms) self.expreq = CachedRequest(expiry=0, site=self.basesite, parameters=self.parms) self.diffreq = CachedRequest( expiry=1, site=self.basesite, parameters={'action': 'query', 'meta': 'siteinfo'}) self.diffsite = CachedRequest( expiry=1, site=self.altsite, parameters={'action': 'query', 'meta': 'userinfo'}) # When using ** the paramters are still unicode self.deprecated_explicit = CachedRequest( expiry=1, site=self.basesite, action='query', meta='userinfo') self.deprecated_asterisks = CachedRequest( expiry=1, site=self.basesite, **self.parms) def test_expiry_formats(self): """Test using a timedelta as expiry.""" self.assertEqual(self.req.expiry, CachedRequest(datetime.timedelta(days=1), site=self.basesite, parameters=self.parms).expiry) def test_expired(self): """Test if the request is expired.""" self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue(self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_parameter_types(self): """Test _uniquedescriptionstr is identical using different ways.""" # This test is done as create_file_name and cachefile_path only use # the hashed name which is not very helpful self.assertEqual(self.req._uniquedescriptionstr(), self.req._uniquedescriptionstr()) self.assertEqual(self.req._uniquedescriptionstr(), self.expreq._uniquedescriptionstr()) self.assertEqual(self.req._uniquedescriptionstr(), self.deprecated_explicit._uniquedescriptionstr()) self.assertEqual(self.req._uniquedescriptionstr(), self.deprecated_asterisks._uniquedescriptionstr()) self.assertNotEqual(self.req._uniquedescriptionstr(), self.diffreq._uniquedescriptionstr()) self.assertNotEqual(self.req._uniquedescriptionstr(), self.diffsite._uniquedescriptionstr()) def test_get_cache_dir(self): """Test that 'apicache' is in the cache dir.""" retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): """Test the file names for the cache.""" self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertEqual(self.req._create_file_name(), self.deprecated_explicit._create_file_name()) self.assertEqual(self.req._create_file_name(), self.deprecated_asterisks._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): """Test the file paths for the cache.""" self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.deprecated_explicit._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.deprecated_asterisks._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path())
class DryCachedRequestTests(SiteAttributeTestCase): """Test CachedRequest using real site objects.""" sites = { 'basesite': { 'family': 'wikipedia', 'code': 'en', }, 'altsite': { 'family': 'wikipedia', 'code': 'de', }, } dry = True def setUp(self): """Initialize the fake requests.""" super(DryCachedRequestTests, self).setUp() self.parms = {'action': 'query', 'meta': 'userinfo'} self.req = CachedRequest(expiry=1, site=self.basesite, parameters=self.parms) self.expreq = CachedRequest(expiry=0, site=self.basesite, parameters=self.parms) self.diffreq = CachedRequest(expiry=1, site=self.basesite, parameters={ 'action': 'query', 'meta': 'siteinfo' }) self.diffsite = CachedRequest(expiry=1, site=self.altsite, parameters={ 'action': 'query', 'meta': 'userinfo' }) # When using ** the paramters are still unicode self.deprecated_explicit = CachedRequest(expiry=1, site=self.basesite, action='query', meta='userinfo') self.deprecated_asterisks = CachedRequest(expiry=1, site=self.basesite, **self.parms) def test_expiry_formats(self): """Test using a timedelta as expiry.""" self.assertEqual( self.req.expiry, CachedRequest(datetime.timedelta(days=1), site=self.basesite, parameters=self.parms).expiry) def test_expired(self): """Test if the request is expired.""" self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue( self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_parameter_types(self): """Test _uniquedescriptionstr is identical using different ways.""" # This test is done as create_file_name and cachefile_path only use # the hashed name which is not very helpful self.assertEqual(self.req._uniquedescriptionstr(), self.req._uniquedescriptionstr()) self.assertEqual(self.req._uniquedescriptionstr(), self.expreq._uniquedescriptionstr()) self.assertEqual(self.req._uniquedescriptionstr(), self.deprecated_explicit._uniquedescriptionstr()) self.assertEqual(self.req._uniquedescriptionstr(), self.deprecated_asterisks._uniquedescriptionstr()) self.assertNotEqual(self.req._uniquedescriptionstr(), self.diffreq._uniquedescriptionstr()) self.assertNotEqual(self.req._uniquedescriptionstr(), self.diffsite._uniquedescriptionstr()) def test_get_cache_dir(self): """Test that 'apicache' is in the cache dir.""" retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): """Test the file names for the cache.""" self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertEqual(self.req._create_file_name(), self.deprecated_explicit._create_file_name()) self.assertEqual(self.req._create_file_name(), self.deprecated_asterisks._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): """Test the file paths for the cache.""" self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.deprecated_explicit._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.deprecated_asterisks._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path())
class DryAPITests(unittest.TestCase): def setUp(self): self.basesite = pywikibot.Site('en', 'wikipedia') self.altsite = pywikibot.Site('de', 'wikipedia') self.parms = { 'site': self.basesite, 'action': 'query', 'meta': 'userinfo' } self.req = CachedRequest(expiry=1, **self.parms) self.expreq = CachedRequest(expiry=0, **self.parms) self.diffreq = CachedRequest(expiry=1, site=self.basesite, action='query', meta='siteinfo') self.diffsite = CachedRequest(expiry=1, site=self.altsite, action='query', meta='userinfo') def test_expiry_formats(self): self.assertEqual( self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry) def test_get_cache_dir(self): retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path()) def test_cachefile_path_different_users(self): # Mock basesite object to test this. class MockSite(pywikibot.site.APISite): _loginstatus = pywikibot.site.LoginStatus.NOT_ATTEMPTED _namespaces = {2: 'User'} def __init__(self): self._user = '******' def user(self): return self._user def encoding(self): return 'utf-8' def encodings(self): return [] def _getsiteinfo(self): self._siteinfo = {'case': 'first-letter'} return {} def __repr__(self): return "MockSite()" def __getattr__(self, attr): raise Exception("Attribute %r not defined" % attr) site = MockSite() req = CachedRequest(expiry=1, site=site, action='query', meta='siteinfo') anonpath = req._cachefile_path() site._userinfo = {'name': u'user'} site._loginstatus = 0 req = CachedRequest(expiry=1, site=site, action='query', meta='siteinfo') userpath = req._cachefile_path() self.assertNotEqual(anonpath, userpath) site._userinfo = {'name': u'sysop'} site._loginstatus = 1 req = CachedRequest(expiry=1, site=site, action='query', meta='siteinfo') sysoppath = req._cachefile_path() self.assertNotEqual(anonpath, sysoppath) self.assertNotEqual(userpath, sysoppath) def test_expired(self): self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue( self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_query_constructor(self): qGen1 = QueryGenerator(action="query", meta="siteinfo") qGen2 = QueryGenerator(meta="siteinfo") self.assertEqual(str(qGen1.request), str(qGen2.request))
class DryAPITests(unittest.TestCase): def setUp(self): self.basesite = pywikibot.Site('en', 'wikipedia') self.altsite = pywikibot.Site('de', 'wikipedia') self.parms = {'site': self.basesite, 'action': 'query', 'meta': 'userinfo'} self.req = CachedRequest(expiry=1, **self.parms) self.expreq = CachedRequest(expiry=0, **self.parms) self.diffreq = CachedRequest(expiry=1, site=self.basesite, action='query', meta='siteinfo') self.diffsite = CachedRequest(expiry=1, site=self.altsite, action='query', meta='userinfo') def test_expiry_formats(self): self.assertEqual(self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry) def test_get_cache_dir(self): retval = self.req._get_cache_dir() self.assertIn('apicache', retval) def test_create_file_name(self): self.assertEqual(self.req._create_file_name(), self.req._create_file_name()) self.assertEqual(self.req._create_file_name(), self.expreq._create_file_name()) self.assertNotEqual(self.req._create_file_name(), self.diffreq._create_file_name()) def test_cachefile_path(self): self.assertEqual(self.req._cachefile_path(), self.req._cachefile_path()) self.assertEqual(self.req._cachefile_path(), self.expreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffreq._cachefile_path()) self.assertNotEqual(self.req._cachefile_path(), self.diffsite._cachefile_path()) def test_cachefile_path_different_users(self): # Mock basesite object to test this. class MockSite(pywikibot.site.APISite): _loginstatus = pywikibot.site.LoginStatus.NOT_ATTEMPTED _namespaces = {2: 'User'} def __init__(self): self._user = '******' def user(self): return self._user def encoding(self): return 'utf-8' def encodings(self): return [] def _getsiteinfo(self): self._siteinfo = {'case': 'first-letter'} return {} def __repr__(self): return "MockSite()" def __getattr__(self, attr): raise Exception("Attribute %r not defined" % attr) site = MockSite() req = CachedRequest(expiry=1, site=site, action='query', meta='siteinfo') anonpath = req._cachefile_path() site._userinfo = {'name': u'user'} site._loginstatus = 0 req = CachedRequest(expiry=1, site=site, action='query', meta='siteinfo') userpath = req._cachefile_path() self.assertNotEqual(anonpath, userpath) site._userinfo = {'name': u'sysop'} site._loginstatus = 1 req = CachedRequest(expiry=1, site=site, action='query', meta='siteinfo') sysoppath = req._cachefile_path() self.assertNotEqual(anonpath, sysoppath) self.assertNotEqual(userpath, sysoppath) def test_expired(self): self.assertFalse(self.req._expired(datetime.datetime.now())) self.assertTrue(self.req._expired(datetime.datetime.now() - datetime.timedelta(days=2))) def test_query_constructor(self): qGen1 = QueryGenerator(action="query", meta="siteinfo") qGen2 = QueryGenerator(meta="siteinfo") self.assertEqual(str(qGen1.request), str(qGen2.request))