public function testInvalidPostSessionToken() { if (version_compare($GLOBALS['wgVersion'], '1.20', '<')) { $this->markTestSkipped("Skipping test because of missing method"); } $timestamp = time(); $parameters = json_encode(array('timestamp' => $timestamp, 'sessionToken' => SpecialDeferredRequestDispatcher::getSessionToken('Foo'))); $instance = new SpecialDeferredRequestDispatcher(); $instance->disallowToModifyHttpHeader(); $instance->getContext()->setRequest(new \FauxRequest(array('parameters' => $parameters), true)); $this->assertNull($instance->execute('')); }
/** * @since 2.3 * * @param string $type * @param Title $title * @param array $parameters */ public function dispatchJobRequestFor($type, Title $title, $parameters = array()) { if (!$this->doPreliminaryCheckForType($type, $parameters)) { return null; } $dispatchableCallbackJob = $this->getDispatchableCallbackJobFor($type); // Build sessionToken as source verification during the POST request $parameters['timestamp'] = time(); $parameters['sessionToken'] = SpecialDeferredRequestDispatcher::getSessionToken($parameters['timestamp']); if ($this->enabledHttpDeferredJobRequestState && $this->canConnectToUrl()) { return $this->doDispatchAsyncJobFor($type, $title, $parameters, $dispatchableCallbackJob); } call_user_func_array($dispatchableCallbackJob, array($title, $parameters)); return true; }