2019-11-04 16:18:09 +01:00
|
|
|
describe WebhookController, type: :controller do
|
|
|
|
describe '#helpscout' do
|
2020-08-10 17:18:10 +02:00
|
|
|
before do
|
|
|
|
allow(controller).to receive(:verify_signature!).and_return(true)
|
|
|
|
allow(controller).to receive(:verify_authenticity_token)
|
|
|
|
end
|
2019-11-04 16:18:09 +01:00
|
|
|
|
|
|
|
subject(:response) { get :helpscout, params: { customer: { email: customer_email } } }
|
|
|
|
|
|
|
|
let(:payload) { JSON.parse(subject.body) }
|
2020-08-10 17:18:10 +02:00
|
|
|
let(:customer_email) { 'a-user@exemple.fr' }
|
|
|
|
|
|
|
|
it "doesn't verify authenticity token" do
|
|
|
|
subject
|
|
|
|
expect(controller).not_to have_received(:verify_authenticity_token)
|
|
|
|
end
|
2019-11-04 16:18:09 +01:00
|
|
|
|
|
|
|
context 'when there is no matching user' do
|
|
|
|
let(:customer_email) { 'not-a-user@exemple.fr' }
|
|
|
|
|
|
|
|
it 'returns an empty response' do
|
|
|
|
expect(subject.status).to eq(404)
|
|
|
|
expect(subject.body).to be_empty
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when there is a matching user' do
|
2020-09-18 09:57:26 +02:00
|
|
|
let(:user) { create(:user, :with_strong_password) }
|
2019-11-04 16:18:09 +01:00
|
|
|
let(:customer_email) { user.email }
|
|
|
|
|
|
|
|
it 'returns a 200 response' do
|
|
|
|
expect(subject.status).to eq(200)
|
|
|
|
expect(subject.body).to be_present
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns a link to the User profile in the Manager' do
|
|
|
|
expect(payload).to have_key('html')
|
|
|
|
expect(payload['html']).to have_selector("a[href='#{manager_user_url(user)}']")
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when there are an associated Instructeur and Administrateur' do
|
|
|
|
let!(:instructeur) { create(:instructeur, user: user) }
|
|
|
|
let!(:admin) { create(:administrateur, user: user) }
|
|
|
|
|
|
|
|
it 'returns a link to the Instructeur profile in the Manager' do
|
|
|
|
expect(payload).to have_key('html')
|
|
|
|
expect(payload['html']).to have_selector("a[href='#{manager_instructeur_url(instructeur)}']")
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns a link to the Administrateur profile in the Manager' do
|
|
|
|
expect(payload).to have_key('html')
|
|
|
|
expect(payload['html']).to have_selector("a[href='#{manager_administrateur_url(admin)}']")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|