debian-mirror-gitlab/doorkeeper/spec/controllers/applications_controller_spec.rb
2020-01-04 02:51:38 +05:30

69 lines
2.3 KiB
Ruby

require 'spec_helper_integration'
module Doorkeeper
describe ApplicationsController do
context 'when admin is not authenticated' do
before do
allow(Doorkeeper.configuration).to receive(:authenticate_admin).and_return(proc do
redirect_to main_app.root_url
end)
end
it 'redirects as set in Doorkeeper.authenticate_admin' do
get :index
expect(response).to redirect_to(controller.main_app.root_url)
end
it 'does not create application' do
expect do
post :create, doorkeeper_application: {
name: 'Example',
redirect_uri: 'https://example.com' }
end.not_to change { Doorkeeper::Application.count }
end
end
context 'when admin is authenticated' do
render_views
before do
allow(Doorkeeper.configuration).to receive(:authenticate_admin).and_return(->(*) { true })
end
it 'sorts applications by created_at' do
first_application = FactoryBot.create(:application)
second_application = FactoryBot.create(:application)
expect(Doorkeeper::Application).to receive(:ordered_by).and_call_original
get :index
expect(response.body).to have_selector("tbody tr:first-child#application_#{first_application.id}")
expect(response.body).to have_selector("tbody tr:last-child#application_#{second_application.id}")
end
it 'creates application' do
expect do
post :create, doorkeeper_application: {
name: 'Example',
redirect_uri: 'https://example.com' }
end.to change { Doorkeeper::Application.count }.by(1)
expect(response).to be_redirect
end
it 'does not allow mass assignment of uid or secret' do
application = FactoryBot.create(:application)
put :update, id: application.id, doorkeeper_application: {
uid: '1A2B3C4D',
secret: '1A2B3C4D' }
expect(application.reload.uid).not_to eq '1A2B3C4D'
end
it 'updates application' do
application = FactoryBot.create(:application)
put :update, id: application.id, doorkeeper_application: {
name: 'Example',
redirect_uri: 'https://example.com' }
expect(application.reload.name).to eq 'Example'
end
end
end
end