I'm trying to write out tests for a controller of mine that takes in requests from external services. So far this is my test:
describe ApplyController do
context 'when valid' do
let(:parameters) do
file = File.join File.dirname(__FILE__), '..', 'samples', 'Indeed.json'
JSON.parse(File.read file)
end
let(:signature) { 'GC02UVj0d4bqa5peNFHdPQAZ2BI=' }
subject(:response) { post :indeed, parameters, 'X-Indeed-Signature' => signature }
it 'returns 200 ok if Request is valid' do
expect(response.status).to eq 200
end
end
end
This should work according to the documentation I could find.
My controller right now looks something like this:
class ApplyController < Application Controller
def indeed
binding.pry
end
end
When I get into Pry in my test and try to check the value of request.headers['X-Indeed-Signature']
I always just get nil
Is there something that I am missing? I am using Rails 3.2 and Rspec 3
I had many issues with the rubocop to avoid it, I wanted to put the headers into let. In addition call request.headers.merge! instead of @request.headers['key']=value.
I took the fix from here:
describe ApplyController do
context 'when valid' do
let(:parameters) do
file = File.join File.dirname(__FILE__), '..', 'samples', 'Indeed.json'
JSON.parse(File.read file)
end
let(:headers) do
{
signature: 'GC02UVj0d4bqa5peNFHdPQAZ2BI='
}
it 'returns 200 ok if Request is valid' do
request.headers.merge! headers
post :indeed, parameters
expect(response.status).to eq 200
end
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With