travis-api/spec_core/model/annotation_provider_spec.rb
2016-06-19 14:35:54 +02:00

52 lines
1.7 KiB
Ruby

describe AnnotationProvider do
let(:provider) { Factory(:annotation_provider) }
describe '.authenticate_provider' do
context 'given a valid username and key' do
it 'authenticates the provider' do
described_class.authenticate_provider(provider.api_username, provider.api_key).should eq(provider)
end
end
context 'given an invalid username' do
it 'does not authenticate the provider' do
described_class.authenticate_provider('someone-else', provider.api_key).should be_nil
end
end
context 'given an invalid key' do
it 'does not authenticate the provider' do
described_class.authenticate_provider(provider.api_username, 'some-other-key').should be_nil
end
end
context 'with an encrypted key' do
it 'authenticates the provider' do
provider.update_column(:api_key, 'encrypted-key')
Travis::Model::EncryptedColumn.any_instance.stubs(encrypt?: true, key: 'abcd', load: '...')
Travis::Model::EncryptedColumn.any_instance.expects(:load).with('encrypted-key').returns('a-key')
described_class.authenticate_provider(provider.api_username, 'a-key').should eq(provider)
end
end
end
describe '#annotation_for_job' do
let(:job) { Factory(:test) }
context 'given an annotation already exists for the job' do
it 'returns the annotation' do
annotation = Factory(:annotation, annotation_provider: provider, job: job)
provider.annotation_for_job(job.id).should eq(annotation)
end
end
context 'given no annotation exists yet for the job' do
it 'returns a new annotation object' do
provider.annotation_for_job(job.id).new_record?.should be true
end
end
end
end