2014-09-25 21 views
5

Sto sviluppando una API Rest e la collaudo con Behat e mink-selenium2-driver (per la prima volta). Per motivi di sicurezza, ogni chiamata deve contenere un apikey nell'intestazione della richiesta.Come impostare un'intestazione di richiesta in behat test?

Il mio problema è che non posso impostare l'intestazione. Il mio test è simile al seguente:

Given I add "X_ApiKey" header equal to "test" 
When I send a GET request to "/notice" 
Then the response status code should be 200 

Ma io continuo a ricevere un 403.

Eventuali soluzioni?

risposta

2

Nel selenio non è possibile. Ho bisogno di testare questo su altri driver, come guzzle

Per quanto ne so, driver di selenio piombo chrome, ma non come funziona. La proposta di controllare l'uso di altri driver come guzzle, dove è possibile impostare le intestazioni è una risposta, a mio parere.

No, ho trovato che si potrebbe anche altra opzione. Si consiglia di utilizzare un proxy per iniettare intestazioni aggiuntive alle richieste generate dal browser.

Per fare questo ho trovato * http://wiremock.org/

+1

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). – DBD

+0

@DBD rivedere le ipotesi di partenza è una specie di soluzione. Per quanto ne so, il driver del selenio piombo chrome, ma non come funziona. Proposte per verificare l'utilizzo di altri driver come guzzle, dove è possibile impostare le intestazioni è una risposta, a mio parere. Soprattutto dove prova RESTApi - sto facendo lo stesso, ma a causa di questa restrizione, ho usato GUZZLE. – timiTao

0

Si dovrebbe usare il pacchetto behatch che include un contesto behatch/rest.

Tuttavia, il driver di selenio deve essere utilizzato solo quando si ha specificamente bisogno di un browser, ad esempio per javascript. In questo caso, mentre stai testando un endpoint API, l'utilizzo di un browser ti rallenterà e non porterà alcun beneficio.

0

È possibile utilizzare Restler, un micro framework che può essere d'aiuto con i test API RESTful in Behat. Supporta il test dell'ADV condotto dal comportamento mediante Behat e Guzzle.

Ecco l'esempio:

Given that "X_ApiKey" header is set to "test" 
When I request "/notice" 
Then the response status code should be 200 

Ecco un altro esempio da negotiation-format.feature file:

Scenario: One with more `q` should be selected, q = 1 when not defined 
    Given that "Accept" header is set to "application/json;q=0.8,application/xml" 
    When I request "/examples/_003_multiformat/bmi" 
    Then the response status code should be 200 
    And the response is XML 
    And the type is "array"