File: test_wps.py

package info (click to toggle)
owslib 0.23.0-1%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 11,176 kB
  • sloc: xml: 137,886; python: 20,041; makefile: 167; sh: 11
file content (93 lines) | stat: -rw-r--r-- 3,259 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import pytest


from tests.utils import resource_file
from owslib.wps import WebProcessingService, WPSExecution, Process, is_reference, Input
from owslib.etree import etree


@pytest.fixture
def wps():
    '''Returns a WPS instance'''
    # Initialize WPS client
    wps = WebProcessingService('http://example.org/wps', skip_caps=True)
    xml = open(resource_file('wps_CEDACapabilities.xml'), 'rb').read()
    wps.getcapabilities(xml=xml)
    return wps


def test_wps_getOperationByName(wps):
    wps.getOperationByName("GetCapabilities")
    wps.getOperationByName("DescribeProcess")
    wps.getOperationByName("Execute")
    # Unavailable operations
    with pytest.raises(KeyError):
        wps.getOperationByName("GetStatus")


def test_wps_checkStatus():
    execution = WPSExecution()
    xml = open(resource_file('wps_PMLExecuteResponse5.xml'), 'rb').read()
    execution.checkStatus(response=xml)
    assert execution.isSucceded()
    assert execution.creationTime == '2011-11-08T21:36:55Z'


def test_wps_process_representation(wps):
    p = wps.processes[0]
    assert repr(p) == '<owslib.wps.Process CDMSSubsetVariable>'
    assert str(p) == 'WPS Process: CDMSSubsetVariable, title=Writes a text file and returns an output.'


def test_wps_process_properties(wps):
    p = wps.processes[0]
    assert p.statusSupported is None
    assert p.storeSupported is None


def test_wps_process_with_invalid_identifier():
    p = Process(etree.Element('invalid'))
    assert repr(p) == '<owslib.wps.Process >'
    assert str(p) == 'WPS Process: , title='


def test_wps_literal_data_input_parsing_references():
    xml = open(resource_file('wps_inout_parsing.xml'), 'r').read()
    inputs = etree.fromstring(xml)
    for i, i_elem in enumerate(inputs):
        wps_in = Input(i_elem)
        assert wps_in.identifier == 'input{}'.format(i + 1)
        assert wps_in.dataType == 'string'


def test_wps_response_with_lineage():
    execution = WPSExecution()
    xml = open(resource_file('wps_HummingbirdExecuteResponse1.xml'), 'rb').read()
    execution.checkStatus(response=xml)
    assert execution.isSucceded()
    assert execution.creationTime == '2018-05-08T14:00:54Z'
    # check lineage input with literal data
    inp = execution.dataInputs[0]
    assert inp.identifier == 'test'
    assert inp.title == 'Select the test you want to run.'
    assert inp.abstract == 'CF-1.6=Climate and Forecast Conventions (CF)'
    assert inp.data[0] == 'CF-1.6'
    # check lineage input with reference
    inp = execution.dataInputs[1]
    assert inp.identifier == 'dataset'
    assert inp.title == 'Upload your NetCDF file here'
    assert inp.abstract == 'or enter a URL pointing to a NetCDF file.'
    assert inp.reference.startswith('https://www.esrl.noaa.gov/')
    # check output with reference
    outp = execution.processOutputs[0]
    assert outp.identifier == 'output'
    assert outp.title == 'Test Report'
    assert outp.abstract == 'Compliance checker test report.'
    assert outp.reference.startswith('http://localhost:8090/wpsoutputs')


def test_is_reference():
    assert is_reference('http://testing.org')
    assert is_reference(b'http://testing.org')
    assert not is_reference('mumbo jumbo')
    assert not is_reference(b'mumbo jumbo')