Page MenuHomePhabricator

TestDeletionBotUser.test_delete_mark() of deletionbot_tests fails with invalid token
Open, HighPublic

Description

https://github.com/wikimedia/pywikibot/actions/runs/9477313658/job/26111625592

_____________________ TestDeletionBotUser.test_delete_mark _____________________

self = <tests.deletionbot_tests.TestDeletionBotUser testMethod=test_delete_mark>

    def test_delete_mark(self):
        """Test marking User:Unicodesnowman/DeleteMark for deletion."""
        delete.main('-page:User:Unicodesnowman/DeleteMark', '-always',
>                   '-summary:pywikibot unit test. Do NOT actually delete.')

tests/deletionbot_tests.py:84: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
scripts/delete.py:292: in main
    bot.run()
pywikibot/bot.py:1561: in run
    self.treat(page)
pywikibot/bot.py:1814: in treat
    self.treat_page()
scripts/delete.py:219: in treat_page
    automatic_quit=True)
pywikibot/page/_basepage.py:1989: in delete
    self.site.delete(self, reason, deletetalk=deletetalk)
pywikibot/site/_decorators.py:93: in callee
    return fn(self, *args, **kwargs)
pywikibot/site/_apisite.py:2627: in delete
    req.submit()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = pywikibot.data.api._requests.Request<wikipedia:test->'/w/api.php?action=delete&reason=pywikibot+unit+test.+Do+NOT+actu...itle=User:Unicodesnowman/DeleteMark&assert=user&maxlag=5&format=json&token=874f9ff095c2c572cb0124db5651616c66693449+\'>

    def submit(self) -> dict:
        """Submit a query and parse the response.
    
        .. versionchanged:: 8.0.4
           in addition to *readapidenied* also try to login when API
           response is *notloggedin*.
        .. versionchanged:: 9.0
           Raise :exc:`exceptions.APIError` if the same error comes
           twice in a row within the loop.
    
        :return: a dict containing data retrieved from api.php
        """
        self._add_defaults()
        use_get = self._use_get()
        retries = 0
        self.last_error = dict.fromkeys(['code', 'info'])
        while True:
            paramstring = self._http_param_string()
    
            simulate = self._simulate(self.action)
            if simulate:
                return simulate
    
            if self.throttle:
                self.site.throttle(write=self.write)
            else:
                pywikibot.log(
                    f"Submitting unthrottled action '{self.action}'.")
    
            use_get, uri, body, headers = self._get_request_params(use_get,
                                                                   paramstring)
            response, use_get = self._http_request(use_get, uri, body, headers,
                                                   paramstring)
            if response is None:
                continue
    
            result = self._json_loads(response)
            if result is None:
                continue
    
            if self._userinfo_query(result):
                continue
    
            if self._handle_warnings(result):
                continue
    
            if 'error' not in result:
                return result
    
            error = result['error']
            for key in result:
                if key in ('error', 'warnings'):
                    continue
                assert key not in error
                error[key] = result[key]
    
            if '*' in error:
                # help text returned
                error['help'] = error.pop('*')
            code = error.setdefault('code', 'Unknown')
            info = error.setdefault('info', None)
    
            if (code == self.last_error['code']
                    and info == self.last_error['info']):
>               raise pywikibot.exceptions.APIError(**self.last_error)
E               pywikibot.exceptions.APIError: badtoken: Invalid CSRF token.
E               [servedby: mw-api-ext.eqiad.main-778c97d8cb-99fgk;
E                help: See https://test.wikipedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at &lt;https://lists.wikimedia.org/postorius/lists/mediawiki-api-announce.lists.wikimedia.org/&gt; for notice of API deprecations and breaking changes.]

pywikibot/data/api/_requests.py:1026: APIError