
Imports

    >>> from owslib.wms import WebMapService
    
Fake a request to a WMS Server using saved doc from 
http://wms.jpl.nasa.gov/wms.cgi.

    >>> xml = open('JPLCapabilities.xml', 'r').read() 
    >>> wms = WebMapService('url', version='1.1.1', xml=xml)
    
Test capabilities
-----------------

    >>> wms.capabilities.service
    'OGC:WMS'

    >>> wms.capabilities.title
    'JPL Global Imagery Service'
    
    >>> wms.capabilities.abstract
    'WMS Server maintained by JPL, worldwide satellite imagery.'
    
    >>> wms.capabilities.link
    'http://OnEarth.jpl.nasa.gov/index.html'
    
    >>> wms.capabilities.keywords
    ['ImageryBaseMapsEarthCover', 'Imagery', 'BaseMaps', 'EarthCover', 'JPL', 'Jet Propulsion Laboratory', 'Landsat', 'WMS', 'SLD', 'Global']

    >>> p = wms.capabilities.provider
    >>> p.name
    'Lucian Plesea'
    >>> p.email
    'lucian.plesea@jpl.nasa.gov'

    
Test available content layers

    >>> [layer.name for layer in wms.capabilities.contents]
    ['global_mosaic', 'global_mosaic_base', 'us_landsat_wgs84', 'srtm_mag', 'daily_terra_721', 'daily_aqua_721', 'daily_terra_ndvi', 'daily_aqua_ndvi', 'daily_terra', 'daily_aqua', 'BMNG', 'modis', 'huemapped_srtm', 'srtmplus', 'worldwind_dem', 'us_ned', 'us_elevation', 'us_colordem']
    
    >>> [layer.title for layer in wms.capabilities.contents]
    ['WMS Global Mosaic, pan sharpened', 'WMS Global Mosaic, not pan sharpened', 'CONUS mosaic of 1990 MRLC dataset', 'SRTM reflectance magnitude, 30m', 'Daily composite of MODIS-TERRA 721 pseudocolor', 'Daily composite of MODIS-AQUA 721 pseudocolor', 'Daily composite of MODIS-TERRA images, NDVI processing', 'Daily composite of MODIS-AQUA images, NDVI processing', 'Daily composite of MODIS-TERRA images', 'Daily composite of MODIS-AQUA images', 'Blue Marble Next Generation, Global MODIS derived image', 'Blue Marble, Global MODIS derived image', 'SRTM derived global elevation, 3 arc-second, hue mapped', 'Global 1km elevation, seamless SRTM land elevation and ocean depth', 'SRTM derived global elevation, 3 arc-second', 'United States elevation, 30m', 'Digital Elevation Map of the United States, DTED dataset, 3 second resolution, grayscale', 'Digital Elevation Map of the United States, DTED dataset, 3 second resolution, hue mapped']
    
Test single item accessor

    >>> wms.capabilities.getContentByName('global_mosaic').title
    'WMS Global Mosaic, pan sharpened'
    
    >>> wms.capabilities.getContentByName('global_mosaic').boundingBox

    >>> wms.capabilities.getContentByName('global_mosaic').boundingBoxWGS84
    (-180.0, -60.0, 180.0, 84.0)
    
    >>> wms.capabilities.getContentByName('global_mosaic').crsOptions
    ['EPSG:4326', 'AUTO:42003']
    
    >>> wms.capabilities.getContentByName('global_mosaic').styles
    {'pseudo_bright': {'title': 'Pseudo-color image (Uses IR and Visual bands, 542 mapping), gamma 1.5'}, 'pseudo': {'title': '(default) Pseudo-color image, pan sharpened (Uses IR and Visual bands, 542 mapping), gamma 1.5'}, 'visual': {'title': 'Real-color image, pan sharpened (Uses the visual bands, 321 mapping), gamma 1.5'}, 'pseudo_low': {'title': 'Pseudo-color image, pan sharpened (Uses IR and Visual bands, 542 mapping)'}, 'visual_low': {'title': 'Real-color image, pan sharpened (Uses the visual bands, 321 mapping)'}, 'visual_bright': {'title': 'Real-color image (Uses the visual bands, 321 mapping), gamma 1.5'}}
    
Expect a KeyError for invalid names

    >>> wms.capabilities.getContentByName('utterly bogus').title
    Traceback (most recent call last):
    ...
    KeyError: 'No content named utterly bogus'

Test operations

    >>> [op.name for op in wms.capabilities.operations]
    ['GetCapabilities', 'GetMap']
    
    >>> wms.capabilities.getOperationByName('GetMap').methods
    {'Get': {'url': 'http://wms.jpl.nasa.gov/wms.cgi?'}}
    
    >>> wms.capabilities.getOperationByName('GetMap').formatOptions
    ['image/jpeg', 'image/png', 'image/geotiff', 'image/tiff']

Test exceptions

    >>> wms.capabilities.exceptions
    ['application/vnd.ogc.se_xml']

Lastly, test the getcapabilities method

    >>> wms = WebMapService('http://wms.jpl.nasa.gov/wms.cgi', version='1.1.1')
    >>> xml = wms.getcapabilities().read()
    >>> xml.find('<WMT_MS_Capabilities version="1.1.1">') > 0
    True

