2014-05-09 9 views
5

Ho provato a seguire le istruzioni su come passare le intestazioni personalizzate ma non funziona per me. Ecco quello che chiamo nel mio test respecintestazioni di richiesta personalizzate nel test del controller rspec passato come rack.session

post :create, {name:profile.name}, {'X-API-KEY' => 'somekey'} 

Dal mio controller non vederlo nella intestazione come X-API-KEY ma invece sembra essere in request.headers [ "rack.session" ] [ "X-API-KEY"]

come posso convincerlo per non passare come "rack.session"

risposta

6

ho scavato attraverso l'emissione di questa mattina pure. Il problema viene da qui http://apidock.com/rails/ActionController/TestProcess/process poiché la firma del metodo appare come questa (action, parameters = nil, session = nil, flash = nil, http_method = 'GET'). Questo è stato abbastanza inaspettato per me e continuerò a cercare anche se non sono del tutto sicuro del motivo per cui succede così.

Per farlo funzionare si potrebbe fare

before do request.headers['X-API-KEY'] = 'somekey' end

Questo funziona, anche se non esattamente quello che volevo/aspettavo dal metodo get.

+1

Hai mai scoperto perché il modo documentato non sembra funzionare? (La soluzione funziona per me) – joelparkerhenderson

+0

funziona ma sarebbe bello inviare l'intestazione x-api-key con la singola richiesta, quindi non devo creare due blocchi 'describe' completamente diversi con il proprio' before'. blocchi per testare diverse chiavi API ... – sixty4bit

+1

@joelparkerhenderson Secondo https://github.com/rspec/rspec-rails/issues/65 questo è il modo per farlo. @ sixty4bit potresti metterlo nel tuo blocco 'it' giusto prima di fare la richiesta, o scrivere un metodo che faccia queste due cose per te, piuttosto che in un blocco precedente. –

Problemi correlati