# frozen_string_literal: true require_relative '../../lib/chef/provisioning/vsphere_driver/vsphere_url.rb' describe 'VsphereUrl' do expected_host = '1.1.1.1' expected_port = 1818 expected_path = '/path' let(:url) { URI("vsphere://#{expected_host}:#{expected_port}#{expected_path}") } it 'has the vsphere scheme' do expect(url.scheme).to eq('vsphere') end it 'has the expected host' do expect(url.host).to eq(expected_host) end it 'has the expected port' do expect(url.port).to eq(expected_port) end it 'has the expected path' do expect(url.path).to eq(expected_path) end it 'has the the default ssl setting' do expect(url.use_ssl).to eq(true) end it 'has the the default insecure setting' do expect(url.insecure).to eq(false) end context 'when setting from a hash' do let(:url) do URI::VsphereUrl.from_config(host: '2.2.2.2', port: 2345, path: '/hoooo', use_ssl: false, insecure: true) end it 'asigns the correct url' do expect(url.to_s).to eq('vsphere://2.2.2.2:2345/hoooo?use_ssl=false&insecure=true') end end context 'when ssl is enabled' do it 'retuns an ssl value of true' do url = URI("vsphere://#{expected_host}:#{expected_port}#{expected_path}?use_ssl=true") expect(url.use_ssl).to eq(true) end end context 'when ssl is disabled' do it 'retuns an ssl value of true' do url = URI("vsphere://#{expected_host}:#{expected_port}#{expected_path}?use_ssl=false") expect(url.use_ssl).to eq(false) end end context 'when insecure is enabled' do it 'retuns an insecure value of true' do url = URI("vsphere://#{expected_host}:#{expected_port}#{expected_path}?insecure=true") expect(url.insecure).to eq(true) end end context 'when insecure is disabled' do it 'retuns an insecure value of true' do url = URI("vsphere://#{expected_host}:#{expected_port}#{expected_path}?insecure=false") expect(url.insecure).to eq(false) end end end