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'));
 }
Exemplo n.º 2
0
 /**
  * @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);
 }