import pytest
from lxml import etree
from twitcher import utils
from .common import WPS_CAPS_EMU_XML, WMS_CAPS_NCWMS2_XML


def test_baseurl():
    assert utils.baseurl('http://localhost:8094/wps') == 'http://localhost:8094/wps'
    assert utils.baseurl('http://localhost:8094/wps?service=wps&request=getcapabilities') == 'http://localhost:8094/wps'
    assert utils.baseurl('https://localhost:8094/wps?service=wps&request=getcapabilities') ==\
        'https://localhost:8094/wps'
    with pytest.raises(ValueError) as e_info:
        utils.baseurl('ftp://localhost:8094/wps')


def test_path_elements():
    assert utils.path_elements('/ows/proxy/lovely_bird') == ['ows', 'proxy', 'lovely_bird']
    assert utils.path_elements('/ows/proxy/lovely_bird/') == ['ows', 'proxy', 'lovely_bird']
    assert utils.path_elements('/ows/proxy/lovely_bird/ ') == ['ows', 'proxy', 'lovely_bird']


def test_lxml_strip_ns():
    import lxml.etree
    wpsxml = """
<wps100:Execute
xmlns:wps100="http://www.opengis.net/wps/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
service="WPS"
version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"/>"""

    doc = lxml.etree.fromstring(wpsxml)
    assert doc.tag == '{http://www.opengis.net/wps/1.0.0}Execute'
    utils.lxml_strip_ns(doc)
    assert doc.tag == 'Execute'


def test_replace_caps_url_wps():
    doc = etree.parse(WPS_CAPS_EMU_XML)
    xml = etree.tostring(doc)
    assert 'http://localhost:8094/wps' in xml
    xml = utils.replace_caps_url(xml, "https://localhost/ows/proxy/emu")
    assert 'http://localhost:8094/wps' not in xml
    assert 'https://localhost/ows/proxy/emu' in xml


def test_replace_caps_url_wms():
    doc = etree.parse(WMS_CAPS_NCWMS2_XML)
    xml = etree.tostring(doc)
    assert 'http://localhost:8080/ncWMS2/wms' in xml
    xml = utils.replace_caps_url(xml, "https://localhost/ows/proxy/wms")
    # assert 'http://localhost:8080/ncWMS2/wms' not in xml
    assert 'https://localhost/ows/proxy/wms' in xml

@@ -111,16 +111,45 @@
 _NCWMS2_
+111_XML, WMS_CAPS_NCWMS2_130_
 XML%0A%0A%0Ade
@@ -1766,16 +1766,20 @@
 _url_wms
+_111
 ():%0A    
@@ -1812,16 +1812,373 @@
 _NCWMS2_
+111_XML)%0A    xml = etree.tostring(doc)%0A    assert 'http://localhost:8080/ncWMS2/wms' in xml%0A    xml = utils.replace_caps_url(xml, %22https://localhost/ows/proxy/wms%22)%0A    # assert 'http://localhost:8080/ncWMS2/wms' not in xml%0A    assert 'https://localhost/ows/proxy/wms' in xml%0A%0A%0Adef test_replace_caps_url_wms_130():%0A    doc = etree.parse(WMS_CAPS_NCWMS2_130_
 XML)%0A   

add wms_130 test and renamed wms_111