def test_unicode(self): """Test caching with Unicode content.""" self.mocksite._userinfo = {'name': u'محمد الفلسطيني'} self.mocksite._loginstatus = 0 req = CachedRequest(expiry=1, site=self.mocksite, action='query', meta='siteinfo') en_user_path = req._cachefile_path() self.mocksite._namespaces = {2: [u'مستخدم']} req = CachedRequest(expiry=1, site=self.mocksite, action='query', meta='siteinfo') expect = (u'MockSite()User(User:محمد الفلسطيني)' + "[('action', 'query'), ('meta', 'siteinfo')]") self.assertEqual(repr(req._uniquedescriptionstr()), repr(expect)) self.assertEqual(req._uniquedescriptionstr().encode('utf-8'), expect.encode('utf-8')) ar_user_path = req._cachefile_path() self.assertEqual(en_user_path, ar_user_path)
def test_cachefile_path_different_users(self): """Test and compare file paths when different usernames are used.""" req = CachedRequest(expiry=1, site=self.mocksite, parameters={ 'action': 'query', 'meta': 'siteinfo' }) anonpath = req._cachefile_path() self.mocksite._userinfo = {'name': 'MyUser'} self.mocksite._loginstatus = LoginStatus.AS_USER req = CachedRequest(expiry=1, site=self.mocksite, parameters={ 'action': 'query', 'meta': 'siteinfo' }) userpath = req._cachefile_path() self.assertNotEqual(anonpath, userpath) self.mocksite._userinfo = {'name': 'MyOtherUser'} self.mocksite._loginstatus = LoginStatus.AS_USER req = CachedRequest(expiry=1, site=self.mocksite, parameters={ 'action': 'query', 'meta': 'siteinfo' }) otherpath = req._cachefile_path() self.assertNotEqual(anonpath, otherpath) self.assertNotEqual(userpath, otherpath)
def test_cachefile_path_different_users(self): """Test and compare the file paths when different usernames are used.""" req = CachedRequest(expiry=1, site=self.mocksite, action='query', meta='siteinfo') anonpath = req._cachefile_path() self.mocksite._userinfo = {'name': u'MyUser'} self.mocksite._loginstatus = 0 req = CachedRequest(expiry=1, site=self.mocksite, action='query', meta='siteinfo') userpath = req._cachefile_path() self.assertNotEqual(anonpath, userpath) self.mocksite._userinfo = {'name': u'MySysop'} self.mocksite._loginstatus = 1 req = CachedRequest(expiry=1, site=self.mocksite, action='query', meta='siteinfo') sysoppath = req._cachefile_path() self.assertNotEqual(anonpath, sysoppath) self.assertNotEqual(userpath, sysoppath)
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_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 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 refresh(site, sysop=False): """Fetch the watchlist.""" if not site.logged_in(sysop=sysop): site.forceLogin(sysop=sysop) params = { 'action': 'query', 'list': 'watchlistraw', 'site': site, 'wrlimit': config.special_page_limit, } pywikibot.output(u'Retrieving watchlist for %s via API.' % str(site)) # pywikibot.put_throttle() # It actually is a get, but a heavy one. watchlist = [] while True: req = CachedRequest(config.API_config_expiry, **params) data = req.submit() if 'error' in data: raise RuntimeError('ERROR: %s' % data) watchlist.extend([w['title'] for w in data['watchlistraw']]) if 'query-continue' in data: params.update(data['query-continue']['watchlistraw']) else: break return watchlist
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 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 setUp(self): """Initialize the fake requests.""" super().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 parameters are still unicode with suppress_warnings('Instead of using kwargs ', FutureWarning): 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): self.assertEqual( self.req.expiry, CachedRequest(datetime.timedelta(days=1), **self.parms).expiry)