mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-12-31 04:32:06 +08:00
79 lines
2.2 KiB
Ruby
79 lines
2.2 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe Api::ApiController, type: :controller do
|
|
describe 'GET #health' do
|
|
before do
|
|
get :health
|
|
end
|
|
|
|
it 'Returns HTTP success and with correct text' do
|
|
expect(response).to be_success
|
|
expect(response).to have_http_status(200)
|
|
expect(response.body).to match('RUNNING')
|
|
end
|
|
end
|
|
|
|
describe 'GET #status' do
|
|
before do
|
|
get :status
|
|
end
|
|
|
|
it 'Returns HTTP success' do
|
|
expect(response).to be_success
|
|
expect(response).to have_http_status(200)
|
|
end
|
|
|
|
it 'Response with correct JSON status structure' do
|
|
hash_body = nil
|
|
expect { hash_body = json }.not_to raise_exception
|
|
expect(hash_body).to match(
|
|
'message' => I18n.t('api.core.status_ok'),
|
|
'versions' => [{ 'version' => '20170715',
|
|
'baseUrl' => '/api/20170715/' },
|
|
{ 'version' => 'v1',
|
|
'baseUrl' => '/api/v1/' }]
|
|
)
|
|
end
|
|
end
|
|
|
|
describe 'Post #authenticate' do
|
|
let(:user) { create(:user) }
|
|
|
|
context 'When valid request' do
|
|
before do
|
|
post :authenticate, params: { email: user.email,
|
|
password: user.password,
|
|
grant_type: 'password' }
|
|
end
|
|
|
|
it 'Returns HTTP success' do
|
|
expect(response).to have_http_status(200)
|
|
end
|
|
|
|
it 'Returns valid JWT token' do
|
|
token = nil
|
|
expect { token = json['access_token'] }.not_to raise_exception
|
|
user_id = nil
|
|
expect { user_id = decode_token(token) }.not_to raise_exception
|
|
expect(user_id).to eq(user.id)
|
|
end
|
|
end
|
|
|
|
context 'When invalid password in request' do
|
|
it 'Returns HTTP error' do
|
|
post :authenticate, params: { email: user.email,
|
|
password: 'wrong_password',
|
|
grant_type: 'password' }
|
|
expect(response).to have_http_status(400)
|
|
end
|
|
end
|
|
|
|
context 'When no grant_type in request' do
|
|
it 'Returns HTTP error' do
|
|
post :authenticate, params: { email: user.email,
|
|
password: user.password }
|
|
expect(response).to have_http_status(400)
|
|
end
|
|
end
|
|
end
|
|
end
|