travis-api/spec/lib/services/find_admin_spec.rb
Aakriti Gupta 65f1a29d86 Move travis-core files from /vendor to /lib.
- Re-factor
- Remove code for notifications
- Remove addons
- Remove travis-core gem.
- Ignore logs directory only
- Move core tests to spec/lib
2016-07-20 11:22:25 +02:00

89 lines
2.8 KiB
Ruby

describe Travis::Services::FindAdmin do
include Travis::Testing::Stubs
describe 'find' do
let(:result) { described_class.new(nil, repository: repository).run }
before :each do
User.stubs(:with_permissions).with(:repository_id => repository.id, :admin => true).returns [user]
end
describe 'given a user has admin access to a repository (as seen by github)' do
before :each do
GH.stubs(:[]).with("repos/#{repository.slug}").returns('permissions' => { 'admin' => true })
end
it 'returns that user' do
result.should == user
end
end
describe 'given a user does not have access to a repository' do
before :each do
GH.stubs(:[]).with("repos/#{repository.slug}").returns('permissions' => { 'admin' => false })
user.stubs(:update_attributes!)
end
xit 'raises an exception' do
lambda { result }.should raise_error(Travis::AdminMissing, 'no admin available for svenfuchs/minimal')
end
xit 'revokes admin permissions for that user on our side' do
user.expects(:update_attributes!).with(:permissions => { 'admin' => false })
ignore_exception { result }
end
end
describe 'given an error occurs while retrieving the repository info' do
let(:error) { stub('error', :backtrace => [], :response => stub('reponse')) }
before :each do
GH.stubs(:[]).with("repos/#{repository.slug}").raises(GH::Error.new(error))
end
xit 'raises an exception' do
lambda { result }.should raise_error(Travis::AdminMissing, 'no admin available for svenfuchs/minimal')
end
it 'does not revoke permissions' do
user.expects(:update_permissions!).never
ignore_exception { result }
end
end
describe 'missing repository' do
it 'raises Travis::RepositoryMissing' do
expect { described_class.new.run }.to raise_error(Travis::RepositoryMissing)
end
end
def ignore_exception(&block)
block.call
rescue Travis::AdminMissing
end
end
end
describe Travis::Services::FindAdmin::Instrument do
include Travis::Testing::Stubs
let(:publisher) { Travis::Notification::Publisher::Memory.new }
let(:event) { publisher.events[1] }
let(:service) { Travis::Services::FindAdmin.new(nil, repository: repository) }
before :each do
Travis::Notification.publishers.replace([publisher])
User.stubs(:with_permissions).with(repository_id: repository.id, admin: true).returns [user]
GH.stubs(:[]).with("repos/#{repository.slug}").returns('permissions' => { 'admin' => true })
service.run
end
it 'publishes a event' do
event.should publish_instrumentation_event(
event: 'travis.services.find_admin.run:completed',
message: 'Travis::Services::FindAdmin#run:completed for svenfuchs/minimal: svenfuchs',
result: user,
)
end
end