public function testKeepSignature() { $request = new Request('GET', '/endpoint?token=originalValue'); $transaction = new Transaction(new Client(), $request); $event = new BeforeEvent($transaction); $subscriber = new UrlSignature(); $subscriber->setSignatureGenerator(function () { return ['token' => 'tokenValue']; }); $subscriber->onBefore($event); $this->assertEquals('originalValue', $request->getQuery()->get('token')); }
/** * @param RestClient $client */ public function authenticateClient(RestClient $client) { $sub = new UrlSignature(); // Create array of objects instead of arrays from YML $q = (array) Utils::arrayToObject($this->query); $sub->setSignatureGenerator(function (array $requestInfo = []) use($q) { $params = array_merge($requestInfo, ['attr' => $this->attrs]); $query = []; try { foreach ($q as $key => $value) { $query[$key] = is_scalar($value) ? $value : $this->builder->run($value, $params); } } catch (UserScriptException $e) { throw new UserException("Error in query authentication script: " . $e->getMessage()); } return $query; }); $client->getClient()->getEmitter()->attach($sub); }