Project

General

Profile

Download (2.96 KB) Statistics
| Branch: | Tag: | Revision:
require 'spec_helper'

provider_class = Puppet::Type.type(:foreman_smartproxy).provider(:rest_v3)
describe provider_class do
let(:resource) do
Puppet::Type.type(:foreman_smartproxy).new(
:name => 'proxy.example.com',
:url => 'https://proxy.example.com:8443',
:base_url => 'https://foreman.example.com',
:consumer_key => 'oauth_key',
:consumer_secret => 'oauth_secret',
:effective_user => 'admin'
)
end

let(:provider) do
provider = provider_class.new
provider.resource = resource
provider
end

describe '#create' do
it 'sends POST request' do
provider.expects(:request).with(:post, 'api/v2/smart_proxies', {}, is_a(String)).returns(mock(:code => '201'))
provider.create
end
end

describe '#destroy' do
it 'sends DELETE request' do
provider.expects(:id).returns(1)
provider.expects(:request).with(:delete, 'api/v2/smart_proxies/1').returns(mock(:code => '200'))
provider.destroy
end
end

describe '#exists?' do
it 'returns true when ID is present' do
provider.expects(:id).returns(1)
expect(provider.exists?).to be true
end

it 'returns nil when ID is absent' do
provider.expects(:id).returns(nil)
expect(provider.exists?).to be false
end
end

describe '#id' do
it 'returns ID from proxy hash' do
provider.expects(:proxy).twice.returns({'id' => 1, 'name' => 'proxy.example.com'})
expect(provider.id).to eq(1)
end

it 'returns nil when proxy is absent' do
provider.expects(:proxy).returns(nil)
expect(provider.id).to be_nil
end
end

describe '#proxy' do
it 'returns proxy hash from API results' do
provider.expects(:request).with(:get, 'api/v2/smart_proxies', :search => 'name="proxy.example.com"').returns(
mock('response', :body => {:results => [{:id => 1, :name => 'proxy.example.com'}]}.to_json, :code => '200')
)
expect(provider.proxy['id']).to eq(1)
expect(provider.proxy['name']).to eq('proxy.example.com')
end
end

describe '#refresh_features!' do
it 'sends PUT request to /refresh' do
provider.expects(:id).returns(1)
provider.expects(:request).with(:put, 'api/v2/smart_proxies/1/refresh').returns(mock(:code => '200'))
provider.refresh_features!
end
end

describe '#url' do
it 'returns ID from proxy hash' do
provider.expects(:proxy).twice.returns({'id' => 1, 'url' => 'https://proxy.example.com:8443'})
expect(provider.url).to eq('https://proxy.example.com:8443')
end

it 'returns nil when proxy is absent' do
provider.expects(:proxy).returns(nil)
expect(provider.url).to be_nil
end
end

describe '#url=' do
it 'sends PUT request' do
provider.expects(:id).returns(1)
provider.expects(:request).with(:put, 'api/v2/smart_proxies/1', {}, includes('"url":"https://new.example.com:8443"')).returns(mock(:code => '200'))
provider.url = 'https://new.example.com:8443'
end
end
end
(4-4/4)