101 lines
3.0 KiB
Ruby
101 lines
3.0 KiB
Ruby
require_relative '../../proxy'
|
|
|
|
include CartoDB::WMS
|
|
|
|
describe Proxy do
|
|
before do
|
|
@endpoint = 'http://basemap.nationalmap.gov' +
|
|
'/arcgis/services/USGSImageryTopo/MapServer/WMSServer'
|
|
@query_params = '?service=WMS&request=GetCapabilities'
|
|
@url = @endpoint + @query_params
|
|
@fixture_xml = File.expand_path('../../fixtures/wms.xml', __FILE__)
|
|
@xml = File.read(@fixture_xml)
|
|
end
|
|
|
|
describe '#initialize' do
|
|
it 'takes a URL for the service capabilities' do
|
|
expect {
|
|
Proxy.new
|
|
}.to raise_error ArgumentError
|
|
Proxy.new(@url)
|
|
end
|
|
|
|
it 'accepts an optional preloaded response' do
|
|
proxy = Proxy.new(@url, @xml)
|
|
proxy.response.should eq @xml
|
|
end
|
|
end
|
|
|
|
describe '#serialize' do
|
|
it 'returns a hash representation of the WMS capabilities' do
|
|
proxy = Proxy.new(@url, @xml)
|
|
representation = proxy.serialize
|
|
representation.fetch(:server).nil?.should eq false
|
|
representation.fetch(:formats).empty?.should eq false
|
|
representation.fetch(:layers).empty?.should eq false
|
|
end
|
|
end
|
|
|
|
describe '#run' do
|
|
it 'will not touch the preloaded response if passed at initialization' do
|
|
proxy = Proxy.new(@url, @xml)
|
|
proxy.response.should eq @xml
|
|
proxy.run
|
|
proxy.response.should eq @xml
|
|
end
|
|
end
|
|
|
|
describe '#server' do
|
|
it 'returns the HTTP/HTTPS entry point for the services' do
|
|
proxy = Proxy.new(@url, @xml)
|
|
proxy.run
|
|
proxy.server.should eq @endpoint
|
|
end
|
|
end
|
|
|
|
describe '#layers' do
|
|
it 'returns available layers' do
|
|
nasa_wms = File.read(File.expand_path('../../fixtures/wms_nasa.xml', __FILE__))
|
|
Typhoeus.stub(
|
|
'http://wms.jpl.nasa.gov/wms.cgi?Service=WMS&Version=1.1.1&Request=GetCapabilities',
|
|
{ method: :get} )
|
|
.and_return(
|
|
Typhoeus::Response.new(code: 200, body: nasa_wms)
|
|
)
|
|
|
|
noaa_wms = File.read(File.expand_path('../../fixtures/wms_noaa.xml', __FILE__))
|
|
Typhoeus.stub(
|
|
'http://nowcoast.noaa.gov/wms/com.esri.wms.Esrimap/obs?service=WMS&request=GetCapabilities',
|
|
{ method: :get} )
|
|
.and_return(
|
|
Typhoeus::Response.new(code: 200, body: noaa_wms)
|
|
)
|
|
|
|
proxy = Proxy.new(@url, @xml)
|
|
proxy.run
|
|
proxy.layers.length.should eq 3
|
|
|
|
url = 'http://wms.jpl.nasa.gov/wms.cgi?Service=WMS&Version=1.1.1&Request=GetCapabilities'
|
|
proxy = Proxy.new(url)
|
|
proxy.run
|
|
|
|
proxy.layers.empty?.should eq false
|
|
|
|
url = 'http://nowcoast.noaa.gov/wms/com.esri.wms.Esrimap/obs?service=WMS&request=GetCapabilities'
|
|
proxy = Proxy.new(url)
|
|
proxy.run
|
|
proxy.layers.empty?.should eq false
|
|
end
|
|
end
|
|
|
|
describe '#formats' do
|
|
it 'returns the supported formats' do
|
|
expected_formats = %w{ image/bmp image/jpeg image/tiff image/png image/png8 image/png24 image/png32 image/gif image/svg+xml }
|
|
proxy = Proxy.new(@url, @xml)
|
|
proxy.run
|
|
proxy.formats.sort.should eq expected_formats.sort
|
|
end
|
|
end
|
|
end # Proxy
|
|
|